Method: Codeine::Injectable#codeine_inject

Defined in:
lib/codeine/injectable.rb

#codeine_inject(service, options = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/codeine/injectable.rb', line 9

def codeine_inject(service, options = {})
  args = options.delete(:args){[]}
  method_name = options.delete(:method_name) || service
  define_method(method_name.to_sym) do |*args|
    cache = instance_variable_get("@codeine_#{service}")
    unless cache
      cache = self.class.nearest_codeine_container.get(service.to_sym, *args)
      instance_variable_set("@codeine_#{service}", cache)
    end
    cache
  end
end