Module ActionWebService::Container::Delegated::ClassMethods
In: actionwebservice/lib/action_web_service/container/delegated_container.rb

Methods

Public Instance methods

Whether this service contains a service with the given name

[Source]

# File actionwebservice/lib/action_web_service/container/delegated_container.rb, line 54
        def has_web_service?(name)
          web_services.has_key?(name.to_sym)
        end

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

[Source]

# File actionwebservice/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

Private Instance methods

[Source]

# File actionwebservice/lib/action_web_service/container/delegated_container.rb, line 67
          def call_web_service_definition_callbacks(container_class, web_service_name, service_info)
            (read_inheritable_attribute("web_service_definition_callbacks") || []).each do |block|
              block.call(container_class, web_service_name, service_info)
            end
          end

[Validate]