Ruby on rails 来自Crontab的Rake任务?
堆栈: Apache2 轨道2.3.8 RedHat Linux Ruby Enterprise 1.8.7 在我的应用程序用户的crontab中获得了以下rake任务,即每隔15分钟将记录拉入数据库表:Ruby on rails 来自Crontab的Rake任务?,ruby-on-rails,ruby,cron,rake,crontab,Ruby On Rails,Ruby,Cron,Rake,Crontab,堆栈: Apache2 轨道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守护进程正在运行这个任务,但是它应该将记录拉
*/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运行?尝试使用完整路径来rake二进制文件(在控制台
中运行哪个rake
并用完整路径替换rake)
例如,如果哪个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设置(例如,从google),并将仅包含您的电子邮件的文件
~/.forward
添加到系统中运行该cronjob的用户的主目录中。您是否也以该用户的身份运行该文件?sudo su app_user,然后完全按照cron作业中的方式运行命令。如果它是这样工作的话,它应该在cron中工作。
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'