Class: Dependor::AutoInjector
Instance Method Summary collapse
- #class_exists?(name) ⇒ Boolean
- #get(name) ⇒ Object
- #get_by_class_name(name) ⇒ Object
-
#initialize(injector, search_modules) ⇒ AutoInjector
constructor
A new instance of AutoInjector.
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
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 |