Class: Dependor::AutoInjector

Inherits:
Object
  • Object
show all
Defined in:
lib/dependor/auto_injector.rb

Instance Method Summary collapse

Constructor Details

#initialize(injector, search_modules) ⇒ AutoInjector

Returns a new instance of AutoInjector.



4
5
6
7
8
# File 'lib/dependor/auto_injector.rb', line 4

def initialize(injector, search_modules)
  @injector = injector
  @instantiator = Instantiator.new(self)
  @class_name_resolver = ClassNameResolver.new(search_modules)
end

Instance Method Details

#class_exists?(name) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/dependor/auto_injector.rb', line 28

def class_exists?(name)
  !!@class_name_resolver.for_name(name)
end

#get(name) ⇒ Object



10
11
12
13
14
15
16
# 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) ⇒ Object



18
19
20
21
22
23
24
25
26
# 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