Rails 5 deliver_later 不发送内容更新的邮件

Rails 5 deliver_later not sending mails with updated content

我已经使用 sidekiq 进行 actionmailer 投递工作。我需要在订阅 30 分钟后向用户发送 thanks mail

@user = User.new(user_params)
if @user.save
UserMailer.thanks_mail(@user).deliver_later!(wait: 30 minutes)
end

现在我已经更改了 thanks_mail.html.erb 文件中感谢邮件的内容。

当我立即发送订阅邮件时:

UserMailer.thanks_mail(@user).deliver_now

已使用更新的内容触发邮件。[​​=17=]

当我延迟 30 分钟发送订阅邮件时:

UserMailer.thanks_mail(@user).deliver_later!(wait: 30 minutes)

邮件是用旧内容发送的。谁能帮我解决这个问题?

您需要重启sidekiq。查看此线程 here

  1. 使用ps -ef | grep sidekiq查找pid
  2. 创建一个文件(例如,sidekiq.pid),其中唯一的内容就是您刚刚找到的 pid
  3. sidekiqctl stop <pidfile_name>
  4. 以后启动sidekiq时使用-P <pidfile_name>--pidfile <pidfile_name>