Вопрос

Мое приложение 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 установлено значение «производство», сообщения внутри блока cron вообще не регистрируются.

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

Это было полезно?

Решение

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

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

logger.flush 

до конца процесса и БАХ все работало.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top