dependor-sinatra
This gem provides integration between Dependor and Sinatra.
Installation
Add this line to your application's Gemfile:
gem 'dependor-sinatra'
And then execute:
$ bundle
Or install it yourself as:
$ gem install dependor-sinatra
Usage
Require dependor-sinatra:
require 'dependor-sinatra'
and (optionally), the shortcut notation for defining constructors:
require 'dependor/shorty'
This teaches Sinatra to inject dependencies into your actions:
class Greeter
takes :params
def greet
"Hello, #{params[:name]}!"
end
end
get "/hello/:name" do |greeter|
greeter.greet
end
You can specify your own injector:
# this is exacly how the default injector class (Dependor::Sinatra::DefaultInjector)
# looks like
class MyInjector
include Dependor::AutoInject
include Dependor::Sinatra::Objects
def initialize(objects)
sinatra_objects(objects)
end
# define anything you want here
def user_db
User
end
end
injector{ |objects| MyInjector.new(objects) }
get "/" do |user_db|
@users = user_db.all
end
You can dependency injection in the following Sinatra elements:
- routes (
get
,post
,put
, etc.) - filters (
before
,after
) - conditions (
condition
)
By default, you can inject the following objects from Sinatra:
- params
- session
- request
- response
- env
You can read more about Dependor here.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
License
MIT
Author
Adam Pohorecki (adam [at] pohorecki [dot] pl)