Fail to autoload my dependencies with dry-system

Hello
I’m facing an issue to register my dependencies with dry-system and dry-container

I’m using
dry-container (0.10.0)
dry-system (0.27.2)

with this code snippet:

require 'dry-auto_inject'

di_container = Dry::Container.new
di_container.register(:injected_value, "injected")
AutoInject = Dry::AutoInject(di_container)

When I do:

include AutoInject[:injected_value]

I have the following error:

/Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `initialize': wrong number of arguments (given 1, expected 0) (ArgumentError)
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `new'
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `block (2 levels) in define_new'
	from /Users/eric/.gem/gems/selenium-webdriver-4.32.0/lib/selenium/webdriver/common/file_reaper.rb:35:in `tmp_files'
	from /Users/eric/.gem/gems/selenium-webdriver-4.32.0/lib/selenium/webdriver/common/file_reaper.rb:53:in `reap!'
	from /Users/eric/.gem/gems/selenium-webdriver-4.32.0/lib/selenium/webdriver/common/file_reaper.rb:62:in `block in <module:FileReaper>'
/Users/eric/.gem/gems/pry-0.14.2/lib/pry/output.rb:10:in `initialize': wrong number of arguments (given 2, expected 1) (ArgumentError)
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `new'
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `block (2 levels) in define_new'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:539:in `output'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:85:in `epilogue'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:40:in `ensure in start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:40:in `start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:15:in `start'
	from /Users/eric/.gem/gems/pry-byebug-3.10.1/lib/pry-byebug/pry_ext.rb:15:in `start_with_pry_byebug'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_class.rb:194:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:59:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:8:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:87:in `perform'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:178:in `invoke_command'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:73:in `perform'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:71:in `block in invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:149:in `with_argv'

I have the same error when defining

require 'dry/system/container'

class AppContainer < Dry::System::Container
  configure do |config|
    config.root = Pathname(".")

    config.component_dirs.add 'app'
    config.component_dirs.add 'lib'
  end
end

AppImport = AppContainer.injector

AppContainer.finalize!

Thank you for your help

Thanks for sharing this, @ericto! Is there any chance you might be able to share a minimal reproduction of the errors you’re seeing? It looks like the error might have something to do with the kind of class you’re putting the include AutoInject into.

Hi @timriley

here is the full trace

[8] pry(main)> include AutoInject[:injected_value]
/Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `initialize': wrong number of arguments (given 1, expected 0) (ArgumentError)
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `new'
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `block (2 levels) in define_new'
	from /Users/eric/.gem/gems/selenium-webdriver-4.32.0/lib/selenium/webdriver/common/file_reaper.rb:35:in `tmp_files'
	from /Users/eric/.gem/gems/selenium-webdriver-4.32.0/lib/selenium/webdriver/common/file_reaper.rb:53:in `reap!'
	from /Users/eric/.gem/gems/selenium-webdriver-4.32.0/lib/selenium/webdriver/common/file_reaper.rb:62:in `block in <module:FileReaper>'
/Users/eric/.gem/gems/pry-0.14.2/lib/pry/output.rb:10:in `initialize': wrong number of arguments (given 2, expected 1) (ArgumentError)
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `new'
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `block (2 levels) in define_new'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:539:in `output'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:85:in `epilogue'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:40:in `ensure in start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:40:in `start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:15:in `start'
	from /Users/eric/.gem/gems/pry-byebug-3.11.0/lib/pry-byebug/pry_ext.rb:15:in `start_with_pry_byebug'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_class.rb:194:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:59:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:8:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:87:in `perform'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:178:in `invoke_command'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:73:in `perform'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:71:in `block in invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:149:in `with_argv'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:69:in `invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands.rb:18:in `<main>'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `require'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `block (2 levels) in replace_require'
	from /Users/eric/.gem/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from bin/rails:4:in `<main>'
