class Dry::System::Lifecycle
Lifecycle
booting DSL
Lifecycle
objects are used in the boot files where you can register custom init/start/stop triggers
@see [Container.finalize]
@api private
Attributes
container[R]
opts[R]
statuses[R]
triggers[R]
Public Class Methods
cache()
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 34 def self.cache @cache ||= ::Concurrent::Map.new end
new(container, opts = {}, &block)
click to toggle source
@api private
Calls superclass method
# File lib/dry/system/lifecycle.rb, line 27 def self.new(container, opts = {}, &block) cache.fetch_or_store([container, opts, block].hash) do super end end
new(container, opts, &block)
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 39 def initialize(container, opts, &block) @container = container @settings = nil @statuses = [] @triggers = {} @opts = opts instance_exec(target, &block) end
Public Instance Methods
call(*triggers)
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 49 def call(*triggers) triggers.each do |trigger| unless statuses.include?(trigger) __send__(trigger) statuses << trigger end end end
component()
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 101 def component opts[:component] end
config()
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 69 def config component.config end
configure(&block)
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 64 def configure(&block) component.configure(&block) end
init(&block)
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 74 def init(&block) trigger!(:init, &block) end
register(*args, &block)
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 96 def register(*args, &block) container.register(*args, &block) end
settings(&block)
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 59 def settings(&block) component.settings(&block) end
start(&block)
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 79 def start(&block) trigger!(:start, &block) end
stop(&block)
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 84 def stop(&block) trigger!(:stop, &block) end
target()
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 106 def target component.container end
use(*names)
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 89 def use(*names) names.each do |name| target.start(name) end end
Private Instance Methods
method_missing(meth, *args, &block)
click to toggle source
@api private
Calls superclass method
# File lib/dry/system/lifecycle.rb, line 122 def method_missing(meth, *args, &block) if target.registered?(meth) target[meth] elsif container.key?(meth) container[meth] elsif ::Kernel.respond_to?(meth) ::Kernel.public_send(meth, *args, &block) else super end end
trigger!(name, &block)
click to toggle source
@api private
# File lib/dry/system/lifecycle.rb, line 113 def trigger!(name, &block) if triggers.key?(name) triggers[name].(target) elsif block triggers[name] = block end end