我有一个rake任务,用于调用Mailer并通过电子邮件发送满足给定条件的某些用户。但是,当我使用rake nagging_email:send
从控制台调用rake任务时,我得到以下'ArgumentError:没有给出方法名',并且任务没有运行。完整的控制台错误日志可以在这里看到: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任务,获取满足给定条件(懒惰)的所有用户,然后在给定该用户作为参数的情况下调用Mailer:
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任务的帮助。感谢。
答案 0 :(得分:4)
你应该从终端运行rake,而不是rails console。 如果由于某种原因想要从rails控制台执行此操作,则应加载类似
的任务require 'rake'
MyRailsApp::Application.load_tasks
Rake::Task['my_task'].invoke