Sha256: 210c3914d35a50ffcc202d8f6f87bbd39b08b87393a8dbd43a9f810bddee20a0

Contents?: true

Size: 1.72 KB

Versions: 17

Compression:

Stored size: 1.72 KB

Contents

require 'ddtrace/ext/app_types'
require 'ddtrace/ext/http'
require 'ddtrace/contrib/active_model_serializers/events'

module Datadog
  module Contrib
    module ActiveModelSerializers
      # Provides instrumentation for ActiveModelSerializers through ActiveSupport instrumentation signals
      module Patcher
        include Base

        VERSION_REQUIRED = Gem::Version.new('0.9.0')

        register_as :active_model_serializers

        option :service_name, default: 'active_model_serializers'
        option :tracer, default: Datadog.tracer do |value|
          (value || Datadog.tracer).tap do |v|
            # Make sure to update tracers of all subscriptions
            Events.subscriptions.each do |subscription|
              subscription.tracer = v
            end
          end
        end

        class << self
          def patch
            return patched? if patched? || !compatible?

            # Subscribe to ActiveModelSerializers events
            Events.subscribe!

            # Set service info
            configuration[:tracer].set_service_info(
              configuration[:service_name],
              'active_model_serializers',
              Ext::AppTypes::WEB
            )

            @patched = true
          end

          def patched?
            return @patched if defined?(@patched)
            @patched = false
          end

          private

          def configuration
            Datadog.configuration[:active_model_serializers]
          end

          def compatible?
            Gem.loaded_specs['active_model_serializers'] && Gem.loaded_specs['activesupport'] \
              && Gem.loaded_specs['active_model_serializers'].version >= VERSION_REQUIRED
          end
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
ddtrace-0.16.1 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.15.0.internaltracinfeature1 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.16.0 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.14.2.disableprotocolversion4 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.15.0 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.14.2.withoutpriorityparsing1 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.14.2 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.14.1 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.15.0.beta1 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.14.0 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.14.0.rc1 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.13.2 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.14.0.beta2 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.14.0.beta1 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.13.1 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.13.0 lib/ddtrace/contrib/active_model_serializers/patcher.rb
ddtrace-0.13.0.beta1 lib/ddtrace/contrib/active_model_serializers/patcher.rb