Rails: Delayed Job -> не забирает поле 'from' при отправке асинхронной почты - PullRequest
3 голосов
/ 30 ноября 2010

Я использую 2.1.1, Rails 3, и у меня очень много времени на получение гема delayed_job.Если я удаляю handle_asynchronously на почтовике, все работает нормально ... но если я возвращаю его обратно, я получаю:

неопределенный метод `name 'для nil: NilClass (где' name 'происходит из @contact.name ..., которая отлично работает, когда handle_asynchronously отключен).

Если я удаляю всю информацию шаблона @contact, я получаю:

"Отправитель (Return-Path, Sender илиС) требуется отправить сообщение "?

Это я что-то делаю не так или какая-то ошибка?Соответствующий код ниже (my@email.here заменен на действительный адрес электронной почты)

class ContactMailer < ActionMailer::Base
  default :from => "my@email.here"  

  def contact_mail(contact)
    @contact = contact
    mail(:to => ENV['MANAGER_EMAIL'], :subject => 'Delayed Job Test', :from => 'my@email.here', :content_type => 'text/plain')
  end

  handle_asynchronously :contact_mail, :run_at => Proc.new { 2.seconds.from_now }
end

Любые предложения очень ценятся.

Ответы [ 3 ]

2 голосов
/ 30 ноября 2010

Попробуйте вызвать метод с фактическим адресом электронной почты:

def contact_mail(contact_email)
  mail(:to => ENV['MANAGER_EMAIL'], :subject => 'Delayed Job Test', :from => contact_email, :content_type => 'text/plain')
end

Это единственное, что я могу придумать, которое может помочь, не увидев ваш реальный код.Ваша ошибка говорит о том, что вы называете имя на нулевом объекте, но я нигде не вижу, где вы звоните .name ...

0 голосов
/ 13 июля 2012

Rails 3 Mailers

Из-за того, как почтовые программы реализованы в Rails 3, нам пришлось немного поработать, чтобы заставить delayed_job работать.

# without delayed_job
Notifier.signup(@user).deliver

# with delayed_job
Notifier.delay.signup(@user)

Удалите .deliverспособ заставить это работать.Это не идеально, но это лучшее, что мы могли бы сделать сейчас

https://github.com/collectiveidea/delayed_job#rails-3-mailers

0 голосов
/ 08 августа 2011

У меня была та же проблема, и я решил ее, удалив эту строку:

default :from => "my@email.here" 

Но я не знаю, почему она вылетела с этой строкой ..

...