Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 来自Crontab的Rake任务?_Ruby On Rails_Ruby_Cron_Rake_Crontab - Fatal编程技术网

Ruby on rails 来自Crontab的Rake任务?

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守护进程正在运行这个任务,但是它应该将记录拉

堆栈:

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守护进程正在运行这个任务,但是它应该将记录拉入的数据库表没有改变。当我在/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'