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

big*_*ato 5 cron path 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
Run Code Online (Sandbox Code Playgroud)

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

bah*_*mat 4

无论 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
Run Code Online (Sandbox Code Playgroud)

或者可能:

*/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
Run Code Online (Sandbox Code Playgroud)

两者都应该有效。