module GraphQL::Tracing

Library entry point for performance metric reporting.

@example Sending custom events

query.trace("my_custom_event", { ... }) do
  # do stuff ...
end

@example Adding a tracer to a schema

class MySchema < GraphQL::Schema
  tracer MyTracer # <= responds to .trace(key, data, &block)
end

@example Adding a tracer to a single query

MySchema.execute(query_str, context: { backtrace: true })

Events:

Key | Metadata —-|——— lex | `{ query_string: String }` parse | `{ query_string: String }` validate | `{ query: GraphQL::Query, validate: Boolean }` analyze_multiplex | `{ multiplex: GraphQL::Execution::Multiplex }` analyze_query | `{ query: GraphQL::Query }` execute_multiplex | `{ multiplex: GraphQL::Execution::Multiplex }` execute_query | `{ query: GraphQL::Query }` execute_query_lazy | `{ query: GraphQL::Query?, multiplex: GraphQL::Execution::Multiplex? }` execute_field | `{ owner: Class, field: GraphQL::Schema::Field, query: GraphQL::Query, path: Array<String, Integer>, ast_node: GraphQL::Language::Nodes::Field}` execute_field_lazy | `{ owner: Class, field: GraphQL::Schema::Field, query: GraphQL::Query, path: Array<String, Integer>, ast_node: GraphQL::Language::Nodes::Field}` authorized | `{ context: GraphQL::Query::Context, type: Class, object: Object, path: Array<String, Integer> }` authorized_lazy | `{ context: GraphQL::Query::Context, type: Class, object: Object, path: Array<String, Integer> }` resolve_type | `{ context: GraphQL::Query::Context, type: Class, object: Object, path: Array<String, Integer> }` resolve_type_lazy | `{ context: GraphQL::Query::Context, type: Class, object: Object, path: Array<String, Integer> }`

Note that `execute_field` and `execute_field_lazy` receive different data in different settings: