Sha256: d1d61637e8e6facc849092dc5ed074f2c04ed4363829852a8e24a3b7ca7020e8
Contents?: true
Size: 1.71 KB
Versions: 3
Compression:
Stored size: 1.71 KB
Contents
# frozen_string_literal: true require "zeitwerk" require "dry/core" module Dry module AutoInject def self.loader @loader ||= Zeitwerk::Loader.new.tap do |loader| root = File.expand_path("..", __dir__) loader.tag = "dry-auto_inject" loader.inflector = Zeitwerk::GemInflector.new("#{root}/dry-auto_inject.rb") loader.push_dir(root) loader.ignore( "#{root}/dry-auto_inject.rb", "#{root}/dry/auto_inject/version.rb" ) end end loader.setup end # Configure an auto-injection module # # @example # module MyApp # # set up your container # container = Dry::Core::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 end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-auto_inject-1.0.1 | lib/dry/auto_inject.rb |
dry-auto_inject-1.0.0 | lib/dry/auto_inject.rb |
dry-auto_inject-1.0.0.rc1 | lib/dry/auto_inject.rb |