Crontab + Ruby on Rails:/usr/bin/env:ruby:没有这样的文件或目录

Crontab + Ruby on Rails:/usr/bin/env:ruby:没有这样的文件或目录

我有一个 ruby​​ on Rails 应用程序,我需要为 rake 任务安排一个 crontab。

*/5 * * * * RAILS_ENV=production /usr/local/bin/rake -f /usr/local/www/mysite-web-production/current/Rakefile my_site:export_products >> /var/log/export_feed.log 3>&1

但是,它不起作用(当我手动执行它时它可以工作,但不能作为 crontab)并且它向我显示/usr/bin/env: ruby: No such file or directory.我没有使用RVM。我在 Linux 上使用 ruby​​ 1.9.3 和 Rails 3。

答案1

无论 ruby​​ 在哪里,它都不$PATHcron.ruby通过运行查找实际位置type -a。然后将其路径添加到$PATHcrontab 中的环境变量中。

例如,如果您发现type -a显示的路径ruby/usr/local/bin/ruby(并且根据您的路径判断rake可能是),您的 crontab 应该如下所示:

PATH=$PATH:/usr/local/bin
*/5 * * * * RAILS_ENV=production /usr/local/bin/rake -f /usr/local/www/mysite-web-production/current/Rakefile my_site:export_products >> /var/log/export_feed.log 3>&1

或者可能:

*/5 * * * * RAILS_ENV=production PATH=$PATH:/usr/local/bin /usr/local/bin/rake -f /usr/local/www/mysite-web-production/current/Rakefile my_site:export_products >> /var/log/export_feed.log 3>&1

两者都应该有效。

相关内容