Ответ 1
Используйте StringIO
require 'stringio'
require 'logger'
strio = StringIO.new
l = Logger.new strio
l.warn "whee, i am logging to a string!"
puts strio.string
У меня есть небольшая структура, которая регистрирует некоторые сообщения информации и отладки, используя объект Logger, встроенный в ruby. Во время работы это отлично работает. В unit test время (с помощью rspec, если это важно...) Я хотел бы сбросить записанные сообщения в переменную строки памяти. Какой самый простой способ сделать это?
Я рассматривал патч обезьяны, который заменил бы методы информации и отладки, например:
class Logger
def info msg
$logs = msg
super msg
end
end
есть ли лучший способ отправить мои сообщения журнала на строковую переменную?
Используйте StringIO
require 'stringio'
require 'logger'
strio = StringIO.new
l = Logger.new strio
l.warn "whee, i am logging to a string!"
puts strio.string