2009-09-27 2 views
13

У меня есть небольшая структура, которая регистрирует некоторые сообщения информации и отладки, используя объект Logger, встроенный в ruby. Во время работы это отлично работает. При единичном времени тестирования (с использованием rspec, если это имеет значение ...), я хотел бы сбросить записанные сообщения в строковую переменную в памяти. Каков самый простой способ сделать это?Ruby: отправлять сообщения журнала в строковую переменную?

Я рассматривал обезьяна патч, который бы заменить информацию и отладочные методы, например:


class Logger 
    def info msg 
    $logs = msg 
    super msg 
    end 
end 

есть лучший способ пойти об отправке своих сообщений журнала в строковую переменную?

ответ

29

Использование StringIO

require 'stringio' 
require 'logger' 

strio = StringIO.new 
l = Logger.new strio 
l.warn "whee, i am logging to a string!" 

puts strio.string 
+0

Просто удалите круглые скобки, чтобы иметь rubyish стиль. – khelll

+2

Скобки удалены. Лично я предпочитаю использовать скобки, но я ее отредактировал, чтобы быть более совместимым с стилем кодирования, используемым в вопросе. – hrnt

+0

спасибо, hrnt. это именно то, что я искал! –

Смежные вопросы