Sha256: f266c0c17c4204df951d18738bd2deeac98dec938f74a8b092250a81e4ac126b

Contents?: true

Size: 1.49 KB

Versions: 18

Compression:

Stored size: 1.49 KB

Contents

require 'ddtrace/ext/app_types'
require 'ddtrace/ext/http'

module Datadog
  module Contrib
    module GraphQL
      # Provides instrumentation for `graphql` through the GraphQL tracing framework
      module Patcher
        include Base
        register_as :graphql

        option :tracer, default: Datadog.tracer
        option :service_name, default: 'ruby-graphql', depends_on: [:tracer] do |value|
          get_option(:tracer).set_service_info(value, 'ruby-graphql', Ext::AppTypes::WEB)
          value
        end
        option :schemas

        class << self
          def patch
            return patched? if patched? || !compatible? || get_option(:schemas).nil?

            get_option(:schemas).each { |s| patch_schema!(s) }

            @patched = true
          end

          def patch_schema!(schema)
            tracer = get_option(:tracer)
            service_name = get_option(:service_name)

            schema.define do
              use(
                ::GraphQL::Tracing::DataDogTracing,
                tracer: tracer,
                service: service_name
              )
            end
          end

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

          private

          def compatible?
            defined?(::GraphQL) \
              && defined?(::GraphQL::Tracing::DataDogTracing) \
              && Gem.loaded_specs['graphql'].version >= Gem::Version.new('1.7.9')
          end
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
ddtrace-0.14.2.disableprotocolversion4 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.14.2.withoutpriorityparsing1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.14.2 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.14.1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.15.0.beta1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.14.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.14.0.rc1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.13.2 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.14.0.beta2 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.14.0.beta1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.13.1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.13.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.12.1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.13.0.beta1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.12.0 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.12.0.rc1 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.12.0.beta2 lib/ddtrace/contrib/graphql/patcher.rb
ddtrace-0.12.0.beta1 lib/ddtrace/contrib/graphql/patcher.rb