class ClusteredRpc::Proxy
Public Class Methods
new(target, options)
click to toggle source
# File lib/clustered_rpc/proxy.rb, line 3 def initialize(target, options) @target = target @options = options end
Public Instance Methods
method_missing(method, *args, **kwargs)
click to toggle source
# File lib/clustered_rpc/proxy.rb, line 8 def method_missing(method, *args, **kwargs) wait_seconds = (@options[:wait_seconds] || ENV['CLUSTERED_RPC_WAIT_SECONDS'] || 1.0).to_i request_id = ::ClusteredRpc.publish({'klass' => @target.name, 'method' => method, 'args' => args, 'kwargs' => kwargs}.merge(@options)) {request_id: request_id, success: true, results: ::ClusteredRpc.get_result(request_id, wait_seconds)} rescue => e ClusteredRpc.logger.error "ClusteredRpc::Proxy encountered error: #{e.message}" {request_id: "Error", success: false, results: e.message} end