Sha256: 1f0f1a362401f89c2665aa43120d5f1fb8d71141f9d9c07c86577d3741d7c17e
Contents?: true
Size: 1.98 KB
Versions: 1
Compression:
Stored size: 1.98 KB
Contents
# Spank A simple light weight inversion of control container written in ruby. ## Installation Add this line to your application's Gemfile: gem 'spank' And then execute: $ bundle Or install it yourself as: $ gem install spank ## Usage Register a single component and resolve it. ```ruby container = Container.new container.register(:item) do "ITEM" end container.register(:pants) { jeans } container.register(:pants) { dress_pants } item = container.resolve(:item) ``` Register multiple items, and resolve them. ```ruby container = Container.new container.register(:pants) { jeans } container.register(:pants) { dress_pants } pants = container.resolve_all(:item) ``` Register a singleton. ```ruby container = Container.new container.register(:singleton) { fake }.as_singleton single_instance = container.resolve(:singleton) same_instance = container.resolve(:singleton) ``` Automatic dependency resolution. ```ruby class Child def initialize(mom,dad) end end container = Container.new container.register(:mom) { mom } container.register(:dad) { dad } child = sut.build(Child) ``` Register selective interceptors. ```ruby class Interceptor def intercept(invocation) invocation.proceed end end class Command def run(input) end end container = Container.new container.register(:command) { Command.new }.intercept(:run).with(Interceptor.new) proxy = container.resolve(:command) proxy.run("hi") ``` [Static gateway](http://codebetter.com/jpboodhoo/2007/10/15/the-static-gateway-pattern/) to connect to the container. ```ruby container = Container.new Spank::IOC.bind_to(container) Spank::IOC.resolve(:item) ``` Enjoy! ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
spank-0.0.2 | README.md |