class Dry::Component::Injector
Attributes
container[R]
@api private
injector[R]
@api private
options[R]
@api private
Public Class Methods
new(container, options: {}, strategy: :default)
click to toggle source
@api private
# File lib/dry/component/injector.rb, line 16 def initialize(container, options: {}, strategy: :default) @container = container @options = options @injector = ::Dry::AutoInject(container, options).__send__(strategy) end
Public Instance Methods
[](*deps)
click to toggle source
@api public
# File lib/dry/component/injector.rb, line 23 def [](*deps) load_components(*deps) injector[*deps] end
method_missing(name, *args, &block)
click to toggle source
# File lib/dry/component/injector.rb, line 28 def method_missing(name, *args, &block) ::Dry::Component::Injector.new(container, options: options, strategy: name) end
respond_to?(name, include_private = false)
click to toggle source
# File lib/dry/component/injector.rb, line 32 def respond_to?(name, include_private = false) injector.respond_to?(name, include_private) end
Private Instance Methods
load_components(*components)
click to toggle source
# File lib/dry/component/injector.rb, line 38 def load_components(*components) components = components.dup aliases = components.last.is_a?(::Hash) ? components.pop : {} (components + aliases.values).each do |key| container.load_component(key) unless container.key?(key) end end