Class: YogiBerra::Data

Inherits:
Object
  • Object
show all
Defined in:
lib/yogi_berra/data.rb

Class Method Summary collapse

Class Method Details

.parse_controller(controller) ⇒ Object



45
46
47
48
49
# File 'lib/yogi_berra/data.rb', line 45

def self.parse_controller(controller)
  if controller
    { :action => controller.action_name, :name => controller.controller_name }
  end
end

.parse_exception(notice) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/yogi_berra/data.rb', line 17

def self.parse_exception(notice)
  data_hash = {
    :error_class => "#{notice.exception.class}",
    :project => YogiBerra::Catcher.settings["project"],
    :error_message => notice.respond_to?(:error_message) ? notice.error_message : notice.message
  }
  data_hash[:backtraces] = notice.backtrace
  if notice.backtrace.respond_to?(:lines) && notice.backtrace.lines.any?
    data_hash[:backtraces] = notice.backtrace.lines.collect(&:to_s)
  end
  data_hash[:created_at] = Time.now.utc
  data_hash
end

.parse_session(session) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/yogi_berra/data.rb', line 31

def self.parse_session(session)
  session.inject({}) do |result, element|
    key = element.first
    value = element.last
    if value.respond_to?(:as_json)
      result[key] = value.as_json(:except => ["password"])
    else
      value.delete("password")
      result[key] = value
    end
    result
  end
end

.store!(exception, environment = nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/yogi_berra/data.rb', line 5

def self.store!(exception, environment = nil)
  data = parse_exception(exception)
  if environment
    session = environment.delete(:session)
    data[:session] = parse_session(session) if session
    controller = environment.delete(:controller)
    data[:controller] = parse_controller(controller) if controller
    data.merge!(environment)
  end
  YogiBerra::Catcher.connection["caught_exceptions"].insert(data)
end