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
$PATH
Rubyはどこにいても存在しませんcron
。をruby
実行して実際の場所を見つけますtype -a
。次に、$PATH
crontabの環境変数にパスを追加します。
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
どちらも動作するはずです。