/Users/eric/.gem/gems/pry-0.14.2/lib/pry/config/value.rb:11:in `initialize': wrong number of arguments (given 2, expected 1) (ArgumentError)
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `new'
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `block (2 levels) in define_new'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/config/attributable.rb:14:in `block in attribute'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/exceptions.rb:18:in `==='
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:660:in `rescue in handle_line'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:653:in `handle_line'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:261:in `block (2 levels) in eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:260:in `catch'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:260:in `block in eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:259:in `catch'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:259:in `eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:77:in `block in repl'
	from <internal:kernel>:187:in `loop'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:67:in `repl'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:38:in `block in start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/input_lock.rb:61:in `__with_ownership'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/input_lock.rb:78:in `with_ownership'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:38:in `start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:15:in `start'
	from /Users/eric/.gem/gems/pry-byebug-3.11.0/lib/pry-byebug/pry_ext.rb:15:in `start_with_pry_byebug'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_class.rb:194:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:59:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:8:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:87:in `perform'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:178:in `invoke_command'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:73:in `perform'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:71:in `block in invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:149:in `with_argv'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:69:in `invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands.rb:18:in `<main>'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `require'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `block (2 levels) in replace_require'
	from /Users/eric/.gem/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from bin/rails:4:in `<main>'
/Users/eric/.gem/gems/pry-0.14.2/lib/pry/config/value.rb:11:in `initialize': wrong number of arguments (given 2, expected 1) (ArgumentError)
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `new'
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `block (2 levels) in define_new'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/config/attributable.rb:14:in `block in attribute'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/forwardable.rb:240:in `hooks'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:395:in `exec_hook'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:294:in `evaluate_ruby'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:659:in `handle_line'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:261:in `block (2 levels) in eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:260:in `catch'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:260:in `block in eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:259:in `catch'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:259:in `eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:77:in `block in repl'
	from <internal:kernel>:187:in `loop'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:67:in `repl'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:38:in `block in start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/input_lock.rb:61:in `__with_ownership'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/input_lock.rb:78:in `with_ownership'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:38:in `start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:15:in `start'
	from /Users/eric/.gem/gems/pry-byebug-3.11.0/lib/pry-byebug/pry_ext.rb:15:in `start_with_pry_byebug'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_class.rb:194:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:59:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:8:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:87:in `perform'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:178:in `invoke_command'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:73:in `perform'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:71:in `block in invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:149:in `with_argv'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:69:in `invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands.rb:18:in `<main>'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `require'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `block (2 levels) in replace_require'
	from /Users/eric/.gem/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from bin/rails:4:in `<main>'
/Users/eric/.gem/gems/pry-0.14.2/lib/pry/output.rb:10:in `initialize': wrong number of arguments (given 2, expected 1) (ArgumentError)
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `new'
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `block (2 levels) in define_new'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:539:in `output'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:85:in `epilogue'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:40:in `ensure in start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:40:in `start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:15:in `start'
	from /Users/eric/.gem/gems/pry-byebug-3.11.0/lib/pry-byebug/pry_ext.rb:15:in `start_with_pry_byebug'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_class.rb:194:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:59:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:8:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:87:in `perform'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:178:in `invoke_command'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:73:in `perform'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:71:in `block in invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:149:in `with_argv'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:69:in `invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands.rb:18:in `<main>'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `require'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `block (2 levels) in replace_require'
	from /Users/eric/.gem/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from bin/rails:4:in `<main>'
/Users/eric/.gem/gems/pry-0.14.2/lib/pry/config/value.rb:11:in `initialize': wrong number of arguments (given 2, expected 1) (ArgumentError)
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `new'
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `block (2 levels) in define_new'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/config/attributable.rb:14:in `block in attribute'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/exceptions.rb:18:in `==='
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:660:in `rescue in handle_line'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:653:in `handle_line'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:261:in `block (2 levels) in eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:260:in `catch'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:260:in `block in eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:259:in `catch'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:259:in `eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:77:in `block in repl'
	from <internal:kernel>:187:in `loop'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:67:in `repl'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:38:in `block in start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/input_lock.rb:61:in `__with_ownership'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/input_lock.rb:78:in `with_ownership'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:38:in `start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:15:in `start'
	from /Users/eric/.gem/gems/pry-byebug-3.11.0/lib/pry-byebug/pry_ext.rb:15:in `start_with_pry_byebug'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_class.rb:194:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:59:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:8:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:87:in `perform'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:178:in `invoke_command'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:73:in `perform'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:71:in `block in invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:149:in `with_argv'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:69:in `invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands.rb:18:in `<main>'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `require'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `block (2 levels) in replace_require'
	from /Users/eric/.gem/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from bin/rails:4:in `<main>'
