Pergunta

I'm queuing up emails using ActionMailer and Resque. I'm not that familiar with either, but I have the basics down. Right now I'm debugging why when enqueueing emails, the email is sent but there is no body.. Mystifying.

When I execute ArtistReminderWorker.perform(8,2) the email is sent with the body. Great success!

When I execute Resque.enqueue(ArtistReminderWorker, 8, 2) the email is sent without the body. Mystery.

I thought these two statements were functionally the same, no?

At first I thought that the Resque worker wasn't able to look up the record, so I moved the database lookup from the worker into the mailer right before the mail command.

Here are my Worker and Mailer classes.

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

My views are:
views/artist_reminder_mailer/artist_reminder_email.slim views/artist_reminder_mailer/artist_reminder_email.text.slim

Let me know if I can provide any more detail, thanks in advance!

Foi útil?

Solução

Solved it. It wasn't actually anything I was doing wrong, but rather that I hadn't restarted the worker rake task in a while.

I guess when updating the Worker classes, you have to restart the worker.. Makes sense.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top