5f7f5eda92
This adds a method to track errors that can be recovered from in sentry. It is useful when debugging performance issues, or exceptions that are hard to reproduce.
52 lines
1.3 KiB
Ruby
52 lines
1.3 KiB
Ruby
module Gitlab
|
|
module Sentry
|
|
def self.enabled?
|
|
Rails.env.production? && Gitlab::CurrentSettings.sentry_enabled?
|
|
end
|
|
|
|
def self.context(current_user = nil)
|
|
return unless self.enabled?
|
|
|
|
Raven.tags_context(locale: I18n.locale)
|
|
|
|
if current_user
|
|
Raven.user_context(
|
|
id: current_user.id,
|
|
email: current_user.email,
|
|
username: current_user.username
|
|
)
|
|
end
|
|
end
|
|
|
|
# This can be used for investigating exceptions that can be recovered from in
|
|
# code. The exception will still be raised in development and test
|
|
# environments.
|
|
#
|
|
# That way we can track down these exceptions with as much information as we
|
|
# need to resolve them.
|
|
#
|
|
# Provide an issue URL for follow up.
|
|
def self.track_exception(exception, issue_url: nil, extra: {})
|
|
if enabled?
|
|
extra[:issue_url] = issue_url if issue_url
|
|
context # Make sure we've set everything we know in the context
|
|
|
|
Raven.capture_exception(exception, extra: extra)
|
|
end
|
|
|
|
raise exception if should_raise?
|
|
end
|
|
|
|
def self.program_context
|
|
if Sidekiq.server?
|
|
'sidekiq'
|
|
else
|
|
'rails'
|
|
end
|
|
end
|
|
|
|
def self.should_raise?
|
|
Rails.env.development? || Rails.env.test?
|
|
end
|
|
end
|
|
end
|