我有 Rails 6,我的预览课位于
mailer/previews/devise_mailer_preview.rb:
class DeviseMailerPreview < ActionMailer::Preview
...
end
当我在本地运行应用程序时,一切正常,我可以在http://localhost:3000/rails/mailers/devise_mailer/confirmation_instructions
地址上看到我的电子邮件预览。但是现在我尝试在服务器上部署应用程序,发现运行时bundle exec rails c production
出现错误:
/home/deploy/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader/callbacks.rb:17:in `on_file_autoloaded': 预期文件 /home/deploy/project/releases/20200627024908/app/mailer/previews/devise_mailer_preview.rb 定义常量 Previews::DeviseMailerPreview,但没有(Zeitwerk::NameError)
之后,我在本地检查过RAILS_ENV=production rails c
,并且得到了相同的结果。
如果我将 DeviseMailerPreview 类重命名为 Previews::DeviseMailerPreview,它将被破坏并且我看不到开发中的电子邮件,因为 Rails 6 与docs相对应,期望正是该名称。
更重要的是,我在这篇文章中发现,可以使用参数配置 zeitwerkautoload_paths
以避免 ruby 的 NameError。我发现我有我的config/application.rb:
config.load_defaults 6.0
无论如何,我尝试在我的config/environments/production.rb文件中添加相同的行,但它没有帮助。
我做错了什么,我该如何解决?提前致谢!