1

我正在使用 ActionMailer 和 Resque 对电子邮件进行排队。我对这两个都不是很熟悉,但我已经掌握了基础知识。现在我正在调试为什么在排队电子邮件时,电子邮件已发送但没有正文.. 令人费解。

当我执行ArtistReminderWorker.perform(8,2),电子邮件与正文一起发送。巨大的成功!

当我执行Resque.enqueue(ArtistReminderWorker, 8, 2)电子邮件时,没有正文发送。神秘。

我认为这两个语句在功能上是相同的,不是吗?

起初我认为 Resque 工作人员无法查找记录,因此我将数据库查找从工作人员移到邮件命令之前的邮件程序中。

这是我的 Worker 和 Mailer 课程。

艺术家提醒工人.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

如果我可以提供更多详细信息,请告诉我,提前谢谢!

4

1 回答 1

0

解决了。这实际上并不是我做错了什么,而是我有一段时间没有重新启动 worker rake 任务。

我想在更新 Worker 类时,您必须重新启动 worker .. 有道理。

于 2013-08-14T22:38:09.280 回答