Module: ActionWebService::Container::Direct::ClassMethods
- Defined in:
- lib/action_web_service/container/direct_container.rb
Instance Method Summary collapse
-
#add_web_service_api_callback(&block) ⇒ Object
:nodoc:.
-
#web_service_api(definition = nil) ⇒ Object
Attaches ActionWebService API
definition
to the calling class.
Instance Method Details
#add_web_service_api_callback(&block) ⇒ Object
:nodoc:
59 60 61 |
# File 'lib/action_web_service/container/direct_container.rb', line 59 def add_web_service_api_callback(&block) # :nodoc: self.web_service_api_callbacks = self.web_service_api_callbacks + [block] end |
#web_service_api(definition = nil) ⇒ Object
Attaches ActionWebService API definition
to the calling class.
Action Controllers can have a default associated API, removing the need to call this method if you follow the Action Web Service naming conventions.
A controller with a class name of GoogleSearchController will implicitly load app/apis/google_search_api.rb
, and expect the API definition class to be named GoogleSearchAPI
or GoogleSearchApi
.
Service class example
class MyService < ActionWebService::Base
web_service_api MyAPI
end
class MyAPI < ActionWebService::API::Base
...
end
Controller class example
class MyController < ActionController::Base
web_service_api MyAPI
end
class MyAPI < ActionWebService::API::Base
...
end
44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/action_web_service/container/direct_container.rb', line 44 def web_service_api(definition=nil) if definition.nil? self.web_service_api_attr else if definition.is_a?(Symbol) raise(ContainerError, "symbols can only be used for #web_service_api inside of a controller") end unless definition.respond_to?(:ancestors) && definition.ancestors.include?(ActionWebService::API::Base) raise(ContainerError, "#{definition.to_s} is not a valid API definition") end self.web_service_api_attr = definition call_web_service_api_callbacks(self, definition) end end |