module Dry
Public Class Methods
AutoInject(container, options = {})
click to toggle source
Configure an auto-injection module
@example
module MyApp # set up your container container = Dry::Container.new container.register(:data_store, -> { DataStore.new }) container.register(:user_repository, -> { container[:data_store][:users] }) container.register(:persist_user, -> { PersistUser.new }) # set up your auto-injection function AutoInject = Dry::AutoInject(container) # define your injection function def self.Inject(*keys) AutoInject[*keys] end end # then simply include it in your class providing which dependencies should be # injected automatically from the configured container class PersistUser include MyApp::Inject(:user_repository) def call(user) user_repository << user end end persist_user = container[:persist_user] persist_user.call(name: 'Jane')
@return [Proc] calling the returned proc builds an auto-injection module
@api public
# File lib/dry/auto_inject.rb, line 43 def self.AutoInject(container, options = {}) AutoInject::Builder.new(container, options) end