В логере Rails есть метод auto_flushing.Это задерживает запись в журнал до тех пор, пока количество записей не станет таким, как было установлено.Это происходило со времен Rails 2 и предназначено для ускорения процесса за счет остановки постоянной записи на диск под нагрузкой.
Это нормально в большинстве случаев, но у нас есть короткие выполняемые задания, которые никогда не задерживаются достаточно долгочтобы пройти очистку - все ошибки исчезают.
Есть ли способ гарантировать, что журнал очищается при завершении процесса?
EDIT
В конце концов я сделал это (но это очень многословно)
af = Rails.logger.auto_flushing
Rails.logger.auto_flushing = true
Rails.logger.error "my message"
Rails.logger.auto_flushing = af
Это вынуждает сообщение, но потом возвращает автоматическую очистку
Для действительно полного решения поместите это в инициализатор:
class << Rails.logger
def flush_error( message )
Rails.logger.error message
Rails.logger.flush
end
end
Тогда просто используйте метод как и когда ...