class Errordite::Serializer

Constants

SPECIAL_CONTEXT_ATTRIBUTES

Attributes

context[R]
exception[R]

Public Class Methods

new(exception, context = {}) click to toggle source
# File lib/errordite/serializer.rb, line 9
def initialize(exception, context = {})
  @exception = exception
  @context = context
end

Public Instance Methods

as_json() click to toggle source
# File lib/errordite/serializer.rb, line 14
def as_json
  special_attributes.merge(
    "Token" => Errordite.api_token,
    "TimestampUtc" => Time.now.strftime("%Y-%m-%d %H:%M:%S"),
    "ExceptionInfo" => {
      "Source" => source,
      "Message" => exception.message,
      "MethodName" => method_name,
      "ExceptionType" => exception.class.name,
      "StackTrace" => stack_trace,
      "Data" => exception_data
    }
  )
end
to_json() click to toggle source
# File lib/errordite/serializer.rb, line 29
def to_json
  JSON.dump(as_json)
end

Private Instance Methods

exception_data() click to toggle source
# File lib/errordite/serializer.rb, line 39
def exception_data
  Hash[context.reject {|k, v| SPECIAL_CONTEXT_ATTRIBUTES.include?(k) }]
end
method_name() click to toggle source
# File lib/errordite/serializer.rb, line 55
def method_name
  split_first_line && split_first_line[3]
end
source() click to toggle source
# File lib/errordite/serializer.rb, line 51
def source
  split_first_line && split_first_line[1]
end
special_attributes() click to toggle source
# File lib/errordite/serializer.rb, line 35
def special_attributes
  Hash[context.select {|k, v| SPECIAL_CONTEXT_ATTRIBUTES.include?(k) }]
end
split_first_line() click to toggle source
# File lib/errordite/serializer.rb, line 59
def split_first_line
  @split_first_line ||= exception.backtrace && exception.backtrace[0] && exception.backtrace[0].match(/^(.*?)(?:\:(\d+))(?:\:in `(.*)')?$/)
end
stack_trace() click to toggle source
# File lib/errordite/serializer.rb, line 47
def stack_trace
  exception.backtrace && exception.backtrace.join("\n")
end
timestamp() click to toggle source
# File lib/errordite/serializer.rb, line 43
def timestamp
  Time.now.strftime("%Y-%m-%d %H:%M:%S")
end