Class: Torikago::Registry
- Inherits:
-
Object
- Object
- Torikago::Registry
- Defined in:
- lib/torikago/registry.rb,
sig/torikago.rbs
Overview
Lazily builds one EngineContainer per registered module and reuses it for subsequent Gateway calls.
Instance Method Summary collapse
- #build_container(definition) ⇒ EngineContainer
-
#initialize(configuration:, &container_factory) ⇒ Registry
constructor
A new instance of Registry.
- #resolve(name) ⇒ EngineContainer
Constructor Details
#initialize(configuration:, &container_factory) ⇒ Registry
Returns a new instance of Registry.
5 6 7 8 9 |
# File 'lib/torikago/registry.rb', line 5 def initialize(configuration:, &container_factory) @configuration = configuration @containers = Hash.new @container_factory = container_factory || method(:build_container) end |
Instance Method Details
#build_container(definition) ⇒ EngineContainer
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/torikago/registry.rb', line 24 def build_container(definition) EngineContainer.new( name: definition.name, module_root: definition.root, entrypoint: definition.entrypoint, rails_engine: definition.rails_engine, setup: definition.setup, gemfile: definition.gemfile, registered_roots: @configuration.each_definition.map(&:root) ) end |
#resolve(name) ⇒ EngineContainer
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/torikago/registry.rb', line 11 def resolve(name) normalized_name = name.to_sym @containers.fetch(normalized_name) do definition = @configuration.fetch(name) container = @container_factory.call(definition) @containers[definition.name] = container end end |