2

私の Rails アプリは、初期化子で rufus-scheduler を使用してプロセスを開始します。以下は、イニシャライザのコードの簡素化されたバージョンです。

# config.logger isn't available here, so we have to grab it from the Rails object
logger = RAILS_DEFAULT_LOGGER

logger.warn(Time.now.to_s + ": Starting Rufus Scheduler")

# run every Wednesday at 10 AM 
cron_string = '0 10 * * 3'

scheduler = Rufus::Scheduler.start_new
scheduler.cron cron_string do
  logger.warn(Time.now.to_s + ": Starting Background Process")
  (do work here)
  logger.warn(Time.now.to_s + ": Finished Background Process")
end

logger.warn(Time.now.to_s + ": Rufus Scheduler set Background Process to run with the following cron string: [#{cron_string}]")

すべての環境で、コードはチャンピオンのように実行されます。populate プロセスはその役割を果たし、正常に終了します。ただし、問題はロギングにあります。RAILS_ENV が「production」に設定されている場合、cron ブロック内のメッセージはまったくログに記録されません。

Passenger 2.2.9 と Rails 2.3.5 を使用しています。これら 2 つの原因のいずれかが、プロセスのログ記録を妨げていると考えられます。誰がそれが何であるか、そしてそれを本番環境にログインさせる方法を教えてもらえますか?

4

1 に答える 1

3

OK、この記事のおかげで問題が見つかりました: http://earcode.com/blog/2009/05/rails_script_runner_logging_cron.html

ロガーは本番環境では自動フラッシュされないことがわかりました。だから、私はちょうど追加しました

logger.flush 

プロセスの最後まで、すべてが機能しました。

于 2010-02-05T21:38:42.120 に答える