Class: ExceptionHandler::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/exception_handler/parser.rb

Overview

Parse

Instance Method Summary collapse

Constructor Details

#initialize(exception, request, controller) ⇒ Parser

Init



38
39
40
# File 'lib/exception_handler/parser.rb', line 38

def initialize(exception, request, controller)
  @exception, @request, @controller = exception, request, controller
end

Instance Method Details

#log(info) ⇒ Object

Log



80
81
82
83
84
# File 'lib/exception_handler/parser.rb', line 80

def log(info)
  message = "#{info[:class_name]} (#{info[:message]}):\n "
  message += Rails.backtrace_cleaner.clean(info[:trace].split("\n")).join("\n")
  Rails.logger.fatal(message)
end

#relevant_info(info = {}) ⇒ Object

Info



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/exception_handler/parser.rb', line 51

def relevant_info(info = {})
  info[:class_name]  = @exception.class.to_s
  info[:message]     = @exception.to_s
  info[:trace]     = @exception.backtrace.join("\n")
  info[:target_url]  = @request.url
  info[:referer_url]   = @request.referer
  info[:params]    = @request.params.inspect
  info[:user_agent]  = @request.user_agent
  if user
    info[:usable_type]  = user[:type]
    info[:usable_id]  = user[:id]
  end
  return info
end

#saveObject

Save



43
44
45
46
47
48
# File 'lib/exception_handler/parser.rb', line 43

def save
  ActiveRecord::Base.logger.silence do
    ExceptionHandler::Error.create(relevant_info)
  end
    log(relevant_info)
end

#user(data = {}) ⇒ Object

User



67
68
69
70
71
72
73
74
75
76
77
# File 'lib/exception_handler/parser.rb', line 67

def user(data = {})
  # => refer to Joe's if want to find admin / user

  if(@controller.respond_to?("current_user"))
    user = @controller.send("current_user")
    [:id].each do |field|
      data[:id] = user.send(field)   if user.respond_to?(field)
      data[:type] = "user"       if @controller.respond_to?("current_user")
    end
  end
  return data
end