Rails: Rake gives Zeitwerk error when mentioning one model class in another

Thanks for your condolences. But programming is a good way to take my mind off all the horrible responsibilities etc… :slight_smile:

Ok, yes same issue with seed.rb containing only

foo = Comment `

And Comment.rb only containing

class Comment < ApplicationRecord 
#commented out code.... 
end

As for what’s loading AttachmentHelpers and JsonHelpers they were being loaded by my user model but I think I’ve managed to get the relevant code commented out now.

Ohh, and I’ve cut down application_record.rb to just

class ApplicationRecord < ActiveRecord::Base

end

And the User model down to just

class User < ApplicationRecord
end

And once I’ve done that the result of running db:seed is still the same error with the full result below (I deleted my above reply because I forgot to turn off spring when running it as I did here).

Zeitwerk@rails.once: the namespace ActionText already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/actiontext-6.1.5/app/helpers/action_text
Zeitwerk@rails.once: autoload set for ActionText::ContentHelper, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actiontext-6.1.5/app/helpers/action_text/content_helper.rb
Zeitwerk@rails.once: autoload set for ActionText::TagHelper, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actiontext-6.1.5/app/helpers/action_text/tag_helper.rb
Zeitwerk@rails.once: the namespace ActionText already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/actiontext-6.1.5/app/models/action_text
Zeitwerk@rails.once: autoload set for ActionText::Record, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actiontext-6.1.5/app/models/action_text/record.rb
Zeitwerk@rails.once: autoload set for ActionText::RichText, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actiontext-6.1.5/app/models/action_text/rich_text.rb
Zeitwerk@rails.main: autoload set for ApplicationCable, to be autovivified from /Users/TruePath/Build/math-site/app/channels/application_cable
Zeitwerk@rails.main: autoload set for AlertsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/alerts_controller.rb
Zeitwerk@rails.main: autoload set for ApplicationController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/application_controller.rb
Zeitwerk@rails.main: autoload set for ArticlesController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/articles_controller.rb
Zeitwerk@rails.main: autoload set for CitesController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/cites_controller.rb
Zeitwerk@rails.main: autoload set for ClaimsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/claims_controller.rb
Zeitwerk@rails.main: autoload set for CommentThreadsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/comment_threads_controller.rb
Zeitwerk@rails.main: autoload set for CommentsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/comments_controller.rb
Zeitwerk@rails.main: autoload set for FeedsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/feeds_controller.rb
Zeitwerk@rails.main: autoload set for HomeController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/home_controller.rb
Zeitwerk@rails.main: autoload set for JournalsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/journals_controller.rb
Zeitwerk@rails.main: autoload set for NotificationsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/notifications_controller.rb
Zeitwerk@rails.main: autoload set for PageChangesController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/page_changes_controller.rb
Zeitwerk@rails.main: autoload set for PagesController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/pages_controller.rb
Zeitwerk@rails.main: autoload set for PostsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/posts_controller.rb
Zeitwerk@rails.main: autoload set for PublicationsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/publications_controller.rb
Zeitwerk@rails.main: autoload set for QuestionsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/questions_controller.rb
Zeitwerk@rails.main: autoload set for ResponsesController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/responses_controller.rb
Zeitwerk@rails.main: autoload set for ReviewsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/reviews_controller.rb
Zeitwerk@rails.main: autoload set for TagsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/tags_controller.rb
Zeitwerk@rails.main: autoload set for UserListsController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/user_lists_controller.rb
Zeitwerk@rails.main: autoload set for Users, to be autovivified from /Users/TruePath/Build/math-site/app/controllers/users
Zeitwerk@rails.main: autoload set for UsersController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/users_controller.rb
Zeitwerk@rails.main: autoload set for WorksController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/works_controller.rb
Zeitwerk@rails.main: autoload set for ArchivableController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/concerns/archivable_controller.rb
Zeitwerk@rails.main: autoload set for AutocompleteController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/concerns/autocomplete_controller.rb
Zeitwerk@rails.main: autoload set for CollectionController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/concerns/collection_controller.rb
Zeitwerk@rails.main: autoload set for FulltextSearchController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/concerns/fulltext_search_controller.rb
Zeitwerk@rails.main: autoload set for JsonApiController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/concerns/json_api_controller.rb
Zeitwerk@rails.main: autoload set for PolicyController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/concerns/policy_controller.rb
Zeitwerk@rails.main: autoload set for PostableController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/concerns/postable_controller.rb
Zeitwerk@rails.main: autoload set for StreamController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/concerns/stream_controller.rb
Zeitwerk@rails.main: autoload set for ValidatesController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/concerns/validates_controller.rb
Zeitwerk@rails.main: autoload set for VotableController, to be loaded from /Users/TruePath/Build/math-site/app/controllers/concerns/votable_controller.rb
Zeitwerk@rails.main: autoload set for ApplicationHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/application_helper.rb
Zeitwerk@rails.main: autoload set for ArticlesHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/articles_helper.rb
Zeitwerk@rails.main: autoload set for CitesHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/cites_helper.rb
Zeitwerk@rails.main: autoload set for ClaimsHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/claims_helper.rb
Zeitwerk@rails.main: autoload set for CommentsHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/comments_helper.rb
Zeitwerk@rails.main: autoload set for FeedsHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/feeds_helper.rb
Zeitwerk@rails.main: autoload set for JournalsHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/journals_helper.rb
Zeitwerk@rails.main: autoload set for NotificationsHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/notifications_helper.rb
Zeitwerk@rails.main: autoload set for PublicationsHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/publications_helper.rb
Zeitwerk@rails.main: autoload set for ReviewsHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/reviews_helper.rb
Zeitwerk@rails.main: autoload set for UserListsHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/user_lists_helper.rb
Zeitwerk@rails.main: autoload set for UsersHelper, to be loaded from /Users/TruePath/Build/math-site/app/helpers/users_helper.rb
Zeitwerk@rails.main: autoload set for ApplicationJob, to be loaded from /Users/TruePath/Build/math-site/app/jobs/application_job.rb
Zeitwerk@rails.main: autoload set for ApplicationMailer, to be loaded from /Users/TruePath/Build/math-site/app/mailers/application_mailer.rb
Zeitwerk@rails.main: autoload set for BibtexAttribute, to be loaded from /Users/TruePath/Build/math-site/app/misc/bibtex_attribute.rb
Zeitwerk@rails.main: autoload set for CustomBibEntry, to be loaded from /Users/TruePath/Build/math-site/app/misc/custom_bib_entry.rb
Zeitwerk@rails.main: autoload set for EnhancedParameters, to be loaded from /Users/TruePath/Build/math-site/app/misc/enhanced_parameters.rb
Zeitwerk@rails.main: autoload set for MetadataHash, to be loaded from /Users/TruePath/Build/math-site/app/misc/metadata_hash.rb
Zeitwerk@rails.main: autoload set for PubMetadataFetcher, to be loaded from /Users/TruePath/Build/math-site/app/misc/pub_metadata_fetcher.rb
Zeitwerk@rails.main: autoload set for SharedConstants, to be loaded from /Users/TruePath/Build/math-site/app/misc/shared_constants.rb
Zeitwerk@rails.main: autoload set for Alert, to be loaded from /Users/TruePath/Build/math-site/app/models/alert.rb
Zeitwerk@rails.main: autoload set for ApplicationRecord, to be loaded from /Users/TruePath/Build/math-site/app/models/application_record.rb
Zeitwerk@rails.main: autoload set for Article, to be loaded from /Users/TruePath/Build/math-site/app/models/article.rb
Zeitwerk@rails.main: autoload set for Cite, to be loaded from /Users/TruePath/Build/math-site/app/models/cite.rb
Zeitwerk@rails.main: autoload set for Claim, to be loaded from /Users/TruePath/Build/math-site/app/models/claim.rb
Zeitwerk@rails.main: autoload set for Comment, to be loaded from /Users/TruePath/Build/math-site/app/models/comment.rb
Zeitwerk@rails.main: autoload set for CommentThread, to be loaded from /Users/TruePath/Build/math-site/app/models/comment_thread.rb
Zeitwerk@rails.main: autoload set for Feed, to be loaded from /Users/TruePath/Build/math-site/app/models/feed.rb
Zeitwerk@rails.main: autoload set for Journal, to be loaded from /Users/TruePath/Build/math-site/app/models/journal.rb
Zeitwerk@rails.main: autoload set for Notification, to be loaded from /Users/TruePath/Build/math-site/app/models/notification.rb
Zeitwerk@rails.main: autoload set for Page, to be loaded from /Users/TruePath/Build/math-site/app/models/page.rb
Zeitwerk@rails.main: autoload set for PageChange, to be loaded from /Users/TruePath/Build/math-site/app/models/page_change.rb
Zeitwerk@rails.main: autoload set for Post, to be loaded from /Users/TruePath/Build/math-site/app/models/post.rb
Zeitwerk@rails.main: autoload set for Publication, to be loaded from /Users/TruePath/Build/math-site/app/models/publication.rb
Zeitwerk@rails.main: autoload set for Question, to be loaded from /Users/TruePath/Build/math-site/app/models/question.rb
Zeitwerk@rails.main: autoload set for Reference, to be loaded from /Users/TruePath/Build/math-site/app/models/reference.rb
Zeitwerk@rails.main: autoload set for Response, to be loaded from /Users/TruePath/Build/math-site/app/models/response.rb
Zeitwerk@rails.main: autoload set for Review, to be loaded from /Users/TruePath/Build/math-site/app/models/review.rb
Zeitwerk@rails.main: autoload set for Tag, to be loaded from /Users/TruePath/Build/math-site/app/models/tag.rb
Zeitwerk@rails.main: autoload set for TagFollow, to be loaded from /Users/TruePath/Build/math-site/app/models/tag_follow.rb
Zeitwerk@rails.main: autoload set for TagSynonym, to be loaded from /Users/TruePath/Build/math-site/app/models/tag_synonym.rb
Zeitwerk@rails.main: autoload set for Tagging, to be loaded from /Users/TruePath/Build/math-site/app/models/tagging.rb
Zeitwerk@rails.main: autoload set for User, to be loaded from /Users/TruePath/Build/math-site/app/models/user.rb
Zeitwerk@rails.main: autoload set for UserList, to be loaded from /Users/TruePath/Build/math-site/app/models/user_list.rb
Zeitwerk@rails.main: autoload set for UserListMembership, to be loaded from /Users/TruePath/Build/math-site/app/models/user_list_membership.rb
Zeitwerk@rails.main: autoload set for Work, to be loaded from /Users/TruePath/Build/math-site/app/models/work.rb
Zeitwerk@rails.main: autoload set for AlertHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/alert_helpers.rb
Zeitwerk@rails.main: autoload set for ArchivableHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/archivable_helpers.rb
Zeitwerk@rails.main: autoload set for AttachmentHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/attachment_helpers.rb
Zeitwerk@rails.main: autoload set for AutocompleteHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/autocomplete_helpers.rb
Zeitwerk@rails.main: autoload set for FullTextSearchHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/full_text_search_helpers.rb
Zeitwerk@rails.main: autoload set for JsonHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/json_helpers.rb
Zeitwerk@rails.main: autoload set for NotificationHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/notification_helpers.rb
Zeitwerk@rails.main: autoload set for PostableHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/postable_helpers.rb
Zeitwerk@rails.main: autoload set for ReferenceableHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/referenceable_helpers.rb
Zeitwerk@rails.main: autoload set for SlugHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/slug_helpers.rb
Zeitwerk@rails.main: autoload set for StreamableHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/streamable_helpers.rb
Zeitwerk@rails.main: autoload set for TaggableHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/taggable_helpers.rb
Zeitwerk@rails.main: autoload set for TopicHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/topic_helpers.rb
Zeitwerk@rails.main: autoload set for VotableHelpers, to be loaded from /Users/TruePath/Build/math-site/app/models/concerns/votable_helpers.rb
Zeitwerk@rails.main: autoload set for AlertPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/alert_policy.rb
Zeitwerk@rails.main: autoload set for ApplicationPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/application_policy.rb
Zeitwerk@rails.main: autoload set for ArticlePolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/article_policy.rb
Zeitwerk@rails.main: autoload set for CitePolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/cite_policy.rb
Zeitwerk@rails.main: autoload set for ClaimPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/claim_policy.rb
Zeitwerk@rails.main: autoload set for CommentPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/comment_policy.rb
Zeitwerk@rails.main: autoload set for CommentThreadPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/comment_thread_policy.rb
Zeitwerk@rails.main: autoload set for FeedPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/feed_policy.rb
Zeitwerk@rails.main: autoload set for JournalPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/journal_policy.rb
Zeitwerk@rails.main: autoload set for NotificationPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/notification_policy.rb
Zeitwerk@rails.main: autoload set for PageChangePolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/page_change_policy.rb
Zeitwerk@rails.main: autoload set for PagePolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/page_policy.rb
Zeitwerk@rails.main: autoload set for PostPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/post_policy.rb
Zeitwerk@rails.main: autoload set for PublicationPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/publication_policy.rb
Zeitwerk@rails.main: autoload set for QuestionPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/question_policy.rb
Zeitwerk@rails.main: autoload set for ReferencePolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/reference_policy.rb
Zeitwerk@rails.main: autoload set for ResponsePolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/response_policy.rb
Zeitwerk@rails.main: autoload set for ReviewPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/review_policy.rb
Zeitwerk@rails.main: autoload set for TagFollowPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/tag_follow_policy.rb
Zeitwerk@rails.main: autoload set for TagPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/tag_policy.rb
Zeitwerk@rails.main: autoload set for UserListPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/user_list_policy.rb
Zeitwerk@rails.main: autoload set for UserPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/user_policy.rb
Zeitwerk@rails.main: autoload set for WorkPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/work_policy.rb
Zeitwerk@rails.main: autoload set for FulltextSearchPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/concerns/fulltext_search_policy.rb
Zeitwerk@rails.main: autoload set for PostablePolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/concerns/postable_policy.rb
Zeitwerk@rails.main: autoload set for StreamPolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/concerns/stream_policy.rb
Zeitwerk@rails.main: autoload set for TaggablePolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/concerns/taggable_policy.rb
Zeitwerk@rails.main: autoload set for VotablePolicy, to be loaded from /Users/TruePath/Build/math-site/app/policies/concerns/votable_policy.rb
Zeitwerk@rails.main: autoload set for AdminScrubber, to be loaded from /Users/TruePath/Build/math-site/app/scrubbers/admin_scrubber.rb
Zeitwerk@rails.main: autoload set for CommentScrubber, to be loaded from /Users/TruePath/Build/math-site/app/scrubbers/comment_scrubber.rb
Zeitwerk@rails.main: autoload set for DefaultScrubber, to be loaded from /Users/TruePath/Build/math-site/app/scrubbers/default_scrubber.rb
Zeitwerk@rails.main: autoload set for PostableScrubber, to be loaded from /Users/TruePath/Build/math-site/app/scrubbers/postable_scrubber.rb
Zeitwerk@rails.main: autoload set for TitleScrubber, to be loaded from /Users/TruePath/Build/math-site/app/scrubbers/title_scrubber.rb
Zeitwerk@rails.main: autoload set for SqlHelper, to be loaded from /Users/TruePath/Build/math-site/app/sql_helpers/sql_helper.rb
Zeitwerk@rails.main: the namespace Devise already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/controllers/devise
Zeitwerk@rails.main: autoload set for Devise::ConfirmationsController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/controllers/devise/confirmations_controller.rb
Zeitwerk@rails.main: autoload set for Devise::OmniauthCallbacksController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/controllers/devise/omniauth_callbacks_controller.rb
Zeitwerk@rails.main: autoload set for Devise::PasswordsController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/controllers/devise/passwords_controller.rb
Zeitwerk@rails.main: autoload set for Devise::RegistrationsController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/controllers/devise/registrations_controller.rb
Zeitwerk@rails.main: autoload set for Devise::SessionsController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/controllers/devise/sessions_controller.rb
Zeitwerk@rails.main: autoload set for Devise::UnlocksController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/controllers/devise/unlocks_controller.rb
Zeitwerk@rails.main: autoload set for DeviseController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/controllers/devise_controller.rb
Zeitwerk@rails.main: autoload set for DeviseHelper, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/helpers/devise_helper.rb
Zeitwerk@rails.main: the namespace Devise already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/mailers/devise
Zeitwerk@rails.main: autoload set for Devise::Mailer, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/devise-4.8.1/app/mailers/devise/mailer.rb
Zeitwerk@rails.main: the namespace ActionMailbox already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/controllers/action_mailbox
Zeitwerk@rails.main: autoload set for ActionMailbox::BaseController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/controllers/action_mailbox/base_controller.rb
Zeitwerk@rails.main: autoload set for ActionMailbox::Ingresses, to be autovivified from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/controllers/action_mailbox/ingresses
Zeitwerk@rails.main: the namespace Rails already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/controllers/rails
Zeitwerk@rails.main: autoload set for Rails::Conductor, to be autovivified from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/controllers/rails/conductor
Zeitwerk@rails.main: the namespace ActionMailbox already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/jobs/action_mailbox
Zeitwerk@rails.main: autoload set for ActionMailbox::IncinerationJob, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/jobs/action_mailbox/incineration_job.rb
Zeitwerk@rails.main: autoload set for ActionMailbox::RoutingJob, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/jobs/action_mailbox/routing_job.rb
Zeitwerk@rails.main: the namespace ActionMailbox already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/models/action_mailbox
Zeitwerk@rails.main: autoload set for ActionMailbox::InboundEmail, to be autovivified from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/models/action_mailbox/inbound_email
Zeitwerk@rails.main: earlier autoload for ActionMailbox::InboundEmail discarded, it is actually an explicit namespace defined in /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/models/action_mailbox/inbound_email.rb
Zeitwerk@rails.main: autoload set for ActionMailbox::InboundEmail, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/models/action_mailbox/inbound_email.rb
Zeitwerk@rails.main: autoload set for ActionMailbox::Record, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/actionmailbox-6.1.5/app/models/action_mailbox/record.rb
Zeitwerk@rails.main: the namespace ActiveStorage already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/active_storage
Zeitwerk@rails.main: autoload set for ActiveStorage::BaseController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/active_storage/base_controller.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::Blobs, to be autovivified from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/active_storage/blobs
Zeitwerk@rails.main: autoload set for ActiveStorage::DirectUploadsController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/active_storage/direct_uploads_controller.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::DiskController, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/active_storage/disk_controller.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::Representations, to be autovivified from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/active_storage/representations
Zeitwerk@rails.main: the namespace ActiveStorage already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/concerns/active_storage
Zeitwerk@rails.main: autoload set for ActiveStorage::FileServer, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/concerns/active_storage/file_server.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::SetBlob, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/concerns/active_storage/set_blob.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::SetCurrent, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/concerns/active_storage/set_current.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::SetHeaders, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/controllers/concerns/active_storage/set_headers.rb
Zeitwerk@rails.main: the namespace ActiveStorage already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/jobs/active_storage
Zeitwerk@rails.main: autoload set for ActiveStorage::AnalyzeJob, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/jobs/active_storage/analyze_job.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::BaseJob, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/jobs/active_storage/base_job.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::MirrorJob, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/jobs/active_storage/mirror_job.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::PurgeJob, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/jobs/active_storage/purge_job.rb
Zeitwerk@rails.main: the namespace ActiveStorage already exists, descending into /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage
Zeitwerk@rails.main: autoload set for ActiveStorage::Attachment, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/attachment.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::Blob, to be autovivified from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/blob
Zeitwerk@rails.main: earlier autoload for ActiveStorage::Blob discarded, it is actually an explicit namespace defined in /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/blob.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::Blob, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/blob.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::Current, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/current.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::Filename, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/filename.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::Preview, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/preview.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::Record, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/record.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::Variant, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/variant.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::VariantRecord, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/variant_record.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::VariantWithRecord, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/variant_with_record.rb
Zeitwerk@rails.main: autoload set for ActiveStorage::Variation, to be loaded from /opt/local/lib/ruby3.1/gems/3.1.0/gems/activestorage-6.1.5/app/models/active_storage/variation.rb
Zeitwerk@rails.main: constant ApplicationRecord loaded from file /Users/TruePath/Build/math-site/app/models/application_record.rb
rake aborted!
TypeError: superclass mismatch for class Comment
/Users/TruePath/Build/math-site/app/models/comment.rb:176:in `<main>'
/Users/TruePath/Build/math-site/db/seeds.rb:84:in `<main>'
/opt/local/bin/ruby_executable_hooks3.1:22:in `eval'
/opt/local/bin/ruby_executable_hooks3.1:22:in `<main>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)

Finally got it!

So I have a rake task defined as follows:

require 'rexml/document'
include REXML

namespace :db do
  desc "Delete all unconfirmed users after 1 day"
  task :import_journal_abbrevs => :environment do
 ...
end

The important thing here is that I’m loading REXML (maybe I’m doing it wrong but I thought this was what I needed to do since I didn’t really want to load the gem all the time for this one rake task). If I comment that out, even though this task isn’t directly being run, no error.

What appears to be going on is that REXML has an internal class Comment. (I figured this out by just going into my gems directory and doing a grep for Comment in all .rb files).

Ahh, and now I see what I should have done! I needed to write this code as

require 'rexml/document'

namespace :db do
  desc "Delete all unconfirmed users after 1 day"
  task :import_journal_abbrevs => :environment do
    include REXML
...
end

Thanks SOO much! Man these loading bugs are hard to track down.

2 Likes

Wow. I have been following along this whole time, completely baffled why this was having such an effect. What an excellent find. If you require ‘rexml/document’. can you get away with referencing any of the methods it contains long-hand inside your rake task? Also, it’s important to remember that Rake tasks are pretty much like wide-open IRB consoles, they have none of the namespacing that a class would have. What I mean by this is instead of including REXML and then calling method whatever from it, you could use a complete namespaced call to that method:

REXML::Document.new(...).whatever

That way you wouldn’t have to expand those methods in the local context, and they might stay isolated from the rest of your code.

Best wishes, and sorry for your loss.

Walter

2 Likes

Awesome!!!

So, I believe this issue is not exactly related to autoloading. This script reproduces:

module M
  class Comment
  end
end

include M

class Comment < String # superclass mismatch for class Comment
end

I suspect this is either a bug in Ruby, or perhaps some quirk of the special top-level main object. The top-level include is not even the usual Module#include, it is a different method.

I’ll followup if I connect all the dots.

I have opened a ticket in the Ruby issue tracker: https://bugs.ruby-lang.org/issues/18832.

1 Like