Class: IOC::Container

Inherits:
Object
  • Object
show all
Defined in:
lib/ioc/container.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeContainer

Returns a new instance of Container.



10
11
12
13
# File 'lib/ioc/container.rb', line 10

def initialize
  @resolvers = {}
  @cache = {}
end

Class Method Details

.install(*installers) ⇒ Object



3
4
5
6
7
8
# File 'lib/ioc/container.rb', line 3

def self.install(*installers)
  [*installers].inject(new) do |c, installer|
    installer.install(c)
    c
  end
end

Instance Method Details

#[](key) ⇒ Object



29
30
31
# File 'lib/ioc/container.rb', line 29

def [](key)
  resolve(key)
end

#register(name, object, options = {}) ⇒ Object



15
16
17
18
# File 'lib/ioc/container.rb', line 15

def register(name, object, options={})
  raise(DuplicateRegistration, "Service '#{name}' has already been registered") if @resolvers.key?(name)
  @resolvers[name] = ResolverFactory.new_instance(object, self, options)
end

#resolve(name) ⇒ Object

Raises:



20
21
22
23
# File 'lib/ioc/container.rb', line 20

def resolve(name)
  raise(UnknownService, "Service '#{name}' has not been registered") unless @resolvers.key?(name)
  @cache[name] ||= @resolvers[name].resolve
end

#resolve_anonymous(klass) ⇒ Object



25
26
27
# File 'lib/ioc/container.rb', line 25

def resolve_anonymous(klass)
  ClassResolver.new(klass, self).resolve
end