ruby-on-rails - 在一行中编写此 ruby​​ 代码的最佳方式

标签 ruby-on-rails ruby

什么是在一行中写这样的东西的好方法。目标是在 Debug模式下如果值为 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

关于ruby-on-rails - 在一行中编写此 ruby​​ 代码的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11119682/

相关文章:

regex - 我们可以创建一个正则表达式来匹配这个列表中的每个创始人吗?

ruby-on-rails - 如何覆盖 gem 的常量? (Rails 上的 ruby )

ruby-on-rails - 使用工厂测试时,如何避免脏对象和回调功能?

ruby-on-rails - 捆绑安装错误 : Source does not contain any versions of

ruby-on-rails - 如何添加onchange事件以选择Rails中的标签

ruby-on-rails - Rails 3 中的自引用模型

ruby-on-rails - Rails复选框AJAX调用,不想呈现任何内容

ruby-on-rails - Ruby omniauth-oauth2 - A Errno::ENETUNREACH - 网络无法访问 - 连接(2)

ruby - 在多个上下文之间传递变量的 rspec 方法

ruby 救援常失踪?