2011-02-07 99 views
7

堆棧:來自Crontab的Rake任務?

的Apache2

的Rails 2.3.8

RedHat Linux上

Ruby企業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目錄中手動運行該任務時,該任務正常工作,並按照我的預期將記錄拉入表中。

我重新設置PATH變量在crontab中使用REE反映,想也許默認路徑不會通過/ opt /紅寶石企業牛仔舞......

我如何得到這個rake任務實際運行與cron?

+1

您是否以該用戶身份運行它? sudo su app_user,然後在cron作業中正確運行該命令。如果它像這樣工作,它應該在cron中工作。 – 2011-02-07 18:30:36

回答

8

嘗試使用完整路徑來耙二進制(在控制檯which 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 

,我更喜歡,只要創業板在紅寶石cron作業

如何檢測任務是否在cron中失敗?在失敗cron試圖發送電子郵件。因此,您可以配置postfix以使用您的smtp設置(例如,來自谷歌),並將僅包含您的電子郵件的文件~/.forward添加到系統中正在運行該cronjob的用戶的主目錄。

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'