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を使用しています。
Rubyがどこにあっても、それはcron
の$PATH
にはありません。type -a
を実行してRuby
の実際の場所を見つけてください。 crontabの$PATH
環境変数へのパスを追加します。
たとえば、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
どちらも機能するはずです。