4

これは私のスケジュール ファイルのコードです。動作するかどうかをテストするためだけに 1 分を使用しています。

every 1.minutes do
  runner "User.update_all('daily_sms_count' = 0 )"
end

ターミナル i セットアップから

whenever --set environment=development --update-crontab 1mintesting

問題は何ですか?

4

1 に答える 1

6

RVMを使用していますか?その場合、Whenever は次のような crontab エントリを生成します。

* * * * * /bin/bash -l -c 
'cd /Users/myuser/Documents/Projects/foo && script/rails runner -e 
development '\''User.update_all("daily_sms_count" = 0 )'\'''

これは、新しい bash シェルをスピンオフするときに、必ずしもプロジェクトのバージョンの Ruby と関連する gemset を使用するとは限らないことを意味します。これを機能させるには、適切な.rvmrcファイルをプロジェクトのルート フォルダーに追加する必要があります。このようにしてcd /Users/myuser/Documents/Projects/foo、生成された crontab エントリの一部により、適切な RVM 設定が使用されることが保証されます。.rvmrcファイルを追加するときはcd..、プロジェクトに戻って、RVM がプロジェクトの.rvmrc.

RVM を使用していない場合は、 を実行crontab -lして、生成されたエントリをコピーし、ターミナルから実行して、エラーが発生しないかどうかを確認します。

Mac を使用している場合、cronはログ メッセージをメールボックスに送信し、mailコマンドを使用してそれらを表示できます。

これらのトリックがうまくいかない場合は、作業環境 (OS、RVM など) について詳しく教えてください。

于 2011-08-08T12:40:30.220 に答える