电子邮件正文不通过Actionmailer和Rescue发送

时间:2013-08-14 17:03:07

标签: ruby-on-rails ruby-on-rails-3 actionmailer resque

我正在使用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

请提前告知我是否可以提供更多详细信息!

1 个答案:

答案 0 :(得分:0)

解决了它。这实际上并不是我做错了什么,而是我在一段时间内没有重新启动工作人员佣金任务。

我想在更新Worker类时,你必须重新启动worker。这是有道理的。