Sha256: b7567a4f4090a684ac4e58e468d982cf4441b7673704f82ae57b03cd6186eb0f

Contents?: true

Size: 1.54 KB

Versions: 27

Compression:

Stored size: 1.54 KB

Contents

module Sentry
  module Rails
    module Tracing
      class AbstractSubscriber

        class << self
          def subscribe!
            raise NotImplementedError
          end

          def unsubscribe!
            ActiveSupport::Notifications.unsubscribe(self::EVENT_NAME)
          end

          def subscribe_to_event(event_name)
            if ::Rails.version.to_i == 5
              ActiveSupport::Notifications.subscribe(event_name) do |*args|
                next unless Tracing.get_current_transaction

                event = ActiveSupport::Notifications::Event.new(*args)
                yield(event_name, event.duration, event.payload)
              end
            else
              ActiveSupport::Notifications.subscribe(event_name) do |event|
                next unless Tracing.get_current_transaction

                yield(event_name, event.duration, event.payload)
              end
            end
          end

          def record_on_current_span(duration:, **options)
            return unless options[:start_timestamp]

            scope = Sentry.get_current_scope
            transaction = scope.get_transaction
            return unless transaction && transaction.sampled

            span = transaction.start_child(**options)
            # duration in ActiveSupport is computed in millisecond
            # so we need to covert it as second before calculating the timestamp
            span.set_timestamp(span.start_timestamp + duration / 1000)
            yield(span) if block_given?
          end
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
sentry-rails-4.7.3 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.7.2 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.7.1 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.7.0 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.6.5 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.6.4 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.6.3 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.6.2 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.6.1 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.6.0 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.6.0.pre.beta.0 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.5.2 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.5.1 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.5.0 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.5.0.pre.beta.1 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.4.0 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.4.0.pre.beta.0 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.3.4 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.3.3 lib/sentry/rails/tracing/abstract_subscriber.rb
sentry-rails-4.3.3.pre.beta.0 lib/sentry/rails/tracing/abstract_subscriber.rb