Я пытаюсь отложить отправку уведомления по электронной почте пользователям после регистрации в моем приложении. Письма отправляются с использованием ActionMailer
, который я называю InitMailer
. Способ, которым я пытаюсь отложить работу, - это использование delayed_job
https://github.com/collectiveidea/delayed_job. Collectidea. Для этого вы можете видеть, что я определяю handle_asynchronously
после определения метода initial_email
:
class InitMailer < ActionMailer::Base
default :from => "info@blahblahblah.com"
def initial_email(user)
@user = user
@url = "http://www.blahblahblah.com"
mail(:to => user.email,
:subject => "Welcome to my website!"
)
end
handle_asynchronously :initial_email
end
Тем не менее, я столкнулся с ошибкой аргумента в моем файле журнала "delayed_job.log"
:
Class#initial_email failed with ArgumentError: wrong number of arguments (1 for 0) - 5
failed attempts
Для вашей информации, электронное письмо отправляется на контроллер через строку:
@user = InitUser.new(params[:init_user])
InitMailer.delay.initial_email(@user)
Кроме того, когда я настраивал свой код без задержки, электронные письма отправлялись без проблем (за исключением того факта, что это замедляло мое приложение в ожидании серверов Gmail)
Где здесь ошибки? Как получить задержанную почту для правильной отправки?