class Producer::Core::ErrorFormatter

Constants

FILTERS

Public Class Methods

new(debug: false) click to toggle source
# File lib/producer/core/error_formatter.rb, line 11
def initialize debug: false
  @debug = debug
end

Public Instance Methods

debug?() click to toggle source
# File lib/producer/core/error_formatter.rb, line 15
def debug?
  !!@debug
end
format(exception) click to toggle source
# File lib/producer/core/error_formatter.rb, line 19
def format exception
  if debug? && exception.cause
    lines = format_exception exception, filter: true
    lines << ''
    lines << 'cause:'
    lines << format_exception(exception.cause, filter: false)
  else
    lines = format_exception exception, filter: !debug?
  end

  lines.join "\n"
end

Private Instance Methods

filter_backtrace(backtrace) click to toggle source
# File lib/producer/core/error_formatter.rb, line 50
def filter_backtrace backtrace
  backtrace.reject do |line|
    FILTERS.any? { |filter| line =~ filter }
  end
end
format_backtrace(backtrace, filter: true) click to toggle source
# File lib/producer/core/error_formatter.rb, line 45
def format_backtrace backtrace, filter: true
  backtrace = filter_backtrace backtrace if filter
  indent_backtrace backtrace
end
format_exception(exception, filter: true) click to toggle source
# File lib/producer/core/error_formatter.rb, line 34
def format_exception exception, filter: true
  [
    format_message(exception),
    *format_backtrace(exception.backtrace, filter: filter)
  ]
end
format_message(exception) click to toggle source
# File lib/producer/core/error_formatter.rb, line 41
def format_message exception
  "#{exception.class.name.split('::').last}: #{exception.message}"
end
indent_backtrace(backtrace) click to toggle source
# File lib/producer/core/error_formatter.rb, line 56
def indent_backtrace backtrace
  backtrace.map { |e| '  ' + e }
end