Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Simple Dependency Injection framework for Ruby

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .rspec
Octocat-spinner-32 Gemfile
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 dependo.gemspec
README.md

Dependo

Dependo is a very simple Dependency Injection framework for Ruby. Some say you don't need dependency injection when you're using Ruby. Maybe they're right, but I've come across some places where I need it.

For example, in my apps using Sinatra and Sequel, I need to be able to log, using a single Logger instance, from both my Sinatra app and from within my Sequel models. I'm not about to pass that Logger around as a parameter anywhere, and I don't want to instantiate it in every class that needs to log.

So, injecting the Logger is the easiest, best solution.

Requirements/Installation

Dependo doesn't depend on anything. In test, it relies on rspec and either rcov (Ruby 1.8) or simplecov (Ruby 1.9).

Install the gem: gem install dependo-(version).gem

Running the tests:

rake spec

Building the gem:

rake gem:build

Install gem with Rake:

rake gem:install

Usage

Register

Dependo::Registry[:log] = Logger.new(STDOUT)

Include

This makes it easy to use your injected dependencies as instance methods:

class MyThing
    include Dependo::Mixin
end

thing = MyThing.new
thing.log.info "I'm logging!"

Extend

This makes it easy to use your injected dependencies as class methods:

class MyThing
    extend Dependo::Mixin
end

MyThing.log.info "I'm logging!"

License

See the LICENSE file. Licensed under the Apache 2.0 License

Something went wrong with that request. Please try again.