Class: IOC::Container
- Inherits:
-
Object
- Object
- IOC::Container
- Defined in:
- lib/ioc/container.rb
Class Method Summary collapse
Instance Method Summary collapse
- #[](key) ⇒ Object
-
#initialize ⇒ Container
constructor
A new instance of Container.
- #register(name, object, options = {}) ⇒ Object
- #resolve(name) ⇒ Object
- #resolve_anonymous(klass) ⇒ Object
Constructor Details
#initialize ⇒ Container
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, ={}) raise(DuplicateRegistration, "Service '#{name}' has already been registered") if @resolvers.key?(name) @resolvers[name] = ResolverFactory.new_instance(object, self, ) end |
#resolve(name) ⇒ Object
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 |