Class: Archipelago::Resolver

Inherits:
Object
  • Object
show all
Defined in:
lib/archipelago/resolver.rb

Constant Summary collapse

COMPONENT_PATTERN =
/\A[A-Z][A-Za-z0-9_]*\z/
OPERATION_PATTERN =
/\A[a-z][a-z0-9_]*\z/

Instance Method Summary collapse

Constructor Details

#initialize(configuration: Archipelago.configuration, registry: Archipelago.registry) ⇒ Resolver

Returns a new instance of Resolver.



8
9
10
11
# File 'lib/archipelago/resolver.rb', line 8

def initialize(configuration: Archipelago.configuration, registry: Archipelago.registry)
  @configuration = configuration
  @registry = registry
end

Instance Method Details

#resolve(component:, operation:) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/archipelago/resolver.rb', line 13

def resolve(component:, operation:)
  Archipelago.instrument(
    "archipelago.action.resolve",
    component: component,
    operation: operation
  ) do
    validate!(component: component, operation: operation)

    override = @registry.resolve("#{component}##{operation}")
    return validate_handler!(override) if override

    constant_name = convention_constant_name(component: component, operation: operation)
    klass = constant_name.safe_constantize
    raise Archipelago::ResolutionError, "Unknown island action" unless klass

    validate_handler!(klass)
  end
end