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 directoryRVMを使用しないことを示すメッセージが表示されます。私はLinuxでRuby 1.9.3とRails 3を使用しています。

ベストアンサー1

$PATHRubyはどこにいても存在しませんcron。を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

どちらも動作するはずです。

おすすめ記事