アプリへのサインアップ時にユーザーに送信される通知メールを遅らせようとしています。電子メールは、ActionMailer
私が呼び出すを使用して送信されますInitMailer
。私がジョブを遅らせようとしている方法は、collectiveidea のdelayed_job
https://github.com/collectiveidea/delayed_jobを使用することです。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 サーバーを待っているアプリの速度が低下したという事実を除いて)。
ここでエラーの原因はどこにありますか? 遅延メールを正しく送信するにはどうすればよいですか?