Ruby on rails 为什么不是';t';logger.debug false';打印什么?

Ruby on rails 为什么不是';t';logger.debug false';打印什么?,ruby-on-rails,ruby,ruby-1.8,ruby-on-rails-2,Ruby On Rails,Ruby,Ruby 1.8,Ruby On Rails 2,我的布尔表达式有问题,当我执行logger.debug时,我得到了奇怪的结果,因此我将日志代码简化为以下内容,并惊讶地发现没有打印任何“false” 在我的控制器中记录代码: logger.debug 'true' logger.debug true logger.debug logger.debug 'false' logger.debug false logger.debug logger.debug '1 == 1' logger.debug 1 == 1 logger.debug log

我的布尔表达式有问题,当我执行logger.debug时,我得到了奇怪的结果,因此我将日志代码简化为以下内容,并惊讶地发现没有打印任何“false”

在我的控制器中记录代码:

logger.debug 'true'
logger.debug true
logger.debug
logger.debug 'false'
logger.debug false
logger.debug
logger.debug '1 == 1'
logger.debug 1 == 1
logger.debug
logger.debug '1 == 0'
logger.debug 1 == 0
它打印出以下内容

true
true

false


1 == 1
true

1 == 0
?我希望看到错误。当我在控制台中运行'1==0'或'puts false'时,我得到false。我错过什么了吗

你知道为什么不打印“假”字吗

ruby版本:1.8.7-p352


rails版本:2.3.2

记录器在某个地方有一个条件(
if value
),它失败为nil和false。您需要
logger.debug值。请检查

Rails logger在运行
之前在代码中使用
|
。to _s
,这将失败为nil和false


所以应该是“logger.debug(false).inspect”?我理解正确吗?因为那也不会打印任何东西。没关系。”logger.debug false.inspect'工作正常。括号里有表达式。感谢+1供将来参考“logger.debug((1==0).inspect)”有效。“logger.debug(1==0).to_s”不打印任何内容。如何
logger.debug((1==0).to_s)
def add(severity, message = nil, progname = nil, &block)
  return if @level > severity
  message = (message || (block && block.call) || progname).to_s ## <- this line
  # If a newline is necessary then create a new message ending with a newline.
  # Ensures that the original message is not mutated.
  message = "#{message}\n" unless message[-1] == ?\n
  buffer << message
  auto_flush
  message
end
logger.debug( false.to_s)