Sha256: 3eb060593ff4d3ec975b895d33ce59e6975c080fd19a82c9bd18a83d66b2224e
Contents?: true
Size: 807 Bytes
Versions: 5
Compression:
Stored size: 807 Bytes
Contents
module PipeRpc class Client < BasicObject def initialize(hub, args = {}) @hub = hub @server = args.fetch(:server, :default).to_sym end def method_missing(method, *args) backtrace = ::Kernel.respond_to?(:caller) ? ::Kernel.caller(1) : [] @hub.request(server: @server, method: method, arguments: args) do |result| if result.is_a? ::StandardError result.set_backtrace(result.backtrace.to_a + backtrace.to_a) if result.respond_to? :set_backtrace ::Kernel.raise result else result end end # Method won't return until we got a result because @hub.request starts a loop and blocks! end def to_s "<Client:#{@server.to_s}>" end def is_a?(object) object == Client end end end
Version data entries
5 entries across 5 versions & 1 rubygems