/Users/eric/.gem/gems/pry-0.14.2/lib/pry/config/value.rb:11:in `initialize': wrong number of arguments (given 2, expected 1) (ArgumentError)
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `new'
	from /Users/eric/.gem/gems/dry-auto_inject-0.9.0/lib/dry/auto_inject/strategies/kwargs.rb:22:in `block (2 levels) in define_new'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/config/attributable.rb:14:in `block in attribute'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/forwardable.rb:240:in `hooks'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:395:in `exec_hook'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:294:in `evaluate_ruby'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:659:in `handle_line'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:261:in `block (2 levels) in eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:260:in `catch'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:260:in `block in eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:259:in `catch'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_instance.rb:259:in `eval'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:77:in `block in repl'
	from <internal:kernel>:187:in `loop'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:67:in `repl'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:38:in `block in start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/input_lock.rb:61:in `__with_ownership'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/input_lock.rb:78:in `with_ownership'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:38:in `start'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/repl.rb:15:in `start'
	from /Users/eric/.gem/gems/pry-byebug-3.11.0/lib/pry-byebug/pry_ext.rb:15:in `start_with_pry_byebug'
	from /Users/eric/.gem/gems/pry-0.14.2/lib/pry/pry_class.rb:194:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:59:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:8:in `start'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands/console/console_command.rb:87:in `perform'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:178:in `invoke_command'
	from /Users/eric/.gem/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command/base.rb:73:in `perform'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:71:in `block in invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:149:in `with_argv'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/command.rb:69:in `invoke'
	from /Users/eric/.gem/gems/railties-7.2.2.1/lib/rails/commands.rb:18:in `<main>'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `require'
	from /Users/eric/.rbenv/versions/3.3.0/lib/ruby/3.3.0/bundled_gems.rb:74:in `block (2 levels) in replace_require'
	from /Users/eric/.gem/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
	from bin/rails:4:in `<main>'

@ericto can I please see the class that you’re putting the include line into?

there is no class, it’s just

di_container = Dry::Container.new
di_container.register(:injected_value, "injected")

but even if i had a class like

class FooBar
  def initialize(name)
    @name = name
    @counter = 0
  end

  def greet
    puts "Hello from #{@name}!"
  end
end  
require 'dry-auto_inject'

di_container = Dry::Container.new
di_container.register(:injected_value, FooBar)
AutoInject = Dry::AutoInject(di_container)

include AutoInject[:injected_value]

It will also trigger the error

Thanks @ericto. This explains the issue. Per our docs, the auto-injection mixin is intended to be included in a class.

Dry AutoInject expects there to be an #initialize available on that class that accepts keyword arguments (when using the default kwargs strategy, at least).

The purpose of AutoInject is to allow that class to be initialized called with .new, and then have its dependencies from the container be made available automatically.

For example:

di_container = Dry::Container.new
di_container.register(:injected_value, FooBar)
AutoInject = Dry::AutoInject(di_container)

class MyClass
  include AutoInject[:injected_value]
end

my_obj = MyClass.new
my_obj.injected_value # => FooBar

When you’re doing include AutoInject[:injected_value] in Ruby’s top-level scope (i.e. outside of a class), I’m not sure what exactly you’re wanting to call .new on. There’s nothing to initialize at that point. (Kust to be technically clear, there is an #initialize available on the top-level binding, but it’s the one defined by BasicObject, and it does not take any arguments, which is the reason you were seeing that error).

What are you trying to achieve with that include AutoInject[:injected_value] line where it is? If all you want to do is access the :injected_value there, you can access it directly from the container, you don’t need AutoInject to do it for you: di_container[:injected_value].

To wrap this up neatly: if you want to use the auto injection mixin, you need to put it in a class.

Sorry for the misundertand, The example displayed does not reflect the reality of my issue. I don’t really inject a string but a PORO, like the one you displayed in your example.

di_container = Dry::Container.new
di_container.register(:injected_value, FooBar)
AutoInject = Dry::AutoInject(di_container)

The error trace I mentionned earlier is from a real class

Can you please share me an example of the kind of class where you’re putting the include AutoInject line?