dry-auto_inject

A simple extensions which allows you to automatically inject dependencies to your
object constructors from a configured container.

It does 3 things:

Defines a constructor which accepts dependencies

Defines attribute readers for dependencies

Injects dependencies automatically to the constructor with overridden .new

Installation

Add this line to your application's Gemfile:

gem'dry-auto_inject'

And then execute:

$ bundle

Or install it yourself as:

$ gem install dry-auto_inject

Usage

You can use AutoInject with any container that responds to []. In this example
we're going to use dry-container:

# set up your container
my_container=Dry::Container.newmy_container.register(:data_store,->{DataStore.new})my_container.register(:user_repository,->{container[:data_store][:users]})my_container.register(:persist_user,->{PersistUser.new})# set up your auto-injection function
AutoInject=Dry::AutoInject(my_container)# then simply include it in your class providing which dependencies should be
# injected automatically from the configured container
classPersistUserincludeAutoInject[:user_repository]defcall(user)user_repository<<userendendpersist_user=my_container[:persist_user]persist_user.call(name:'Jane')

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.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.