Ruby on Rails - Как печатать сообщения журнала в цвете

Я удивлен, что уже не смог найти это на 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)

Ответ 1

В основном то, что вы хотите сделать, это встраивать escape-последовательности ANSI для цвета в ваши строки отладки, как и в обычной рубиновой программе. Существует несколько способов сделать это:

  • Используйте rainbow gem, который позволяет вам сделать это:

    require 'rainbow' Rails.logger.debug(Rainbow("This message is Green").green)

    или require mixin для добавления методов непосредственно к классу строк:

    require 'rainbow/ext/string' Rails.logger.debug("This is Green - ".green + "This is Blue".blue)

    Драгоценный камень Rainbow автоматически добавит начальную и конечную escape-последовательности в строку.

  • Используйте драгоценный камень colorize, который делает то же самое, что и радужный mixin, в класс String:

    require 'colorize' Rails.logger.debug("This is Green - ".green + "This is Blue".blue)

  • Поместите escape-последовательности в себя, используя что-то вроде этого:

    Rails.logger.debug("\033[32mThis message is Green\033[0m")

  • Напишите собственное расширение для класса String. См. этот ответ или этот ответ для примера.

Дополнительные идеи см. в Раскрашенный вывод Ruby