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_querywill 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, no before_query hooks will run
- If a before_query hook raises an error, subsequent before_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 |