class Beekeeper::Logger

Public Class Methods

error(error, logger: nil) click to toggle source
# File lib/beekeeper/logger.rb, line 12
def self.error(error, logger: nil)
  message = if error.respond_to? :backtrace
              message_with_backtrace(error)
            else
              error
            end
  internal_logger(logger).error message
end
fatal(error, logger: nil) click to toggle source
# File lib/beekeeper/logger.rb, line 3
def self.fatal(error, logger: nil)
  message = if error.respond_to? :backtrace
              message_with_backtrace(error)
            else
              error
            end
  internal_logger(logger).fatal message
end

Private Class Methods

clean(backtrace) click to toggle source
# File lib/beekeeper/logger.rb, line 28
def self.clean(backtrace)
  bc = ActiveSupport::BacktraceCleaner.new
  bc.add_filter   { |line| line.gsub(Rails.root.to_s, '') } # strip the Rails.root prefix
  bc.add_silencer { |line| line =~ /puma|rubygems|vendor|bin/ } # skip any lines from puma or rubygems
  bc.clean(backtrace).map! { |t| "  #{t}\n" }
end
internal_logger(logger) click to toggle source
# File lib/beekeeper/logger.rb, line 35
def self.internal_logger(logger)
  logger || Rails.logger
end
message_with_backtrace(error) click to toggle source
# File lib/beekeeper/logger.rb, line 23
def self.message_with_backtrace(error)
  trace = clean(error.backtrace)
  "\n#{error.class.name} (#{error.message}):\n#{trace.join}"
end