class GraphQL::Tracing::Trace
This is the base class for a trace instance whose methods are called during query execution. “Trace modes” are subclasses of this with custom tracing modules mixed in.
A trace module may implement any of the methods on Trace, being sure to call super to continue any tracing hooks and call the actual runtime behavior.
Public Class Methods
Source
# File lib/graphql/tracing/trace.rb, line 22 def initialize(multiplex: nil, query: nil, **_options) @multiplex = multiplex @query = query end
Parameters
-
multiplex(GraphQL::Execution::Multiplex, nil) -
query(GraphQL::Query, nil)
Public Instance Methods
# File lib/graphql/tracing/trace.rb, line 90 def analyze_multiplex(multiplex:) yield end
Parameters
-
multiplex(GraphQL::Execution::Multiplex)
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 94 def analyze_query(query:) yield end
Source
# File lib/graphql/tracing/trace.rb, line 67 def begin_analyze_multiplex(multiplex, analyzers); end
Parameters
-
multiplex(GraphQL::Execution::Multiplex) -
analyzers(Array<Class>)
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 259 def begin_dataloader(dataloader); end
# File lib/graphql/tracing/trace.rb, line 286 def begin_dataloader_source(source); end
A source with pending keys is about to fetch
Parameters
-
source(GraphQL::Dataloader::Source)
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 133 def begin_execute_field(field, object, arguments, query); end
GraphQL is about to resolve this field
Parameters
-
field(GraphQL::Schema::Field) -
object(GraphQL::Schema::Object) -
arguments(Hash) -
query(GraphQL::Query)
# File lib/graphql/tracing/trace.rb, line 226 def begin_resolve_type(type, value, context) end
A call to .resolve_type is starting
Parameters
-
type(Class<GraphQL::Schema::Union>, Module<GraphQL::Schema::Interface>) -
value(Object) -
context(GraphQL::Query::Context)
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 50 def begin_validate(query, validate) end
# File lib/graphql/tracing/trace.rb, line 335 def dataloader_fiber_exit; end
Called when an execution or source fiber terminates
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 362 def dataloader_fiber_resume(source); end
Called when a Dataloader fiber is resumed because data has been loaded
Parameters
-
source(GraphQL::Dataloader::Source) — The Source whoseloadcall previously caused this Fiber to wait
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 349 def dataloader_fiber_yield(source); end
Called when a Dataloader fiber is paused to wait for data
Parameters
-
source(GraphQL::Dataloader::Source) — The Source whoseloadcall initiated thisyield
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 313 def dataloader_spawn_execution_fiber(jobs); end
Called when Dataloader spins up a new fiber for GraphQL execution
Parameters
-
jobs(Array<#call>) —Executionsteps to run
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 326 def dataloader_spawn_source_fiber(pending_sources); end
Called when Dataloader spins up a new fiber for fetching data
Parameters
-
pending_sources(GraphQL::Dataloader::Source) — Instances with pending keys
Returns
-
void
Source
# File lib/graphql/tracing/trace.rb, line 79 def end_analyze_multiplex(multiplex, analyzers); end
Parameters
-
multiplex(GraphQL::Execution::Multiplex) -
analyzers(Array<Class>)
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 272 def end_dataloader(dataloader); end
# File lib/graphql/tracing/trace.rb, line 299 def end_dataloader_source(source); end
# File lib/graphql/tracing/trace.rb, line 146 def end_execute_field(field, object, arguments, query, result); end
GraphQL just finished resolving this field
Parameters
-
field(GraphQL::Schema::Field) -
object(GraphQL::Schema::Object) -
arguments(Hash) -
query(GraphQL::Query) -
result(Object)
# File lib/graphql/tracing/trace.rb, line 244 def end_resolve_type(type, value, context, resolved_type) end
A call to .resolve_type just ended
Parameters
-
type(Class<GraphQL::Schema::Union>, Module<GraphQL::Schema::Interface>) -
value(Object) -
context(GraphQL::Query::Context) -
resolved_type(Class<GraphQL::Schema::Object>)
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 53 def end_validate(query, validate, errors) end
# File lib/graphql/tracing/trace.rb, line 148 def execute_field(field:, query:, ast_node:, arguments:, object:) yield end
# File lib/graphql/tracing/trace.rb, line 152 def execute_field_lazy(field:, query:, ast_node:, arguments:, object:) yield end
# File lib/graphql/tracing/trace.rb, line 110 def execute_multiplex(multiplex:) yield end
This wraps an entire .execute call.
Parameters
-
multiplex(GraphQL::Execution::Multiplex)
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 114 def execute_query(query:) yield end
# File lib/graphql/tracing/trace.rb, line 118 def execute_query_lazy(query:, multiplex:) yield end
# File lib/graphql/tracing/trace.rb, line 28 def lex(query_string:) yield end
The Ruby parser doesn’t call this method (graphql/c_parser does.)
# File lib/graphql/tracing/trace.rb, line 163 def object_loaded(argument_definition, object, context) end
# File lib/graphql/tracing/trace.rb, line 160 def objects(type, object, context) end
# File lib/graphql/tracing/trace.rb, line 42 def parse(query_string:) yield end
Parameters
-
query_string(String)
Returns
-
void
# File lib/graphql/tracing/trace.rb, line 204 def resolve_type(query:, type:, object:) yield end
# File lib/graphql/tracing/trace.rb, line 208 def resolve_type_lazy(query:, type:, object:) yield end
# File lib/graphql/tracing/trace.rb, line 46 def validate(query:, validate:) yield end