Планировщик Rufus не входит в производство
-
18-09-2019 - |
Вопрос
Мое приложение 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
до конца процесса и БАХ все работало.