【发布时间】:2013-10-06 14:26:59
【问题描述】:
我准备了一个在 Amazon EC2 上测试 CRON 作业的简单任务:
schedule.rb
set :output, "/home/a/b/current/log/cron_log.log"
every 5.minutes do
#command "/usr/bin/some_great_command"
#runner "MyModel.some_method"
#rake "some:great:rake:task"
puts "It's working !!!"
runner "User.grab_first_user", :environment => 'development'
runner "User.grab_first_user", :environment => 'production'
end
用户.rb
def self.grab_first_user
user = User.first
puts user.inspect
if user
NotificationMailer.send_info(user.email).deliver
end
end
notification_mailer.rb
def send_info(user_email)
@user_email = user_email
mail(:to => 'my@emaill.com', :subject => "[CRON Test]")
end
def send_info(user_email)
@user_email = user_email
mail(:to => 'my@emaill.com', :subject => "[CRON Test]")
end
当我检查crontab 文件时,我看到了这个 CRON 任务,但从未发送过电子邮件 - 从未调用过该方法。
当我手动调用该方法时,一切正常(电子邮件也已发送),但 CRON 从未调用该方法。
我错过了什么吗?
【问题讨论】:
-
很可能您还没有将任务写入 cron。你完成
bundle exec whenever -w了吗? -
可能是cron守护进程没有启动。
-
kobaltz- 是的,这行得通。 -
Kevin- 我该如何启动它?以及如何检查 cron 守护进程是否正在运行?
标签: ruby-on-rails ruby amazon-ec2 cron whenever