¶ ↑
syringeA 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!
¶ ↑
Special ThanksHey Jim Weirich, thanks for initial code and inspiration. You are the man!
onestepback.org/index.cgi/Tech/Ruby/DependencyInjectionInRuby.rdoc
¶ ↑
Installgem install syringe --pre -s http://gemcutter.org
¶ ↑
Examples¶ ↑
First example with taste of service locator pattern# 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
¶ ↑
Second example with the best taste of dependency injection# 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'
¶ ↑
See more ongithub.com/leandrosilva/syringe/tree/master/spec
¶ ↑
CopyrightCopyright © 2010 Leandro Silva (CodeZone) <leandrodoze@gmail.com>. See LICENSE for details.