3

このようなものを一行で書く良い方法は何ですか。目標は、デバッグ モードで値が nil の場合に情報レベルでメッセージをログに記録し、表示されているような適切なメッセージをログに記録することです。簡単に思えますが、このような小さなものに 5 行のコードを書くのは、私を悩ませ続けます。これをメソッドでラップすることはできますが、できれば避けたいと思います。ありがとう。

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

4 に答える 4

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
于 2012-06-20T12:37:14.350 に答える
0
value.nil? ? Rails.logger.info "value: nil" : Rails.logger.debug "value: #{value.inspect}"
于 2012-06-20T12:38:08.137 に答える
0
value ? Rails.logger.debug("value: #{value.inspect}") : Rails.logger.info("value: nil")
于 2012-06-20T12:38:13.207 に答える
0

1 行で表示する場合は、改行を削除してください。

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

しかし、なぜ、ああ、なぜ、誰かがこれをしたいのでしょうか?

于 2012-06-21T01:26:59.730 に答える