Ruby:向字符串变量发送记录器消息?
我有一个小框架,它使用ruby中内置的Logger对象记录一些信息和调试消息。在运行时,这非常有效。在单元测试时(如果重要的话,使用rspec…),我希望将记录的消息转储到内存中的字符串变量中。做这件事最简单的方法是什么 我正在考虑一个monkey补丁,它将取代info和debug方法,如下所示:Ruby:向字符串变量发送记录器消息?,ruby,rspec,logging,Ruby,Rspec,Logging,我有一个小框架,它使用ruby中内置的Logger对象记录一些信息和调试消息。在运行时,这非常有效。在单元测试时(如果重要的话,使用rspec…),我希望将记录的消息转储到内存中的字符串变量中。做这件事最简单的方法是什么 我正在考虑一个monkey补丁,它将取代info和debug方法,如下所示: class Logger def info msg $logs = msg super msg end end 是否有更好的方法将日志消息发送到字符串变量?使用String
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
只需删除括号,即可获得rubyish样式。删除括号。就我个人而言,我更喜欢使用括号,但我对其进行了编辑,使其与问题中使用的编码风格更加一致。FWIW,大量ruby开发人员在方法调用和定义中都将参数列表括在括号中。它不亚于“rubysh”,而且通常使代码更易于阅读。