Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: aaadc81429
Fetching contributors…

Cannot retrieve contributors at this time

63 lines (41 sloc) 1.724 kb



Rainbow extends ruby String class adding methods to wrap the string with ANSI escape codes.


Rainbow adds following methods to String class:

  • foreground(color) (with color and colour aliases)
  • background(color)
  • reset
  • bright
  • italic (not well supported by terminal emulators).
  • underline
  • blink
  • inverse
  • hide.

Each of those methods returns string wrapped with some ANSI codes so you can chain calls as in example above.

Color can be one of following symbols:

:black, :red, :green, :yellow, :blue, :magenta, :cyan, :white, :default

If you have 256-colors capable terminal you can also specify color in RGB which will find the nearest match from 256 colors palette:

"Jolacz".color(115, 23, 98)

It also has Windows support (uses win32console gem if installed, otherwise strings are returned unaltered).

Rainbow can be disabled globally by setting:

Sickill::Rainbow.enabled = false

It will be disabled by default if it detects that STDOUT is not a TTY.


gem install rainbow


require 'rainbow'
puts "this is red".foreground(:red) + " and " + "this on yellow bg".background(:yellow) + " and " + "even bright underlined!".underline.bright

Rails Usage

You're probably wanting to add colour to your logs. To do so you must explicity enable rainbow because it will detect that STDOUT (ie: the log file) is not a TTY. To make things easy, create the file config/initializers/rainbow.rb and include the following:

require 'rainbow'
Sickill::Rainbow.enabled = true
Jump to Line
Something went wrong with that request. Please try again.