diff options
Diffstat (limited to 'lib/gitlab/sentry.rb')
-rw-r--r-- | lib/gitlab/sentry.rb | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/lib/gitlab/sentry.rb b/lib/gitlab/sentry.rb deleted file mode 100644 index 005cb3112b8..00000000000 --- a/lib/gitlab/sentry.rb +++ /dev/null @@ -1,77 +0,0 @@ -# frozen_string_literal: true - -module Gitlab - module Sentry - def self.enabled? - (Rails.env.production? || Rails.env.development?) && - Gitlab.config.sentry.enabled - end - - def self.context(current_user = nil) - return unless enabled? - - Raven.tags_context(default_tags) - - 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: {}) - track_acceptable_exception(exception, issue_url: issue_url, extra: extra) - - raise exception if should_raise_for_dev? - end - - # This should be used when you do not want to raise an exception in - # development and test. If you need development and test to behave - # just the same as production you can use this instead of - # track_exception. - # - # If the exception implements the method `sentry_extra_data` and that method - # returns a Hash, then the return value of that method will be merged into - # `extra`. Exceptions can use this mechanism to provide structured data - # to sentry in addition to their message and back-trace. - def self.track_acceptable_exception(exception, issue_url: nil, extra: {}) - if enabled? - extra = build_extra_data(exception, issue_url, extra) - context # Make sure we've set everything we know in the context - - Raven.capture_exception(exception, tags: default_tags, extra: extra) - end - end - - def self.should_raise_for_dev? - Rails.env.development? || Rails.env.test? - end - - def self.default_tags - { - Labkit::Correlation::CorrelationId::LOG_KEY.to_sym => Labkit::Correlation::CorrelationId.current_id, - locale: I18n.locale - } - end - - def self.build_extra_data(exception, issue_url, extra) - exception.try(:sentry_extra_data)&.tap do |data| - extra.merge!(data) if data.is_a?(Hash) - end - - extra.merge({ issue_url: issue_url }.compact) - end - - private_class_method :build_extra_data - end -end |