class Zikrash::ExceptionInfo

Attributes

application_backtrace[RW]
exception_class[RW]
full_backtrace[RW]
message[RW]

Public Class Methods

new(exception) click to toggle source
# File lib/zikrash/exception_info.rb, line 8
def initialize(exception)
  return false unless (exception.respond_to?(:message) && exception.respond_to?(:backtrace))

  self.exception_class = exception.is_a?(Class) ? exception.to_s : exception.class.to_s
  self.message = exception.message
  self.full_backtrace = exception.backtrace
  self.application_backtrace = Rails.backtrace_cleaner.clean(exception.backtrace)

  self
end

Public Instance Methods

data() click to toggle source
# File lib/zikrash/exception_info.rb, line 19
def data
  all_backtrace, relevant_code = backtrace_with_relevant_code
  {
      class: exception_class,
      message: message,
      location: application_backtrace.first,
      full_backtrace: all_backtrace,
      relevant_code: relevant_code
  }
end

Private Instance Methods

backtrace_with_relevant_code() click to toggle source
# File lib/zikrash/exception_info.rb, line 32
def backtrace_with_relevant_code
  relevant_code = {}
  all_backtrace = Rails.backtrace_cleaner.clean(full_backtrace, :all_trace)

  all_backtrace.each_with_index do |backtrace_line, index|
    if application_backtrace.include?(backtrace_line)
      relevant_code[index.to_s] = CodeExtractor.new(backtrace_line).result
    end
  end

  [all_backtrace, relevant_code]
end