Sha256: 18431342dce6ab92b94aaace67ff6839cd2bc714646a3d10a17ef7847dd3932d

Contents?: true

Size: 1.66 KB

Versions: 17

Compression:

Stored size: 1.66 KB

Contents

require 'ddtrace/contrib/active_support/notifications/event'

module Datadog
  module Contrib
    module ActiveModelSerializers
      # Defines basic behaviors for an ActiveModelSerializers event.
      module Event
        def self.included(base)
          base.send(:include, ActiveSupport::Notifications::Event)
          base.send(:extend, ClassMethods)
        end

        # Class methods for ActiveModelSerializers events.
        # Note, they share the same process method and before_trace method.
        module ClassMethods
          def span_options
            { service: configuration[:service_name] }
          end

          def tracer
            configuration[:tracer]
          end

          def configuration
            Datadog.configuration[:active_model_serializers]
          end

          def process(span, event, _id, payload)
            span.service = configuration[:service_name]

            # Set the resource name and serializer name
            res = resource(payload[:serializer])
            span.resource = res
            span.set_tag('active_model_serializers.serializer', res)

            span.span_type = Datadog::Ext::HTTP::TEMPLATE

            # Will be nil in 0.9
            span.set_tag('active_model_serializers.adapter', payload[:adapter].class) unless payload[:adapter].nil?
          end

          private

          def resource(serializer)
            # Depending on the version of ActiveModelSerializers
            # serializer will be a string or an object.
            if serializer.respond_to?(:name)
              serializer.name
            else
              serializer
            end
          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/event.rb
ddtrace-0.15.0.internaltracinfeature1 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.16.0 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.14.2.disableprotocolversion4 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.15.0 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.14.2.withoutpriorityparsing1 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.14.2 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.14.1 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.15.0.beta1 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.14.0 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.14.0.rc1 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.13.2 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.14.0.beta2 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.14.0.beta1 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.13.1 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.13.0 lib/ddtrace/contrib/active_model_serializers/event.rb
ddtrace-0.13.0.beta1 lib/ddtrace/contrib/active_model_serializers/event.rb