class Qless::FailureFormatter

A helper for formatting failure messages

Constants

Failure
MAX_ERROR_MESSAGE_SIZE

TODO: pull this out into a config option.

Public Class Methods

new() click to toggle source
# File lib/qless/failure_formatter.rb, line 13
def initialize
  @replacements = { Dir.pwd => '.' }
  @replacements[ENV['GEM_HOME']] = '<GEM_HOME>' if ENV.key?('GEM_HOME')
end

Public Instance Methods

format(job, error, lines_to_remove = caller(2)) click to toggle source
# File lib/qless/failure_formatter.rb, line 18
def format(job, error, lines_to_remove = caller(2))
  group = "#{job.klass_name}:#{error.class}"
  message = "#{truncated_message(error)}\n\n" +
    "#{format_failure_backtrace(error.backtrace, lines_to_remove)}"
  Failure.new(group, message)
end

Private Instance Methods

format_failure_backtrace(error_backtrace, lines_to_remove) click to toggle source
# File lib/qless/failure_formatter.rb, line 35
def format_failure_backtrace(error_backtrace, lines_to_remove)
  (error_backtrace - lines_to_remove).map do |line|
    @replacements.reduce(line) do |formatted, (original, new)|
      formatted.sub(original, new)
    end
  end.join("\n")
end
truncated_message(error) click to toggle source
# File lib/qless/failure_formatter.rb, line 29
def truncated_message(error)
  return error.message if error.message.length <= MAX_ERROR_MESSAGE_SIZE
  error.message.slice(0, MAX_ERROR_MESSAGE_SIZE) +
    "\n... (truncated due to length)"
end