Module: GraphQL::Tracing::ScoutTrace

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

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].



15
16
17
18
19
# File 'lib/graphql/tracing/scout_trace.rb', line 15

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



55
56
57
# File 'lib/graphql/tracing/scout_trace.rb', line 55

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

#platform_authorized_key(type) ⇒ Object



65
66
67
# File 'lib/graphql/tracing/scout_trace.rb', line 65

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

#platform_execute_field(platform_key, &block) ⇒ Object



51
52
53
# File 'lib/graphql/tracing/scout_trace.rb', line 51

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

#platform_field_key(field) ⇒ Object



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

def platform_field_key(field)
  field.path
end

#platform_resolve_type_key(type) ⇒ Object



69
70
71
# File 'lib/graphql/tracing/scout_trace.rb', line 69

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