Module: ActiveRemote::RPC::ClassMethods

Defined in:
lib/active_remote/rpc.rb

Instance Method Summary collapse

Instance Method Details

#build_from_rpc(values) ⇒ Object

Builds an attribute hash that be assigned directly to an object from an rpc response



15
16
17
18
19
20
21
22
# File 'lib/active_remote/rpc.rb', line 15

def build_from_rpc(values)
  values = values.stringify_keys

  attribute_names.inject(_default_attributes.deep_dup) do |attributes, name|
    attributes.write_from_database(name, values[name])
    attributes
  end
end

#remote_call(rpc_method, request_args) ⇒ Object

Execute an RPC call to the remote service and return the raw response.



26
27
28
# File 'lib/active_remote/rpc.rb', line 26

def remote_call(rpc_method, request_args)
  rpc.execute(rpc_method, request_args)
end

#rpcObject



30
31
32
# File 'lib/active_remote/rpc.rb', line 30

def rpc
  rpc_adapter.new(service_class, endpoints)
end

#rpc_adapterObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/active_remote/rpc.rb', line 34

def rpc_adapter
  # TODO: Make this pluggable
  #
  # raise(AdapterNotSpecified, "configuration does not specify adapter") unless adapter.present?
  #
  # path_to_adapter = "active_remote/rpc_adapters/#{adapter}_adapter"
  #
  # begin
  #   require path_to_adapter
  # rescue Gem::LoadError => e
  #   raise Gem::LoadError, "Specified '#{adapter]}' for RPC adapter, but the gem is not loaded. Add `gem '#{e.name}'` to your Gemfile (and ensure its version is at the minimum required by ActiveRemote)."
  # rescue LoadError => e
  #   raise LoadError, "Could not load '#{path_to_adapter}'. Make sure that the adapter is valid. If you use an adapter other than 'protobuf' add the necessary adapter gem to the Gemfile.", e.backtrace
  # end
  #
  # path_to_adapter.classify.constantize

  ::ActiveRemote::RPCAdapters::ProtobufAdapter
end