class Elementary::Executor
Attributes
service[R]
transport[R]
Public Class Methods
new(service, transport, future_opts={})
click to toggle source
# File lib/elementary/executor.rb, line 6 def initialize(service, transport, future_opts={}) @service = service @transport = transport @future_opts = future_opts end
Public Instance Methods
method_missing(method_name, *params)
click to toggle source
# File lib/elementary/executor.rb, line 12 def method_missing(method_name, *params) rpc_method = service.rpcs[method_name.to_sym] # XXX: explode if rpc_method is nil future = Elementary::Future.new(@future_opts) do # This is effectively a Rack middleware stack. yay. # # Easiest to think of it like this: # Statsd.new(HTTP.new(nil)) stack = Elementary.middleware.inject(transport) do |accumulator, middleware| klass = middleware.first options = middleware.last klass.new(accumulator, options) end stack.call(service, rpc_method, *params) end return future.execute end