gpt4 book ai didi

ruby-on-rails - 为什么 'logger.debug false' 不打印任何东西?

转载 作者:数据小太阳 更新时间:2023-10-29 07:48:45 24 4
gpt4 key购买 nike

我在使用 bool 表达式时遇到问题,当我执行 logger.debug 时我得到了奇怪的结果,所以我将我的日志记录代码简化为以下内容并且很惊讶没有看到任何“false”被打印出来。

在我的 Controller 中记录代码:

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。我错过了什么吗?

知道为什么它不打印“false”吗?

ruby 版本:1.8.7-p352

rails 版本:2.3.2

最佳答案

Rails Logger 在运行 .to_s 之前在代码中使用了 ||,它因 nil 和 false 而失败。

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/buffered_logger.rb#L65

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)

关于ruby-on-rails - 为什么 'logger.debug false' 不打印任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7066132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com