Module | ActionWebService::Container::Delegated::ClassMethods |
In: |
vendor/rails/actionwebservice/lib/action_web_service/container/delegated_container.rb
|
Whether this service contains a service with the given name
# File vendor/rails/actionwebservice/lib/action_web_service/container/delegated_container.rb, line 55 55: def has_web_service?(name) 56: web_services.has_key?(name.to_sym) 57: end
Declares a web service that will provides 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.
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.
class ApiController < ApplicationController web_service_dispatching_mode :delegated web_service(:person) { PersonService.new(request.env) } end
# File vendor/rails/actionwebservice/lib/action_web_service/container/delegated_container.rb, line 40 40: def web_service(name, object=nil, &block) 41: if (object && block_given?) || (object.nil? && block.nil?) 42: raise(ContainerError, "either service, or a block must be given") 43: end 44: name = name.to_sym 45: if block_given? 46: info = { name => { :block => block } } 47: else 48: info = { name => { :object => object } } 49: end 50: write_inheritable_hash("web_services", info) 51: call_web_service_definition_callbacks(self, name, info) 52: end