gpt4 book ai didi

ruby-on-rails - Rails 6 ActiveJob 未定义常量 ActionMailer::MailDeliveryJob

转载 作者:行者123 更新时间:2023-12-04 06:32:40 31 4
gpt4 key购买 nike

我正在将应用程序升级到 Rails 6,在修复所有重大更改后,我现在在从后台作业发送电子邮件时遇到错误。

我通过 ActiveJob 使用 Sidekiq,我相信我已经添加了必要的配置更改:

# config/application.rb

...

config.load_defaults 6.0

# config/initializers/new_framework_defaults_6_0.rb

...

Rails.application.config.action_mailer.delivery_job = "ActionMailer::MailDeliveryJob"

我正在使用 deliver_later 发送电子邮件,如: UserMailer.notify(user).deliver_later
一个重要的方面是,即使我收到错误 邮件仍在发送中

错误信息:
NameError:
uninitialized constant ActionMailer::MailDeliveryJob
Did you mean? ActionMailer::DeliveryJob

根据 Rollbar,错误的上下文是 ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper
任何帮助表示赞赏,谢谢!

最佳答案

ActionMailer::MailDeliveryJob是 rails 6 的新功能,以前称为 ActionMailer::DeliveryJob (并且仍然存在于 rails 6 中,但有弃用警告以实现更顺畅的迁移)

看起来您遇到了一种情况,即来自新 rails 的作业最终出现在仍在运行先前版本的 sidekiq 工作器中。
由于电子邮件实际上正在发送 - 很可能您同时拥有两个 rails 版本的工作人员。一些工作人员产生错误并重试作业,直到最终交付的工作人员选择它。

为了防止错误,最好使用 action_mailer.delivery_job = "ActionMailer::DeliveryJob" 进行部署,确保所有工作人员都已升级(=使用新代码重新启动),然后才通过切换到 MailDeliveryJob 来删除弃用警告。 .

关于ruby-on-rails - Rails 6 ActiveJob 未定义常量 ActionMailer::MailDeliveryJob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58306535/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com