什么是在一行中写这样的东西的好方法。目标是在调试模式下如果值为 nil 则在信息级别记录消息,以及显示的正确消息。看起来很简单,但是为这样的小东西写 5 行代码一直困扰着我。我可以将其包装在方法中,但如果可以的话,我想避免。谢谢。
if value.nil?
Rails.logger.info "value: nil"
else
Rails.logger.debug "value: #{value.inspect}"
end
什么是在一行中写这样的东西的好方法。目标是在调试模式下如果值为 nil 则在信息级别记录消息,以及显示的正确消息。看起来很简单,但是为这样的小东西写 5 行代码一直困扰着我。我可以将其包装在方法中,但如果可以的话,我想避免。谢谢。
if value.nil?
Rails.logger.info "value: nil"
else
Rails.logger.debug "value: #{value.inspect}"
end
value.nil? ? (Rails.logger.info "value: nil") : (Rails.logger.debug "value: #{value.inspect}")
您可以尝试的另一种方法(这不一样,但相似):
Rails.logger.send (value.nil? ? :info : :debug), "value: #{value.inspect}"
但我认为最好的方法是编写自己的记录器,它会自动决定哪个变量写入哪个流:
NullLogger.log value
value.nil? ? Rails.logger.info "value: nil" : Rails.logger.debug "value: #{value.inspect}"
value ? Rails.logger.debug("value: #{value.inspect}") : Rails.logger.info("value: nil")
如果你想在一行中,只需删除换行符:
if value.nil? then Rails.logger.info "value: nil" else Rails.logger.debug "value: #{value.inspect}" end
但是为什么,哦,为什么,会有人想要这样做吗?