如何定义 rails 常量 Mailer::ApplicationMailer for Heroku 部署?



我有一个 rails 应用程序崩溃,因为ActionMailer常量显然不存在或其他东西,但它确实存在。 这是我的Heroku日志:

2020-06-02T14:54:19.581698+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=beulah-ror-portfolio-1.herokuapp.com request_id=730c40fd-29b8-45f6-ac94-98839a66611a fwd="105.112.46.202" dyno= connect= service= status=503 bytes= protocol=http
2020-06-02T14:54:21.801858+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=beulah-ror-portfolio-1.herokuapp.com request_id=fe307ff5-6d4f-4305-a74d-54afeb92e3d6 fwd="105.112.46.202" dyno= connect= service= status=503 bytes= protocol=http
2020-06-02T14:54:35.626782+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=beulah-ror-portfolio-1.herokuapp.com request_id=ef7cd106-36d2-4a6e-93e3-aea874aa2c4d fwd="102.67.23.174" dyno= connect= service= status=503 bytes= protocol=http
2020-06-02T14:54:36.594530+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=beulah-ror-portfolio-1.herokuapp.com request_id=e6a8e65b-8aba-4165-aad8-890a2f505e82 fwd="102.67.23.174" dyno= connect= service= status=503 bytes= protocol=http
2020-06-02T14:56:05.955005+00:00 app[api]: Starting process with command `rails c` by user akibeulah@gmail.com
2020-06-02T14:56:20.095915+00:00 heroku[run.6268]: State changed from starting to up
2020-06-02T14:56:20.269238+00:00 heroku[run.6268]: Awaiting client
2020-06-02T14:56:20.298273+00:00 heroku[run.6268]: Starting process with command `rails c`
2020-06-02T14:56:30.227209+00:00 heroku[run.6268]: Process exited with status 1
2020-06-02T14:56:30.288477+00:00 heroku[run.6268]: State changed from up to complete

以下是控制台的输出:

1: from /app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/kernel.rb:17:in `block in require'
/app/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.3.0/lib/zeitwerk/loader/callbacks.rb:17:in `on_file_autoloaded': expected file /app/app/models/mailers/application_mailer.rb to define constant Mailers::ApplicationMailer, but didn't (Zeitwerk::NameError)

所以我的想法是应用程序邮件程序没有正确生成,所以我重新生成了它。它仍然没有用。我正在考虑完全删除邮件程序,因为我目前并没有真正使用它。但是,我想知道万一错误在另一个项目中重复出现。

这是我的应用程序邮件:

class ApplicationMailer < ActionMailer::Base
default from: 'from@example.com'
layout 'mailer'
end

在这一点上,我相信有些事情我不明白。除了 application_mailer.rb 之外,还有什么可能导致此错误?

我已经尝试重新启动 Heroku 应用程序并迁移数据库......还是没有。

您需要将ApplicationMailer包装在Mailers命名空间 - module 中。

module Mailers
class ApplicationMailer < ActionMailer::Base
default from: 'from@example.com'
layout 'mailer'
end
end

这至少基本上是错误消息"/mailers/application_mailer.rb 以定义常量 Mailers::ApplicationMailer"试图告诉您的。

但是,我有点困惑您的mailers目录嵌套在app/models中 - 我希望它处于app/mailers

因此,也许最好尝试将mailers目录移出models,并尝试不将其包装在模块中。

相关内容

  • 没有找到相关文章

最新更新