You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm playing around with Rails 6.0.0.beta2 and came across this error where
constants inside of a ruby namespace are not being loaded by zeitwerk.
I spent some time debugging this error and it seems like bootsnap is preventing TracePoint.new(:class) calls from being triggered so zeitwerk doesn't not
set autoloads for constants under that namespace.
Here are some simple steps to reproduce that error and how I was able to make it
run by not requiring bootsnap/setup.
DISABLE_SPRING=true rails runner 'puts Admin::Test.name'
Zeitwerk@rails.main: autoload setfor ApplicationCable, to be autovivified from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/channels/application_cable
Zeitwerk@rails.main: autoload setfor ApplicationController, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/controllers/application_controller.rb
Zeitwerk@rails.main: autoload setfor ApplicationHelper, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/helpers/application_helper.rb
Zeitwerk@rails.main: autoload setfor ApplicationJob, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/jobs/application_job.rb
Zeitwerk@rails.main: autoload setfor ApplicationMailer, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/mailers/application_mailer.rb
Zeitwerk@rails.main: autoload setfor Admin, to be autovivified from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/models/admin
Zeitwerk@rails.main: autoload setfor Admin, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/models/admin.rb
Zeitwerk@rails.main: autoload setfor ApplicationRecord, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/models/application_record.rb
Zeitwerk@rails.once: autoload setfor ActionText::TagHelper, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actiontext-6.0.0.beta2/app/helpers/action_text/tag_helper.rb
Zeitwerk@rails.once: autoload setfor ActionText::ContentHelper, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actiontext-6.0.0.beta2/app/helpers/action_text/content_helper.rb
Zeitwerk@rails.once: autoload setfor ActionText::RichText, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actiontext-6.0.0.beta2/app/models/action_text/rich_text.rb
Zeitwerk@rails.once: autoload setfor ActionMailbox::BaseController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/controllers/action_mailbox/base_controller.rb
Zeitwerk@rails.once: autoload setfor ActionMailbox::Ingresses, to be autovivified from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/controllers/action_mailbox/ingresses
Zeitwerk@rails.once: autoload setfor Rails::Conductor, to be autovivified from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/controllers/rails/conductor
Zeitwerk@rails.once: autoload setfor ActionMailbox::IncinerationJob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/jobs/action_mailbox/incineration_job.rb
Zeitwerk@rails.once: autoload setfor ActionMailbox::RoutingJob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/jobs/action_mailbox/routing_job.rb
Zeitwerk@rails.once: autoload setfor ActionMailbox::InboundEmail, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/models/action_mailbox/inbound_email.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::DirectUploadsController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/active_storage/direct_uploads_controller.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::BaseController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/active_storage/base_controller.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::BlobsController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/active_storage/blobs_controller.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::RepresentationsController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/active_storage/representations_controller.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::DiskController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/active_storage/disk_controller.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::SetCurrent, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/concerns/active_storage/set_current.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::SetBlob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/concerns/active_storage/set_blob.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::BaseJob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/jobs/active_storage/base_job.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::AnalyzeJob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/jobs/active_storage/analyze_job.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::PurgeJob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/jobs/active_storage/purge_job.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Variant, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/variant.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Blob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/blob.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Filename, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/filename.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Variation, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/variation.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Attachment, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/attachment.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Current, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/current.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Preview, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/preview.rb
Zeitwerk@rails.main: constant Admin loaded from file /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/models/admin.rb
Please specify a valid ruby command or the path of a script to run.
Run 'rails runner -h'for help.
uninitialized constant Admin::Test
Disable bootsnap
sed -i ''"s/require 'bootsnap\/setup'/#require 'bootsnap\/setup'/g" config/boot.rb
Try again ( it worked this time )
DISABLE_SPRING=true rails runner 'puts Admin::Test.name'
Zeitwerk@rails.main: autoload setfor ApplicationCable, to be autovivified from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/channels/application_cable
Zeitwerk@rails.main: autoload setfor ApplicationController, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/controllers/application_controller.rb
Zeitwerk@rails.main: autoload setfor ApplicationHelper, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/helpers/application_helper.rb
Zeitwerk@rails.main: autoload setfor ApplicationJob, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/jobs/application_job.rb
Zeitwerk@rails.main: autoload setfor ApplicationMailer, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/mailers/application_mailer.rb
Zeitwerk@rails.main: autoload setfor Admin, to be autovivified from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/models/admin
Zeitwerk@rails.main: autoload setfor Admin, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/models/admin.rb
Zeitwerk@rails.main: autoload setfor ApplicationRecord, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/models/application_record.rb
Zeitwerk@rails.once: autoload setfor ActionText::TagHelper, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actiontext-6.0.0.beta2/app/helpers/action_text/tag_helper.rb
Zeitwerk@rails.once: autoload setfor ActionText::ContentHelper, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actiontext-6.0.0.beta2/app/helpers/action_text/content_helper.rb
Zeitwerk@rails.once: autoload setfor ActionText::RichText, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actiontext-6.0.0.beta2/app/models/action_text/rich_text.rb
Zeitwerk@rails.once: autoload setfor ActionMailbox::BaseController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/controllers/action_mailbox/base_controller.rb
Zeitwerk@rails.once: autoload setfor ActionMailbox::Ingresses, to be autovivified from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/controllers/action_mailbox/ingresses
Zeitwerk@rails.once: autoload setfor Rails::Conductor, to be autovivified from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/controllers/rails/conductor
Zeitwerk@rails.once: autoload setfor ActionMailbox::IncinerationJob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/jobs/action_mailbox/incineration_job.rb
Zeitwerk@rails.once: autoload setfor ActionMailbox::RoutingJob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/jobs/action_mailbox/routing_job.rb
Zeitwerk@rails.once: autoload setfor ActionMailbox::InboundEmail, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/actionmailbox-6.0.0.beta2/app/models/action_mailbox/inbound_email.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::DirectUploadsController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/active_storage/direct_uploads_controller.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::BaseController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/active_storage/base_controller.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::BlobsController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/active_storage/blobs_controller.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::RepresentationsController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/active_storage/representations_controller.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::DiskController, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/active_storage/disk_controller.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::SetCurrent, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/concerns/active_storage/set_current.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::SetBlob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/controllers/concerns/active_storage/set_blob.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::BaseJob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/jobs/active_storage/base_job.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::AnalyzeJob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/jobs/active_storage/analyze_job.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::PurgeJob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/jobs/active_storage/purge_job.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Variant, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/variant.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Blob, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/blob.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Filename, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/filename.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Variation, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/variation.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Attachment, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/attachment.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Current, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/current.rb
Zeitwerk@rails.once: autoload setfor ActiveStorage::Preview, to be loaded from /usr/local/lib/ruby/gems/2.5.0/gems/activestorage-6.0.0.beta2/app/models/active_storage/preview.rb
Zeitwerk@rails.main: autoload setfor Admin::Test, to be loaded from /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/models/admin/test.rb
Zeitwerk@rails.main: constant Admin loaded from file /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/models/admin.rb
Zeitwerk@rails.main: constant Admin::Test loaded from file /Users/jairovm/Sites/ruby/rails/tmp/zeitwerk/app/models/admin/test.rb
Admin::Test
VERSIONS
bundle show rails [18:14:54]
/usr/local/lib/ruby/gems/2.5.0/gems/rails-6.0.0.beta2
bundle show bootsnap [18:14:15]
/usr/local/lib/ruby/gems/2.5.0/gems/bootsnap-1.4.1
bundle show zeitwerk [18:15:11]
/usr/local/lib/ruby/gems/2.5.0/gems/zeitwerk-1.3.1
The text was updated successfully, but these errors were encountered:
Hi @fxn !
I'm playing around with Rails 6.0.0.beta2 and came across this error where
constants inside of a ruby
namespace
are not being loaded byzeitwerk
.I spent some time debugging this error and it seems like bootsnap is preventing
TracePoint.new(:class)
calls from being triggered sozeitwerk
doesn't notset
autoloads
for constants under thatnamespace
.Here are some simple steps to reproduce that error and how I was able to make it
run by not requiring
bootsnap/setup
.Thank for your amazing work on this project.
Create a brand new rails app*
rails new zeitwerk cd zeitwerk
Create Admin::Test class*
Enable zeitwerk logger*
Try to print Admin::Test class name
Disable bootsnap
Try again ( it worked this time )
VERSIONS
The text was updated successfully, but these errors were encountered: