首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生产环境中设计邮件机的Zeitwerk错误

生产环境中设计邮件机的Zeitwerk错误
EN

Stack Overflow用户
提问于 2020-06-27 03:22:31
回答 1查看 1.2K关注 0票数 0

我有Rails 6,我的预览类位于

mailer/previews/devise_mailer_preview.rb

代码语言:javascript
复制
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 :DeviseMailerPreview,但没有(Zeitwerk::NameError)

在此之后,我检查了本地RAILS_ENV=production rails c,并得到了相同的结果。

如果我将DeviseMailerPreview类重命名为Preview::DeviseMailerPreview,它将被破坏,并且我无法看到开发中的电子邮件,因为Rails 6 (相应地将其命名为文档 )完全期望这个名称。

更多的是,我在这篇文章中发现,为了避免ruby的NameError,zeitwerk可以配置autoload_paths param。我发现我有我的config/application.rb

代码语言:javascript
复制
config.load_defaults 6.0

无论如何,我试图在我的config/environments/production.rb文件中添加相同的行,但是没有帮助。

我做错了什么,我该如何解决呢?提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-06-27 03:42:53

您的邮件预览文件位于mailer/previews/devise_mailer_preview.rb中,所以我假设它的完整路径是app/mailer/previews/devise_mailer_preview.rb

医生说

在上面的示例中,UserMailer的预览类应该命名为UserMailerPreview,并位于test/mailers/previews/user_mailer_preview.rb中。

所以把你的devise_mailer_preview.rb文件放到test/mailers/previews/devise_mailer_preview.rb

或者在您的config/application.rb中添加这一行并重新启动:

代码语言:javascript
复制
config.action_mailer.preview_path = "#{Rails.root}/app/mailers/previews"

事实上,答案是在文档本身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62605494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档