module LunaPark::Extensions::Injector::ClassMethods
Public Instance Methods
dependencies()
click to toggle source
List class defined dependencies
@example get dependency
class Foo include LunaPark::Extensions::Injector dependency(:example) { Bar.new } end Foo.dependencies # => {:example=>#<Proc:0x0000560a4fb48fc0@t.rb:77>}
# File lib/luna_park/extensions/injector.rb, line 147 def dependencies @dependencies ||= {} end
dependency(name, &block)
click to toggle source
Set dependency
@example Set dependency
class Foo include LunaPark::Extensions::Injector dependency(:example) { Bar.new } end
# File lib/luna_park/extensions/injector.rb, line 126 def dependency(name, &block) raise ArgumentError, 'no block given' unless block_given? dependencies[name] = block define_method(name) do dependencies.call_with_cache(name) end end
inherited(inheritor)
click to toggle source
# File lib/luna_park/extensions/injector.rb, line 111 def inherited(inheritor) dependencies.each_pair do |key, block| inheritor.dependency(key, &block) end end