class Nurse::DependencyContainer
The dependency container class
Attributes
factories[R]
instances[R]
Public Class Methods
new()
click to toggle source
# File lib/nurse/dependency_container.rb, line 7 def initialize @factories = {} @shared_factories = {} @instances = {} end
Public Instance Methods
add_factory(factory)
click to toggle source
# File lib/nurse/dependency_container.rb, line 42 def add_factory(factory) factory.attach_to(self) end
defined?(dependency)
click to toggle source
# File lib/nurse/dependency_container.rb, line 25 def defined?(dependency) key = to_key(dependency) shared_factories.key?(key) || factories.key?(key) end
get(dependency) { || ... }
click to toggle source
# File lib/nurse/dependency_container.rb, line 30 def get(dependency, &_block) key = to_key(dependency) if self.defined?(key) return from_shared_factories(key) || from_factories(key) end return yield if block_given? fail UndefinedDependency, "'#{dependency}' was not defined" end
set(dependency, &block)
click to toggle source
# File lib/nurse/dependency_container.rb, line 19 def set(dependency, &block) ensure_undefined(dependency) factories[to_key(dependency)] = block self end
Protected Instance Methods
ensure_undefined(dependency)
click to toggle source
# File lib/nurse/dependency_container.rb, line 61 def ensure_undefined(dependency) return unless self.defined?(dependency) fail DependencyAlreadyDefined, "Dependency '#{dependency}' was already defined" end
from_factories(key)
click to toggle source
# File lib/nurse/dependency_container.rb, line 57 def from_factories(key) factories[key].call(self) if factories.key?(key) end
to_key(object)
click to toggle source
# File lib/nurse/dependency_container.rb, line 67 def to_key(object) object.to_s end