class Sentry::Rails::ErrorSubscriber

def report(error, handled:, severity:, context:, source: nil)

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
  options = { level: severity, contexts: { "rails.error" => context }, tags: tags, hint: hint }
  case error
  when String
    Sentry::Rails.capture_message(error, **options)
  when Exception
    Sentry::Rails.capture_exception(error, **options)
  else
    log_debug("Expected an Exception or a String, got: #{error.inspect}")
  end
end