Sha256: a559bea10b9c062866ee8458817f0ec725e2294922643aaf0f01b2c246cc2655
Contents?: true
Size: 1.44 KB
Versions: 2
Compression:
Stored size: 1.44 KB
Contents
# frozen_string_literal: true require 'dry/auto_inject/builder' module Dry # 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 def self.AutoInject(container, options = {}) AutoInject::Builder.new(container, options) end module AutoInject # @api private def self.super_method(klass, method) method = klass.instance_method(method) method unless method.owner.equal?(klass) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dry-auto_inject-0.5.0 | lib/dry/auto_inject.rb |
dry-auto_inject-0.4.6 | lib/dry/auto_inject.rb |