メーラーを呼び出し、特定の条件を満たす特定のユーザーにメールを送信するためのレーキ タスクがあります。しかし、コンソールからrakeタスクを呼び出すとrake nagging_email:send
、次の「ArgumentError: no method name given」が表示され、タスクが実行されません。完全なコンソール エラー ログは、 https ://gist.github.com/srt32/6433024 で確認できます。
次のようにメーラーを設定しています。
class WorkoutMailer < ActionMailer::Base
def nagging_email(user)
@user = user
subject = "What have you done today?"
@url = 'http://frozen-taiga-7141.herokuapp.com/members/sign_in'
mail to: @user.email,
subject: subject.to_s
end
end
次に、次の rake タスクは、特定の条件 (遅延) を満たすすべてのユーザーを取得し、そのユーザーをパラメーターとして指定してメーラーを呼び出します。
namespace :nagging_email do
desc "send nagging email to lazy users"
task :send => :environment do
daily_nag
end
def daily_nag
users = User.all
users.each do |user|
unless last_workout(user) == Date.today
WorkoutMailer.nagging_email(user).deliver
end
end
end
def last_workout(user)
user = user
last_workout = user.workouts.order("date DESC").limit(1)
last_workout_date = last_workout.date
return last_workout_date
end
end
この rake タスクを実行する方法を理解しようとする助けをいただければ幸いです。ありがとう。