3

私はいつでもgem を rails 3 で使用しています。実稼働サーバー (ubuntu) では、ランナー タスクが実行されません。この github ticketに記載されているように、:set job_templateget に設定してみました。しかし、それは問題を解決しません。-l -i

この特定の製品 ubuntu の問題は、ルビ パスが に存在しないことですecho $PATH

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

ruby パスは /var/rails/myapp/shared/bundle/ruby/1.8/bin です

したがって、手動で crontab ファイルを編集して crontab ファイルに追加 PATH=/var/rails/myapp/shared/bundle/ruby/1.8/bin: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamesすると、ランナー タスクは正しく実行されます。

ただし、デプロイを行うたびに、crontab ファイルを手動で編集して PATH ステートメントを追加する必要があります。

この PATH 行を crontab ファイルにいつでも追加して、展開のたびに手動でこれを行う必要がないようにする方法はありますか?

ありがとう

4

4 に答える 4

3

私はRVMを使用しておらず、config/schedule.rbファイル(宝石関連のコードを書くたびに書く場所)に以下のコードを追加しています。

env :PATH, ENV['PATH']
于 2013-04-15T09:15:20.277 に答える
1

アイドルフィンガーからの答えはほとんど正しいように見えますが、amiからのコメントに基づいて、その行を次のように変更します。

env :PATH, "#{ENV["PATH"]}:/var/rails/myapp/shared/bundle/ruby/1.8/bin"

PATHの環境キーの文字列補間に注意してください。私はこれをテストしていませんが、amiのコメントに基づいて、これはcrontabファイルのパス文字列を期待どおりに完全に拡張するはずです。

于 2011-12-04T19:55:59.223 に答える
1

サーバー上で cron を実行しているユーザーの PATH に /var/rails/myapp/shared/bundle/ruby/1.8/bin を追加すると、それが取得されるはずです。または、いつでも schedule.rb に追加できます。

env :PATH, "$PATH:/var/rails/myapp/shared/bundle/ruby/1.8/bin"

それはうまくいくはずですが、私はそれをテストしていません。

于 2011-04-18T08:41:08.020 に答える
0

PATH ステートメントを crontab ファイルの先頭、開始行の前に追加します。

# BEGIN Whenever generated tasks for:

毎回 crontab ファイルを手動で編集する必要はありません

于 2011-07-02T23:19:12.007 に答える