README.md in ruice-0.1.1 vs README.md in ruice-0.2.0

- old
+ new

@@ -2,10 +2,18 @@ > Where my dependencies at, fam? > > \- *Me, a minor Ruby hater* +Ruice is a DIC container implemented in less than 150 lines of Ruby code. + +It allows for: + +- Automatic injection in instance props +- Configuration properties +- Autowiring by class name + ## Development status I literally wrote this in 12 minutes. Are you mad? ## Installation @@ -24,10 +32,64 @@ $ gem install ruice ## Usage -TODO. Read source if you want. +```ruby + +class DependencyA +end + +class InjectionPoint + def initialize + @dependency_a = Ruice::Dependency.new DependencyA + @property = Ruice::Property 'my.config.property' + @env = Ruice::Property 'env' + end + + def dic_ready + # Method always invoked when @injected props have been replaced + end + + def something + @dependency # Instance of DependencyA + @property # 'FooBar' + @env # 'production' + end +end + +container = Ruice::Container.new( + { + my: { + config: { + property: 'FooBar' + } + } + }, + 'production' +) + +# Register dependency by class +container.with(Logger, proc { + Logger.new('/dev/null') +}) + +# Register dependency by name + +container.with('my_logger', proc { + Logger.new('/dev/null') +}) + +# Automatically created instance +injection_point = container.request InjectionPoint + +# Instance of by class Logger +logger = container.request Logger + +# Instance of by name Logger +logger = container.request 'my_logger' + +``` ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.