在一行中编写这个ruby代码的最佳方法

时间:2012-06-20 12:35:29

标签: ruby-on-rails ruby

在一行中编写类似这样的东西的好方法是什么。如果在调试模式下值为nil,则目标是在消息级别记录消息,以及所示的正确消息。看起来很简单,但为这样小的东西编写5行代码一直困扰着我。我可以用方法包装它,但是如果可以的话我想避免。感谢。

if value.nil?
  Rails.logger.info "value: nil"
else
  Rails.logger.debug "value: #{value.inspect}"
end

4 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:0)

value.nil? ? Rails.logger.info "value: nil" : Rails.logger.debug "value: #{value.inspect}"

答案 2 :(得分:0)

value ? Rails.logger.debug("value: #{value.inspect}") : Rails.logger.info("value: nil")

答案 3 :(得分:0)

如果您想要一行,只需删除换行符:

if value.nil? then Rails.logger.info "value: nil" else Rails.logger.debug "value: #{value.inspect}" end

但为什么,为什么,有人想要这样做吗?