Module: NetuitiveRailsAgent::ErrorUtils

Included in:
ErrorTrackerHook, SidekiqTracker::ErrorTracker
Defined in:
lib/netuitive_rails_agent/error_utils.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#interactionObject

Returns the value of attribute interaction.



3
4
5
# File 'lib/netuitive_rails_agent/error_utils.rb', line 3

def interaction
  @interaction
end

Instance Method Details

#handle_error(exception, metrics = [], tags = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/netuitive_rails_agent/error_utils.rb', line 23

def handle_error(exception, metrics = [], tags = {})
  NetuitiveRailsAgent::ErrorLogger.guard('error during handle_error') do
    NetuitiveRailsAgent::NetuitiveLogger.log.debug "received error: #{exception}"
    unless ignored_error?(exception)
      @interaction = NetuitiveRailsAgent::ApiInteraction.new unless @interaction
      NetuitiveRailsAgent::NetuitiveLogger.log.debug "#{exception} wasn't ignored"
      if NetuitiveRailsAgent::ConfigManager.capture_errors
        NetuitiveRailsAgent::NetuitiveLogger.log.debug "sending error: #{exception}"
        @interaction.exception_event(exception, exception.class, tags)
        NetuitiveRailsAgent::NetuitiveLogger.log.debug 'sent error'
      end
      NetuitiveRailsAgent::NetuitiveLogger.log.debug 'sending error metrics'
      metrics.each do |metric|
        @interaction.aggregate_metric(metric.to_s, 1)
        NetuitiveRailsAgent::NetuitiveLogger.log.debug "sent error metric with name: #{metric}"
      end
    end
  end
end

#ignored_error?(exception) ⇒ Boolean

Returns:

  • (Boolean)


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/netuitive_rails_agent/error_utils.rb', line 5

def ignored_error?(exception)
  NetuitiveRailsAgent::ErrorLogger.guard('error during ignored_error?') do
    unless NetuitiveRailsAgent::ConfigManager.ignored_errors.empty?
      NetuitiveRailsAgent::ConfigManager.ignored_errors.each do |name|
        if name.include? '^'
          name.tr!('^', '')
          exception.class.ancestors.each do |ancestor|
            return true if name.casecmp(ancestor.name).zero?
          end
        elsif name.casecmp(exception.class.name).zero?
          return true
        end
      end
    end
  end
  false
end