Без драгоценного камня delayed_job и связанных с ним изменений кода электронные письма правильно обрабатываются через мое приложение.
Следуя руководству по общим проблемам, найденному на вики github для драгоценного камня под заголовком ' задания молча удаляются из базы данных», я сделал следующее:
/config/initializers/delayed_job.rb
Delayed::Worker.destroy_failed_jobs = false
После перезапуска рабочих и сервера rails я попытался снова, но я все еще вижу, что строка delayed_job добавляется, когда я устанавливаю электронную почту для обработки, и после этого быстро удаляется.
Электронная почта вызывается из контроллера следующим образом:
PresentationMailer.delay.presentation_invitation(@presentation)
Из консоли rails (ожидаемо, у меня еще ни разу не было успешного запуска):
1.9.3p194 :001 > Delayed::Job.last
Delayed::Backend::ActiveRecord::Job Load (0.5ms) SELECT `delayed_jobs`.* FROM `delayed_jobs` ORDER BY `delayed_jobs`.`id` DESC LIMIT 1
=> nil
Выдержка из /log/delayed_job.log
2013-08-06T16:30:54+1200: [Worker(delayed_job host:192.168.1.251 pid:26688)] Job Class#presentation_invitation (id=9) RUNNING
2013-08-06T16:30:54+1200: [Worker(delayed_job host:192.168.1.251 pid:26688)] Job Class#presentation_invitation (id=9) COMPLETED after 0.0081
2013-08-06T16:30:54+1200: [Worker(delayed_job host:192.168.1.251 pid:26688)] 1 jobs processed at 9.1940 j/s, 0 failed
Что, кажется, предполагает, что ошибок не возникает; но почта не отправляется (подтверждено с помощью wireshark, пакеты не отправляются на мой SMTP-сервер)
/app/mailers/presentation_mailer.rb
class PresentationMailer < ActionMailer::Base
helper :application
default from: "[email protected]"
def presentation_invitation(email)
return false if email.sent
contact = nil
presentation = nil
if email.emailable.class == PresentationAttendee
contact = email.emailable.contact
presentation = email.emailable.presentation
else
return false
end
ics = RiCal.Event do
description "Presentation"
dtstart DateTime.parse(presentation.date_time)
dtend DateTime.parse((presentation.date_time + 30*60).to_s) # (90 minutes length)
location presentation.presentation_location.to_s
add_attendee contact.email_address
alarm do
description "Presentation"
end
end
attachments["calendar-reminder.ics"] = {mime_type: "text/calendar", content: ics.export}
@email = email
@contact = contact
@presentation = presentation
content_type = "multipart/mixed" # Required for background processing of mail to complete with attachment in tact
mail to: "#{contact.first_name} #{contact.last_name} <#{contact.email_address}>", subject: email.email_content.subject if email.email_content
end
end
Любые идеи о том, как я могу устранить эту проблему?