SO)でこれを見つけることができなかったことに驚いています。
コンソールに送られるログ出力の文字列の特定のセグメントに色を付けられるようにしたい。だからこのような何か:
"This part of the message in Green: This part in Blue"
おそらく次のように書かれています:
Rails.logger.debug("This part of the message in Green: ".green + "This part in Blue".blue)
基本的には、通常のRubyプログラムの場合と同じように、色のANSIエスケープシーケンスをデバッグ文字列に埋め込むことです。これを行うには、いくつかの方法があります。
Rainbow
gemを使用すると、次のことが可能になります。
require 'Rainbow' Rails.logger.debug(Rainbow("This message is Green").green)
またはrequire
ミックスインを使用して、メソッドを文字列クラスに直接追加します。
require 'Rainbow/ext/string' Rails.logger.debug("This is Green - ".green + "This is Blue".blue)
Rainbow gemは、開始エスケープシーケンスと終了エスケープシーケンスを文字列に自動的に追加します。
colorize
gemを使用します。これは、StringクラスへのRainbowミックスインと同じことを行います。
require 'colorize' Rails.logger.debug("This is Green - ".green + "This is Blue".blue)
次のようなものを使用して、エスケープシーケンスを自分の中に入れます。
Rails.logger.debug("\033[32mThis message is Green\033[0m")
その他のアイデアについては、 Colorized Ruby output
Rails 5 なので、ActiveSupport::LogSubscriber
を介してSQLログの色付けに内部サポートを使用することができます。
logger.debug ActiveSupport::LogSubscriber.new.send(:color, "message", :red)