class Pinball::Container

Attributes

items[R]

Public Class Methods

clear() click to toggle source
# File lib/pinball/container.rb, line 19
def clear
  instance.items.clear
end
configure(&block) click to toggle source
# File lib/pinball/container.rb, line 11
def configure(&block)
  instance.instance_exec(&block)
end
define(key, value = nil, &block) click to toggle source
# File lib/pinball/container.rb, line 23
def define(key, value = nil, &block)
  instance.define(key, value, &block)
end
define_singleton(key, klass) click to toggle source
# File lib/pinball/container.rb, line 27
def define_singleton(key, klass)
  instance.define_singleton(key, klass)
end
lookup(key) click to toggle source
# File lib/pinball/container.rb, line 15
def lookup(key)
  instance.items[key]
end
new() click to toggle source
# File lib/pinball/container.rb, line 36
def initialize
  @items = {}
end
undefine(key) click to toggle source
# File lib/pinball/container.rb, line 31
def undefine(key)
  instance.undefine(key)
end

Public Instance Methods

define(key, value = nil, &block) click to toggle source
# File lib/pinball/container.rb, line 40
def define(key, value = nil, &block)
  @items[key] = ContainerItem.new(value || block)
end
define_singleton(key, klass) click to toggle source
# File lib/pinball/container.rb, line 44
def define_singleton(key, klass)
  if klass.instance_method(:initialize).arity <= 0
    @items[key] = ContainerItem.new(klass.new)
  else
    raise Pinball::WrongArity.new('Singleton dependency initializer should not have mandatory params')
  end
end
inject(target) click to toggle source
# File lib/pinball/container.rb, line 56
def inject(target)
  target.class.dependencies.each do |dep|
    unless target.respond_to?(dep)
      target.define_singleton_method dep do
        begin
          Container.instance.items.merge(overridden_dependencies)[dep].fetch(self)
        rescue NoMethodError
          raise Pinball::UnknownDependency.new("Dependency #{dep} is unknown, check your pinball config")
        end
      end
    end
  end

end
undefine(key) click to toggle source
# File lib/pinball/container.rb, line 52
def undefine(key)
  @items.delete(key)
end