Module: GraphQL::Tracing::LegacyHooksTrace::RunHooks
- Defined in:
- lib/graphql/tracing/legacy_hooks_trace.rb
Class Method Summary collapse
- .call_after_hooks(instrumenters, object, after_hook_name, ex) ⇒ Object
-
.call_hooks(instrumenters, object, before_hook_name, after_hook_name) ⇒ Object
Call each before hook, and if they all succeed, yield.
-
.each_query_call_hooks(instrumenters, queries, i = 0) ⇒ Object
Call the before_ hooks of each query, Then yield if no errors.
Class Method Details
.call_after_hooks(instrumenters, object, after_hook_name, ex) ⇒ Object
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/graphql/tracing/legacy_hooks_trace.rb', line 61 def call_after_hooks(instrumenters, object, after_hook_name, ex) instrumenters.reverse_each do |instrumenter| begin instrumenter.public_send(after_hook_name, object) rescue => e ex = e end end ex end |
.call_hooks(instrumenters, object, before_hook_name, after_hook_name) ⇒ Object
Call each before hook, and if they all succeed, yield. If they don't all succeed, call after_ for each one that succeeded.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/graphql/tracing/legacy_hooks_trace.rb', line 36 def call_hooks(instrumenters, object, before_hook_name, after_hook_name) begin successful = [] instrumenters.each do |instrumenter| instrumenter.public_send(before_hook_name, object) successful << instrumenter end # if any before hooks raise an exception, quit calling before hooks, # but call the after hooks on anything that succeeded but also # raise the exception that came from the before hook. rescue GraphQL::ExecutionError => err object.context.errors << err rescue => e raise call_after_hooks(successful, object, after_hook_name, e) end begin yield # Call the user code ensure ex = call_after_hooks(successful, object, after_hook_name, nil) raise ex if ex end end |
.each_query_call_hooks(instrumenters, queries, i = 0) ⇒ Object
Call the before_ hooks of each query,
Then yield if no errors.
call_hooks
takes care of appropriate cleanup.
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/graphql/tracing/legacy_hooks_trace.rb', line 21 def each_query_call_hooks(instrumenters, queries, i = 0) if i >= queries.length yield else query = queries[i] call_hooks(instrumenters, query, :before_query, :after_query) { each_query_call_hooks(instrumenters, queries, i + 1) { yield } } end end |