dry-rb / dry-auto_inject

Container-agnostic constructor injection mixin

Home Page:https://dry-rb.org/gems/dry-auto_inject/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

undefined method `is_a?' for #<Dry::AutoInject::Builder:0x00007f52d26c51e8>

grozwalker opened this issue · comments

Describe the bug

When I use Zeitwerk::Loader.eager_load_all in my rake task I get this error

NoMethodError: undefined method `is_a?' for #<Dry::AutoInject::Builder:0x00007f52d26c51e8>                                                    
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/dry-auto_inject-0.8.0/lib/dry/auto_inject/builder.rb:35:in `method_missing'                        
/root/hexlet/vendor/bundle/ruby/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/application/finisher.rb:34:in `block (2 levels) in <m
odule:Finisher>'                                                                                                                              
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader/callbacks.rb:90:in `block in run_on_load_callbacks'             
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader/callbacks.rb:90:in `each'                                       
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader/callbacks.rb:90:in `run_on_load_callbacks'                      
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader/callbacks.rb:23:in `on_file_autoloaded'                         
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/kernel.rb:28:in `require'                                              
/root/hexlet/app/jobs/update_project_from_repository_job.rb:4:in `<class:UpdateProjectFromRepositoryJob>'                                     
/root/hexlet/app/jobs/update_project_from_repository_job.rb:3:in `<top (required)>'                                                           
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/kernel.rb:27:in `require'                                              
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/kernel.rb:27:in `require'                                              
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader/helpers.rb:95:in `const_get'                                    
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader/helpers.rb:95:in `cget'                                         
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:231:in `block (2 levels) in eager_load'                      
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader/helpers.rb:26:in `block in ls'                                  
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader/helpers.rb:18:in `each_child'                                   
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader/helpers.rb:18:in `ls'                                           
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:226:in `block in eager_load'                                 
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:211:in `synchronize'                                         
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:211:in `eager_load'                                          
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:311:in `each'                                                
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:311:in `eager_load_all'                                      
/root/hexlet/lib/tasks/app.rake:9:in `block (3 levels) in <top (required)>'                                                                   
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'                                             
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/sentry-ruby-core-4.8.3/lib/sentry/rake.rb:26:in `execute'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:211:in `eager_load'                                          
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:311:in `each'                                                
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.5.3/lib/zeitwerk/loader.rb:311:in `eager_load_all'                                      
/root/hexlet/lib/tasks/app.rake:9:in `block (3 levels) in <top (required)>'                                                                   
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `block in execute'                                             
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `each'                                                         
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:281:in `execute'                                                      
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/sentry-ruby-core-4.8.3/lib/sentry/rake.rb:26:in `execute'                                          
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:219:in `block in invoke_with_call_chain'                              
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `synchronize'                                                  
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:199:in `invoke_with_call_chain'                                       
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/task.rb:188:in `invoke'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:160:in `invoke_task'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `each'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:116:in `block in top_level'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:125:in `run_with_threads'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:110:in `top_level'
/root/hexlet/vendor/bundle/ruby/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/commands/rake/rake_command.rb:24:in `block (2 levels) in perform'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling'
/root/hexlet/vendor/bundle/ruby/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/commands/rake/rake_command.rb:24:in `block in perform'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/lib/rake/rake_module.rb:59:in `with_application'
/root/hexlet/vendor/bundle/ruby/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/commands/rake/rake_command.rb:18:in `perform'
/root/hexlet/vendor/bundle/ruby/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/command.rb:51:in `invoke'
/root/hexlet/vendor/bundle/ruby/3.1.0/bundler/gems/rails-6f0700865cae/railties/lib/rails/commands.rb:18:in `<top (required)>'
/root/hexlet/bin/rails:5:in `require'
/root/hexlet/bin/rails:5:in `<top (required)>'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/spring-4.0.0/lib/spring/client/rails.rb:30:in `load'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/spring-4.0.0/lib/spring/client/rails.rb:30:in `call'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/spring-4.0.0/lib/spring/client/command.rb:7:in `call'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/spring-4.0.0/lib/spring/client.rb:30:in `run'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/spring-4.0.0/bin/spring:49:in `<top (required)>'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/spring-4.0.0/lib/spring/binstub.rb:11:in `load'
/root/hexlet/vendor/bundle/ruby/3.1.0/gems/spring-4.0.0/lib/spring/binstub.rb:11:in `<top (required)>'
<internal:/usr/local/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
<internal:/usr/local/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
/root/hexlet/bin/spring:10:in `block in <top (required)>'
<internal:kernel>:90:in `tap'
/root/hexlet/bin/spring:7:in `<top (required)>'
bin/rails:2:in `load'
bin/rails:2:in `<main>'

To Reproduce

namespace :app do
   task my_test_task: :environment do
      Zeitwerk::Loader.eager_load_all
   end
end

Expected behavior

No error appears.

I find same error in other product dry-rb/dry-matcher#31 and this is solution dry-rb/dry-matcher#32

My environment

  • Affects my production application: YES/NO
  • Ruby version: 3.1
  • Rails version: 7.0.1
  • OS: Ubuntu

fixed via #76