class IoC::Container
Attributes
depedencies[R]
mutex[R]
Public Class Methods
init() { |instance| ... }
click to toggle source
# File lib/ioc/container.rb, line 15 def self.init yield(instance) end
new()
click to toggle source
# File lib/ioc/container.rb, line 10 def initialize @depedencies = Hash.new @mutex = Mutex.new end
Public Instance Methods
register(name, value = nil, &block)
click to toggle source
# File lib/ioc/container.rb, line 19 def register(name, value = nil, &block) raise ArgumentError, "WTF dude?" unless name && (value || block) synchronized do dependency = if block_given? Dependency.new(block) else Dependency.new(value, singleton: true) end depedencies[name] = dependency end end
retrieve(name)
click to toggle source
# File lib/ioc/container.rb, line 33 def retrieve(name) synchronized do dependency = depedencies.fetch(name) dependency.call end rescue KeyError raise DependencyNotFound, "Dependency not found" end
Private Instance Methods
synchronized(&block)
click to toggle source
# File lib/ioc/container.rb, line 46 def synchronized(&block) mutex.synchronize(&block) end