【发布时间】:2015-10-01 09:35:12
【问题描述】:
我有一个基本的导轨设置并使用可确认模块进行设计。
我已经覆盖了send_devise_notification 以使用ActionMailer,它使用ActiveJob 进行交付。
在我的环境配置中,我设置了config.active_job.queue_adapter = :sidekiq,以便我所有的 ActiveJobs 都在 sidekiq 上运行。
def send_devise_notification(notification, *args)
devise_mailer.send(notification, self, *args).deliver_later
end
不幸的是,sidekiq 似乎太快了,并试图在数据库事务完成之前发送邮件,因此遇到了Account with id = ... not found。显然,Sidekiq 重试了这项工作,并且在某个时候成功了。
任何有相同问题或想法的人如何解决这个问题? deliver_later 的 wait 选项是不行的。
【问题讨论】:
-
仅供通过搜索来到这里的人参考。这已在设计#4.1.0 中修复
标签: ruby-on-rails devise actionmailer sidekiq rails-activejob