class Dependor::AutoInjector

Public Class Methods

new(injector, dependency_names, search_modules) click to toggle source
# File lib/dependor/auto_injector.rb, line 4
def initialize(injector, dependency_names, search_modules)
  @injector = injector
  @instantiator = Instantiator.new(self, dependency_names)
  @class_name_resolver = ClassNameResolver.new(search_modules)
end

Public Instance Methods

class_exists?(name) click to toggle source
# File lib/dependor/auto_injector.rb, line 28
def class_exists?(name)
  !!@class_name_resolver.for_name(name)
end
get(name) click to toggle source
# File lib/dependor/auto_injector.rb, line 10
def get(name)
  return @injector.send(name)
rescue ArgumentError
  return @injector.method(name).to_proc
rescue NameError
  get_by_class_name(name)
end
get_by_class_name(name) click to toggle source
# File lib/dependor/auto_injector.rb, line 18
def get_by_class_name(name)
  ensure_class_exists!(name)
  klass = @class_name_resolver.for_name(name)
  instantiator = @instantiator
  @injector.define_singleton_method(name) do
    instantiator.instantiate(klass)
  end
  @injector.send(name)
end

Private Instance Methods

ensure_class_exists!(name) click to toggle source
# File lib/dependor/auto_injector.rb, line 34
def ensure_class_exists!(name)
  unless class_exists?(name)
    raise UnknownObject.new("Injector does not know how to create object: #{name}")
  end
end