class DDP::Server::API

Helper class that users can extend to implement an API that can be passed as the RPC API parameter to the RethinkDB DDP protocol

Public Class Methods

new() click to toggle source
# File lib/ddp/server/api.rb, line 6
def initialize
        setup_rpc
        setup_collections
end

Public Instance Methods

collection_query(name, *params) click to toggle source
# File lib/ddp/server/api.rb, line 16
def collection_query(name, *params)
        raise 'No such collection' unless @collections.include? name
        wrap_query(send(name, *params))
end
invoke_rpc(method, *params) click to toggle source
# File lib/ddp/server/api.rb, line 11
def invoke_rpc(method, *params)
        raise 'No such method' unless @rpc_methods.include? method
        send(method, *params)
end
wrap_query(query) click to toggle source

Implementors must override wrap_query. The argument is a query that is to be executed the result should be a proc that yields data values to its block parameter.

# File lib/ddp/server/api.rb, line 23
def wrap_query(query)
        raise 'implement wrap query'
end

Private Instance Methods

setup_collections() click to toggle source
# File lib/ddp/server/api.rb, line 35
def setup_collections
        collections_module = self.class.const_get :Collections
        @collections = collections_module.instance_methods.map(&:to_s)
        singleton_class.include collections_module
end
setup_rpc() click to toggle source
# File lib/ddp/server/api.rb, line 29
def setup_rpc
        rpc_module = self.class.const_get :RPC
        @rpc_methods = rpc_module.instance_methods.map(&:to_s)
        singleton_class.include rpc_module
end