Module: GraphQL::Tracing::ScoutTrace

Includes:
PlatformTrace
Defined in:
lib/graphql/tracing/scout_trace.rb

Overview

A tracer for sending GraphQL-Ruby times to Scout

Examples:

Adding this tracer to your schema

class MySchema < GraphQL::Schema
  trace_with GraphQL::Tracing::ScoutTrace
end

Constant Summary collapse

INSTRUMENT_OPTS =
{ scope: true }

Instance Method Summary collapse

Methods included from PlatformTrace

#platform_authorized_lazy, #platform_execute_field_lazy, #platform_resolve_type_lazy

Instance Method Details

#initialize(set_transaction_name: false, **_rest) ⇒ Object

Parameters:

  • set_transaction_name (Boolean) (defaults to: false)

    If true, the GraphQL operation name will be used as the transaction name. This is not advised if you run more than one query per HTTP request, for example, with graphql-client or multiplexing. It can also be specified per-query with context[:set_scout_transaction_name].



21
22
23
24
25
# File 'lib/graphql/tracing/scout_trace.rb', line 21

def initialize(set_transaction_name: false, **_rest)
  self.class.include(ScoutApm::Tracer)
  @set_transaction_name = set_transaction_name
  super
end

#platform_authorized(platform_key, &block) ⇒ Object Also known as: platform_resolve_type



61
62
63
# File 'lib/graphql/tracing/scout_trace.rb', line 61

def platform_authorized(platform_key, &block)
  self.class.instrument("GraphQL", platform_key, INSTRUMENT_OPTS, &block)
end

#platform_authorized_key(type) ⇒ Object



71
72
73
# File 'lib/graphql/tracing/scout_trace.rb', line 71

def platform_authorized_key(type)
  "#{type.graphql_name}.authorized"
end

#platform_execute_field(platform_key, &block) ⇒ Object



57
58
59
# File 'lib/graphql/tracing/scout_trace.rb', line 57

def platform_execute_field(platform_key, &block)
  self.class.instrument("GraphQL", platform_key, INSTRUMENT_OPTS, &block)
end

#platform_field_key(field) ⇒ Object



67
68
69
# File 'lib/graphql/tracing/scout_trace.rb', line 67

def platform_field_key(field)
  field.path
end

#platform_resolve_type_key(type) ⇒ Object



75
76
77
# File 'lib/graphql/tracing/scout_trace.rb', line 75

def platform_resolve_type_key(type)
  "#{type.graphql_name}.resolve_type"
end