Все эти методы прекрасно работают в методе разрыва:
self.passed?
self.class.name
self.method_name
Таким образом, в настройках вы можете сохранить старый регистратор и создать новый, который будет записывать в строковый буфер:
@old_logger = Rails.logger
@old_ar_logger = ActiveRecord::Base.logger
@current_buffer = StringIO.new
Rails.logger = Logger.new(@current_buffer)
ActiveRecord::Base.logger = Rails.logger
А в демонтаже, сбросить регистраторы, тест на пройденный?и дамп буферизованного журнала в случае, если это не так:
Rails.logger = @old_logger
ActiveRecord::Base.logger = @old_ar_logger
unless self.passed?
@current_buffer.close_write
STDOUT << @current_buffer.string
@current_buffer.close
end
Это прекрасно работает для меня.Просто знайте, что если у вас есть бесконечный цикл или что-то подобное, вы не заметите это так просто.