Module: GraphQL::Execution::Instrumentation
- Defined in:
- lib/graphql/execution/instrumentation.rb
Class Method Summary collapse
-
.apply_instrumenters(multiplex) ⇒ Object
This function implements the instrumentation policy:.
Class Method Details
.apply_instrumenters(multiplex) ⇒ Object
This function implements the instrumentation policy:
- Instrumenters are a stack; the first
before_query
will have the lastafter_query
- If a
before_
hook returned without an error, its correspondingafter_
hook will run. - If the
before_
hook did not run, theafter_
hook will not be called.
When errors are raised from after_
hooks:
- Subsequent
after_
hooks are called - The first raised error is captured; later errors are ignored
- If an error was capture, it's re-raised after all hooks are finished
Partial runs of instrumentation are possible:
- If a
before_multiplex
hook raises an error, nobefore_query
hooks will run - If a
before_query
hook raises an error, subsequentbefore_query
hooks will not run (on any query)
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/graphql/execution/instrumentation.rb', line 19 def self.apply_instrumenters(multiplex) schema = multiplex.schema queries = multiplex.queries query_instrumenters = schema.instrumenters[:query] multiplex_instrumenters = schema.instrumenters[:multiplex] # First, run multiplex instrumentation, then query instrumentation for each query call_hooks(multiplex_instrumenters, multiplex, :before_multiplex, :after_multiplex) do each_query_call_hooks(query_instrumenters, queries) do # Let them be executed yield end end end |