Module: GraphQL::Tracing::SentryTrace

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

Overview

A tracer for reporting GraphQL-Ruby times to Sentry.

Examples:

Installing the tracer

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

Instance Method Summary collapse

Instance Method Details

#execute_query(**data) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/graphql/tracing/sentry_trace.rb', line 23

def execute_query(**data)
  set_this_txn_name = data[:query].context[:set_sentry_transaction_name]
  if set_this_txn_name == true || (set_this_txn_name.nil? && @set_transaction_name)
    Sentry.configure_scope do |scope|
      scope.set_transaction_name(transaction_name(data[:query]))
    end
  end
  instrument_sentry_execution("graphql.execute", "execute_query", data) { super }
end

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



18
19
20
21
# File 'lib/graphql/tracing/sentry_trace.rb', line 18

def initialize(set_transaction_name: false, **_rest)
  @set_transaction_name = set_transaction_name
  super
end

#platform_authorized(platform_key, &block) ⇒ Object



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

def platform_authorized(platform_key, &block)
  instrument_sentry_execution(platform_key, "authorized", &block)
end

#platform_authorized_key(type) ⇒ Object



77
78
79
# File 'lib/graphql/tracing/sentry_trace.rb', line 77

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

#platform_authorized_lazy(platform_key, &block) ⇒ Object



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

def platform_authorized_lazy(platform_key, &block)
  instrument_sentry_execution(platform_key, "authorized_lazy", &block)
end

#platform_execute_field(platform_key, &block) ⇒ Object



49
50
51
# File 'lib/graphql/tracing/sentry_trace.rb', line 49

def platform_execute_field(platform_key, &block)
  instrument_sentry_execution(platform_key, "execute_field", &block)
end

#platform_execute_field_lazy(platform_key, &block) ⇒ Object



53
54
55
# File 'lib/graphql/tracing/sentry_trace.rb', line 53

def platform_execute_field_lazy(platform_key, &block)
  instrument_sentry_execution(platform_key, "execute_field_lazy", &block)
end

#platform_field_key(field) ⇒ Object



73
74
75
# File 'lib/graphql/tracing/sentry_trace.rb', line 73

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

#platform_resolve_type(platform_key, &block) ⇒ Object



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

def platform_resolve_type(platform_key, &block)
  instrument_sentry_execution(platform_key, "resolve_type", &block)
end

#platform_resolve_type_key(type) ⇒ Object



81
82
83
# File 'lib/graphql/tracing/sentry_trace.rb', line 81

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

#platform_resolve_type_lazy(platform_key, &block) ⇒ Object



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

def platform_resolve_type_lazy(platform_key, &block)
  instrument_sentry_execution(platform_key, "resolve_type_lazy", &block)
end