Class: Sentry::Rails::ErrorSubscriber

Inherits:
Object
  • Object
show all
Defined in:
lib/sentry/rails/error_subscriber.rb

Overview

This is not a user-facing class. You should use it with Rails 7.0’s error reporter feature and its interfaces. See github.com/rails/rails/blob/main/activesupport/lib/active_support/error_reporter.rb to learn more about reporting APIs. If you want Sentry to subscribe to the error reporter, please set ‘config.rails.register_error_subscriber` to `true`.

Constant Summary collapse

SKIP_SOURCES =
Regexp.union([/.*_cache_store.active_support/])

Instance Method Summary collapse

Instance Method Details

#report(error, handled:, severity:, context:, source: nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/sentry/rails/error_subscriber.rb', line 11

def report(error, handled:, severity:, context:, source: nil)
  tags = { handled: handled }

  if source
    return if SKIP_SOURCES.match?(source)
    tags[:source] = source
  end

  if context[:tags].is_a?(Hash)
    context = context.dup
    tags.merge!(context.delete(:tags))
  end

  hint = {}
  if context[:hint].is_a?(Hash)
    context = context.dup
    hint.merge!(context.delete(:hint))
  end

  Sentry::Rails.capture_exception(error, level: severity, contexts: { "rails.error" => context }, tags: tags, hint: hint)
end