Module: HandlerRegisterable::Registry

Defined in:
lib/handler_registerable/registry.rb

Overview

Registry Concept

Instance Method Summary collapse

Instance Method Details

#defaultObject

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.

Parameters:

  • conditions (Object)

    An argument to be passed to the handles? and initialize methods

Returns:

  • (Object, nil)

    An instance of the first handler class that returns true to handles?



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_handlersObject

Return the registered handlers



21
22
23
# File 'lib/handler_registerable/registry.rb', line 21

def registered_handlers
  @registered_handlers ||= {}
end