Module: HandlerRegisterable::Registry
- Defined in:
- lib/handler_registerable/registry.rb
Overview
Registry Concept
Instance Method Summary collapse
-
#default ⇒ Object
Get the default handler.
-
#default=(value) ⇒ Object
Enables setting the default handler to use.
-
#obtain(*args, **kwargs) ⇒ Object?
of the handler classes.
-
#register(item, key) ⇒ Object
Register a new item in the store.
-
#registered_handlers ⇒ Object
Return the registered handlers.
Instance Method Details
#default ⇒ Object
Get the default handler
11 12 13 |
# File 'lib/handler_registerable/registry.rb', line 11 def default @default end |
#default=(value) ⇒ Object
Enables setting the default handler to use.
6 7 8 |
# File 'lib/handler_registerable/registry.rb', line 6 def default=(value) @default = value end |
#obtain(*args, **kwargs) ⇒ Object?
of the handler classes. Used to determine if they can deal with the request or not. when given the condition argument. The instance is initialized with the given condition.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/handler_registerable/registry.rb', line 29 def obtain(*args, **kwargs) registered_handlers = self.registered_handlers # Reverses the order of the handlers, this allows for ones defined in an application rather # than an engine to come first (to allow for overriding a handle) registered_handlers = Hash[registered_handlers.to_a.reverse] unless no_handlers_defined? registered_handlers.each do |identifier, h| return h.new(*args, **kwargs) if h.handles?(*args, **kwargs) end # If no handler is found and there is a default, use that instead if default default.new(*args, **kwargs) else raise HandlerRegisterable::Exceptions::NoHandlerAccepted end end |
#register(item, key) ⇒ Object
Register a new item in the store
16 17 18 |
# File 'lib/handler_registerable/registry.rb', line 16 def register(item, key) registered_handlers[key] = item end |
#registered_handlers ⇒ Object
Return the registered handlers
21 22 23 |
# File 'lib/handler_registerable/registry.rb', line 21 def registered_handlers @registered_handlers ||= {} end |