2009-09-27 20 views
13

Mam małe ramy, które rejestrują niektóre informacje i debugują wiadomości za pomocą obiektu Logger wbudowanego w ruby. W czasie wykonywania działa to świetnie. W czasie testu jednostkowego (używając rspec, jeśli to ma znaczenie ...) chciałbym zrzucić logowane wiadomości do zmiennej łańcuchowej w pamięci. Jaki jest najłatwiejszy sposób na zrobienie tego?Ruby: Wysłać komunikaty rejestratora do zmiennej łańcuchowej?

I rozważa łatkę małpa, która zastąpi informacji i debugowania metod, takich jak to:


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

Czy istnieje lepszy sposób, aby przejść o wysyłanie moje wiadomości dziennika do zmiennej łańcuchowej?

Odpowiedz

29

Zastosowanie 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

prostu usuń nawiasy mieć rubyish styl. – khelll

+2

Usunięto nawiasy. Osobiście wolę używać nawiasów, ale zredagowałem go tak, aby był bardziej spójny ze stylem kodowania używanym w pytaniu. – hrnt

+0

dzięki, hrnt. właśnie tego szukałem! –

Powiązane problemy