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