Module: GraphQL::Tracing::StatsdTrace

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

Overview

A tracer for reporting GraphQL-Ruby times to Statsd. Passing any Statsd client that implements .time(name) { ... } will work.

Examples:

Installing this tracer

# eg:
# $statsd = Statsd.new 'localhost', 9125
class MySchema < GraphQL::Schema
  use GraphQL::Tracing::StatsdTrace, statsd: $statsd
end

Instance Method Summary collapse

Methods included from PlatformTrace

#platform_authorized_lazy, #platform_execute_field_lazy, #platform_resolve_type_lazy

Instance Method Details

#initialize(statsd:, **rest) ⇒ Object

Parameters:

  • statsd (Object)

    A statsd client



20
21
22
23
# File 'lib/graphql/tracing/statsd_trace.rb', line 20

def initialize(statsd:, **rest)
  @statsd = statsd
  super(**rest)
end

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



48
49
50
# File 'lib/graphql/tracing/statsd_trace.rb', line 48

def platform_authorized(key, &block)
  @statsd.time(key, &block)
end

#platform_authorized_key(type) ⇒ Object



58
59
60
# File 'lib/graphql/tracing/statsd_trace.rb', line 58

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

#platform_execute_field(platform_key, &block) ⇒ Object



44
45
46
# File 'lib/graphql/tracing/statsd_trace.rb', line 44

def platform_execute_field(platform_key, &block)
  @statsd.time(platform_key, &block)
end

#platform_field_key(field) ⇒ Object



54
55
56
# File 'lib/graphql/tracing/statsd_trace.rb', line 54

def platform_field_key(field)
  "graphql.#{field.path}"
end

#platform_resolve_type_key(type) ⇒ Object



62
63
64
# File 'lib/graphql/tracing/statsd_trace.rb', line 62

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