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

Moh*_*ain 4 ruby-on-rails whenever cron-task ruby-on-rails-3

这是我的日程表文件中的代码.我用1分钟来测试它是否正常工作.

every 1.minutes do
  runner "User.update_all('daily_sms_count' = 0 )"
end
Run Code Online (Sandbox Code Playgroud)

从终端i设置

whenever --set environment=development --update-crontab 1mintesting
Run Code Online (Sandbox Code Playgroud)

问题是什么?

Lam*_*bda 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 )'\'''
Run Code Online (Sandbox Code Playgroud)

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

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

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

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