每当cron作业不在rails 3中工作

时间:2011-08-08 10:22:00

标签: ruby-on-rails ruby-on-rails-3 whenever cron-task

这是我的日程安排文件中的代码。我用1分钟来测试它是否有效。

every 1.minutes do
  runner "User.update_all('daily_sms_count' = 0 )"
end
从终端i设置

whenever --set environment=development --update-crontab 1mintesting

问题是什么?

1 个答案:

答案 0 :(得分:6)

您使用的是RVM吗?如果是这样,每当生成如下的crontab条目时:

* * * * * /bin/bash -l -c 
'cd /Users/myuser/Documents/Projects/foo && script/rails runner -e 
development '\''User.update_all("daily_sms_count" = 0 )'\'''

这意味着它不一定会使用你的项目版本的Ruby和相关的gemset,因为它会旋转一个新的bash shell。要使其工作,您需要将适当的.rvmrc文件添加到项目的根文件夹中。这样,生成的crontab条目的cd /Users/myuser/Documents/Projects/foo部分将确保使用适当的RVM设置。只需确保在将.rvmrc文件cd..添加回项目后,使RVM识别您的项目.rvmrc

如果您没有使用RVM,请运行crontab -l,然后复制生成的条目,并从终端运行它以查看它是否运行且没有错误。

如果您使用的是Mac,cron会向您的邮箱发送日志消息,您可以使用mail命令查看它们。

如果这些技巧不起作用,请向我提供有关您的工作环境(操作系统,RVM等)的更多详细信息,以便我可以为您提供更多帮助。