Class: Profiler::Collectors::ExceptionCollector

Inherits:
BaseCollector show all
Defined in:
lib/profiler/collectors/exception_collector.rb

Instance Attribute Summary

Attributes inherited from BaseCollector

#profile

Instance Method Summary collapse

Methods inherited from BaseCollector

descendants, inherited, #initialize, #panel_content, #render_html, #render_mode

Constructor Details

This class inherits a constructor from Profiler::Collectors::BaseCollector

Instance Method Details

#collectObject



41
42
43
44
45
# File 'lib/profiler/collectors/exception_collector.rb', line 41

def collect
  ActiveSupport::Notifications.unsubscribe(@subscriber) if @subscriber

  store_data(@exception_data || {})
end

#has_data?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/profiler/collectors/exception_collector.rb', line 47

def has_data?
  !@exception_data.nil? && !@exception_data.empty?
end

#iconObject



8
9
10
# File 'lib/profiler/collectors/exception_collector.rb', line 8

def icon
  "💥"
end

#nameObject



16
17
18
# File 'lib/profiler/collectors/exception_collector.rb', line 16

def name
  "exception"
end

#priorityObject



12
13
14
# File 'lib/profiler/collectors/exception_collector.rb', line 12

def priority
  5
end

#subscribeObject



31
32
33
34
35
36
37
38
39
# File 'lib/profiler/collectors/exception_collector.rb', line 31

def subscribe
  @exception_data = nil

  @subscriber = ActiveSupport::Notifications.subscribe("process_action.action_controller") do |*args|
    event = ActiveSupport::Notifications::Event.new(*args)
    ex = event.payload[:exception_object]
    capture_exception(ex) if ex && @exception_data.nil?
  end
end

#tab_configObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/profiler/collectors/exception_collector.rb', line 20

def tab_config
  {
    key: "exception",
    label: "Exception",
    icon: icon,
    priority: priority,
    enabled: true,
    default_active: false
  }
end

#toolbar_summaryObject



51
52
53
54
55
# File 'lib/profiler/collectors/exception_collector.rb', line 51

def toolbar_summary
  return { text: "", color: "gray" } unless has_data?

  { text: @exception_data[:exception_class], color: "red" }
end