Dependency Injection for Sinatra
Sinatra::DependencyInjection
adds a helper method, called container
, to access to your ruby
dependency injection container
Installation
Just add the gem to your Gemfile
gem 'dependency_injection-sinatra'
Or simply install it using rubygems:
gem install dependency_injection-sinatra
Usage
Classic Application
In a classic application simply require the helper, and start using it:
require 'sinatra'
require 'sinatra/dependency_injection'
get '/' do
json container.get('awesome_service').find_trending
end
Modular Application
In a modular application you need to require the helper, and then tell the
application you will use it:
require 'sinatra/base'
require 'sinatra/dependency_injection'
class MyApp < Sinatra::Base
register Sinatra::DependencyInjection
get '/' do
json container.get('awesome_service').find_trending
end
end
Configuration path
By default it will try to load services.yml
configuration file, but if
your configuration file is stored in another place, you can easily change it:
require 'sinatra/base'
require 'sinatra/dependency_injection'
class MyApp < Sinatra::Base
register Sinatra::DependencyInjection
dependency_injection_path 'config/services.yml'
end