我正在使用ActionMailer和Resque排队电子邮件。我对这两者都不熟悉,但我有基础知识。现在我正在调试为什么在排队电子邮件时,电子邮件被发送但是没有正文..神秘化。
当我执行ArtistReminderWorker.perform(8,2)
时,电子邮件将与正文一起发送。巨大的成功!
当我执行Resque.enqueue(ArtistReminderWorker, 8, 2)
时,电子邮件将在没有正文的情况下发送。谜。
我认为这两个陈述在功能上是相同的,不是吗?
起初我认为Resque工作者无法查找记录,因此我在mail命令之前将数据库查找从工作者移动到邮件程序中。
这是我的工人和梅勒课程。
artist_reminder_worker.rb
class ArtistReminderWorker
@queue = :artist_reminders_queue
def self.perform(event_id, user_id)
ArtistReminderMailer.artist_reminder_email(event_id, user_id).deliver
end
end
artist_reminder_mailer.rb
class ArtistReminderMailer < ActionMailer::Base
default from: 'no-reply@example.com'
def artist_reminder_email(event_id, user_id)
@user = User.find(user_id)
@event = Event.find(event_id)
@url = dashboard_url
subject = "You have an upcoming gig at #{@event.venue.name}"
mail(to: @user.email, subject: subject)
end
end
我的观点是:
views/artist_reminder_mailer/artist_reminder_email.slim
views/artist_reminder_mailer/artist_reminder_email.text.slim
请提前告知我是否可以提供更多详细信息!
答案 0 :(得分:0)
解决了它。这实际上并不是我做错了什么,而是我在一段时间内没有重新启动工作人员佣金任务。
我想在更新Worker类时,你必须重新启动worker。这是有道理的。