每当rails gem不与cronjob一起使用时..为什么?

时间:2013-01-31 23:08:25

标签: ruby-on-rails cron crontab whenever

我正在使用Whenever gem with rails。由于某种原因,第一个cronjob不起作用。如果我手动将命令粘贴到shell中,它可以正常工作。

第二个“touch testing123.txt”也可以正常使用。

我不知道为什么GiftPackage.do_scheduled_deliveries rails方法没有运行。我现在真的很茫然..任何帮助都将不胜感激!

# Begin Whenever generated tasks for: /var/www/mysite/releases/20130131200554/config/schedule.rb
*/1 * * * * /bin/bash -l -c 'cd /var/www/mysite/releases/20130131200554 && script/rails runner -e staging '\''GiftPackage.do_scheduled_deliveries'\'''
*/1 * * * * /bin/bash -l -c 'cd /var/www/mysite/releases/20130131200554 && touch testing123.txt'
# End Whenever generated tasks for: /var/www/mysite/releases/20130131200554/config/schedule.rb

谢谢! :)

2 个答案:

答案 0 :(得分:0)

您很可能在应用程序内部收到错误。

第一步是,使用登台环境在控制台中运行任务。

其次是检查cron日志并查看它是否输出任何错误。

您可以通过将以下内容添加到schedule.rb文件中来设置记录输出的时间;

set :output, "/[path to log]/cron.log"

这可以帮助您更接近找到解决方案。

答案 1 :(得分:0)

尝试在作业之前设置PATH变量,您的cron可能无法找到ruby:

例如:

PATH=/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/ruby-1.9.3-p194@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/$
# Begin Whenever generated tasks for: /var/www/mysite/releases/20130131200554/config/schedule.rb
*/1 * * * * /bin/bash -l -c 'cd /var/www/mysite/releases/20130131200554 && script/rails runner -e staging '\''GiftPackage.do_scheduled_deliveries'\'''
*/1 * * * * /bin/bash -l -c 'cd /var/www/mysite/releases/20130131200554 && touch testing123.txt'
# End Whenever generated tasks for: /var/www/mysite/releases/20130131200554/config/schedule.rb