for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
module Rapis
class TermColor
class << self
def green(msg)
colorize 32, msg
end
def yellow(msg)
colorize 33, msg
def red(msg)
colorize 31, msg
def colorize(num, msg)
"\e[#{num}m#{msg}\e[0m"
def self.logger
Rapis::Logger.instance
#
# Default logger
class Logger < Logger
include Singleton
def initialize
super(STDERR)
self.formatter = proc do |_severity, _datetime, _progname, msg|
"#{msg}\n"
self.level = Logger::INFO
def debug(msg, progname = nil, method_name = nil)
super(progname) { { method_name: method_name, message: msg } }
def info(msg)
super { Rapis::TermColor.green(msg) }
def warn(msg)
super { Rapis::TermColor.yellow(msg) }
def fatal(msg)
super { Rapis::TermColor.red(msg) }
def error(msg, backtrace, progname = nil, method_name = nil)
super(progname) do
{ method_name: method_name, message: msg, backtrace: backtrace }