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