A very lightweight dependency injection container for Ruby.
It born from a real need in one of my current projects (at Locaweb). I’m only scratching our itch. If you have the same itch, join us!
Hey Jim Weirich, thanks for initial code and inspiration. You are the man!
onestepback.org/index.cgi/Tech/Ruby/DependencyInjectionInRuby.rdoc
gem install syringe --pre -s http://gemcutter.org
# on application bootstrap container = Syringe::Container.new container.register(:service_uri) { |container| 'http://services.syringe.org/api' } container.register(:service_consumer) { |container| ServiceConsumer.new(container[:service_uri]) } ... # anywhere in the code puts container[:service_uri] # http://services.syringe.org/api puts container.service_uri # http://services.syringe.org/api
# on application bootstrap default_container = Syringe::Container.default default_container.register(:service_uri) { |container| 'http://services.syringe.org/api' } ... # in some class class ServiceConsumer inject :service_uri # it will create a new method and instance variable with that name end ... # anywhere in the code service_consumer = ServiceConsumer.new puts service_consumer.service_uri # 'http://services.syringe.org/api'
github.com/leandrosilva/syringe/tree/master/spec
Copyright © 2010 Leandro Silva (CodeZone) <leandrodoze@gmail.com>. See LICENSE for details.