2013-08-14 2 views
0

Я размещаю электронные письма с помощью ActionMailer и Resque. Я тоже не знаком с этим, но у меня есть основы. Прямо сейчас я отлаживаю, почему при размещении электронной почты отправляется электронное письмо, но нет тела. Мистификация.Тело электронной почты не отправляется с действием Mailer и 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: '[email protected]' 

    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.slimviews/artist_reminder_mailer/artist_reminder_email.text.slim

Позвольте мне K теперь, если я могу предоставить более подробную информацию, спасибо заранее!

+0

Я знаю, что это не прямой ответ, но вы не можете переключиться на DelayedJob? ;) –

+0

:) Желаю. Раньше я использовал DJ, но в этом приложении уже есть пара Resque, которые уже были реализованы. Это разочаровывает, потому что у меня почти идентичный код – manderson

ответ

0

Решено. На самом деле это было не то, что я делал неправильно, а скорее, что я не перезапускал задачу рабочего грабли.

Я думаю, что при обновлении классов Worker вам необходимо перезагрузить рабочего. Делает смысл.

Смежные вопросы