Ahm*_*man 6 ruby-on-rails zeitwerk
目前我的目录中有以下文件jobs:
# app/jobs/importer.rb
module Imporer
def self.valid_importers
# Do stuff
end
end
# app/jobs/importer/custom_import_job.rb
class Importer::CustomImportJob < ApplicationJob
def perform
# Do stuff
end
end
Run Code Online (Sandbox Code Playgroud)
使用经典代码加载器可以正常工作,但是当切换到 Zeitwerk 时,我NameError: uninitialized constant Importer::CustomImportJob在运行rails zeitwerk:check.
我尝试移动custom_import_job.rb到该jobs目录,但仍然收到相同的错误。添加app/jobs/importer也config.autoload_paths没有帮助。
文件结构是否有问题,或者我在 Zeitwerk 设置中遗漏了某些内容?
经过一番挖掘后,我意识到我有以下内容development.rb:
Dir[Rails.root.join('app/jobs/importer/*.rb')].each { |f| require f }
Run Code Online (Sandbox Code Playgroud)
看来这就是问题的原因。现在它已被删除,一切都按预期工作!
您可以看看您的应用程序/工作是否在路径中:
ActiveSupport::Dependencies.autoload_paths
Run Code Online (Sandbox Code Playgroud)
如有必要,可通过config.autoload_pathsin进行延长。config/application.rb
更多调试信息:https://guides.rubyonrails.org/autoloading_and_reloading_constants.html#troubleshooting。
希望这些有帮助。
| 归档时间: |
|
| 查看次数: |
6389 次 |
| 最近记录: |