Rufus планировщик не входит в производство - PullRequest
2 голосов
/ 06 февраля 2010

Мое приложение 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}]")

Во всех средах код работает как чемпион. Процесс заселения делает свое дело и завершается изящно. Проблема, однако, заключается в регистрации. Когда RAILS_ENV установлен в «production», сообщения внутри блока cron не регистрируются вообще.

Я использую Passenger 2.2.9 и Rails 2.3.5. Я полагаю, что одна из этих двух вещей - предотвращение регистрации процесса. Может кто-нибудь сказать мне, что это и как заставить его войти в производство?

1 Ответ

3 голосов
/ 06 февраля 2010

ОК, обнаружена проблема, благодаря этой статье: http://earthcode.com/blog/2009/05/rails_script_runner_logging_cron.html

Оказывается, регистратор не будет автоматически очищаться при производстве. Итак, я только что добавил

logger.flush 

до конца процесса и взрыва все работало.

...