来自Crontab的Rake Task?

时间:2011-02-07 15:10:09

标签: ruby-on-rails ruby cron rake crontab

堆栈:

的Apache2

Rails 2.3.8

RedHat Linux

Ruby Enterprise 1.8.7

在我的应用用户的crontab中获得了以下rake任务,这意味着每15分钟将记录拉入数据库表:

*/15 * * * * app_user cd /var/www/apps/my_app/current/ && rake thing:do_stuff RAILS_ENV=production

我可以看到cron守护程序在cron日志中运行此任务,但它应该将记录拉入的数据库表不会更改。当我在/ var / www / apps / my_app / current目录中手动运行它时,此任务正常运行,并按照我的预期将记录拉入表中。

我在crontab中重置了PATH变量以反映使用REE,认为默认路径可能与/ opt / ruby​​-enterprise不一致...

如何让这个rake任务实际上与cron一起运行?

2 个答案:

答案 0 :(得分:10)

0,15,30,45 * * * * /bin/bash -l -c 'cd /var/www/apps/my_app/current && RAILS_ENV=production bundle exec rake thing:do_stuff --silent'

答案 1 :(得分:8)

尝试使用完整路径来搜索二进制文件(在控制台which rake中运行,并用完整路径替换rake)。

例如,如果which rake返回以下路径:

/Users/bob/.rvm/gems/ruby-1.9.3-p194/bin/rake

您应该使用以下命令来运行rake任务:

/Users/bob/.rvm/bin/rvm all do bundle exec rake allocator:snapshot

我更喜欢ruby中的cron作业的宝石

如何检测cron中的任务是否失败?失败时,cron尝试发送电子邮件。因此,您可以配置postfix以使用您的smtp设置(例如来自谷歌),并将仅包含您的电子邮件的文件~/.forward添加到系统中运行该cronjob的用户的主目录。

相关问题