Module: ActionWebService::Container::Delegated::ClassMethods
- Defined in:
- lib/action_web_service/container/delegated_container.rb
Instance Method Summary collapse
-
#add_web_service_definition_callback(&block) ⇒ Object
:nodoc:.
-
#has_web_service?(name) ⇒ Boolean
Whether this service contains a service with the given
name
. -
#web_service(name, object = nil, &block) ⇒ Object
Declares a web service that will provide access to the API of the given
object
. -
#web_services ⇒ Object
:nodoc:.
Instance Method Details
#add_web_service_definition_callback(&block) ⇒ Object
:nodoc:
62 63 64 |
# File 'lib/action_web_service/container/delegated_container.rb', line 62 def add_web_service_definition_callback(&block) # :nodoc: write_inheritable_array("web_service_definition_callbacks", [block]) end |
#has_web_service?(name) ⇒ Boolean
Whether this service contains a service with the given name
54 55 56 |
# File 'lib/action_web_service/container/delegated_container.rb', line 54 def has_web_service?(name) web_services.has_key?(name.to_sym) end |
#web_service(name, object = nil, &block) ⇒ Object
Declares a web service that will provide access to the API of the given object
. object
must be an ActionWebService::Base derivative.
Web service object creation can either be immediate, where the object instance is given at class definition time, or deferred, where object instantiation is delayed until request time.
Immediate web service object example
class ApiController < ApplicationController
web_service_dispatching_mode :delegated
web_service :person, PersonService.new
end
For deferred instantiation, a block should be given instead of an object instance. This block will be executed in controller instance context, so it can rely on controller instance variables being present.
Deferred web service object example
class ApiController < ApplicationController
web_service_dispatching_mode :delegated
web_service(:person) { PersonService.new(request.env) }
end
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/action_web_service/container/delegated_container.rb', line 39 def web_service(name, object=nil, &block) if (object && block_given?) || (object.nil? && block.nil?) raise(ContainerError, "either service, or a block must be given") end name = name.to_sym if block_given? info = { name => { :block => block } } else info = { name => { :object => object } } end write_inheritable_hash("web_services", info) call_web_service_definition_callbacks(self, name, info) end |
#web_services ⇒ Object
:nodoc:
58 59 60 |
# File 'lib/action_web_service/container/delegated_container.rb', line 58 def web_services # :nodoc: read_inheritable_attribute("web_services") || {} end |