Methods
- C
- R
- T
- W
Included Modules
Class Public methods
register_hook(hook, outer: false) Link
Register an object to be invoked during both the run
and complete
steps.
hook.complete
will be passed the value returned from hook.run
, and will only be invoked if run
has previously been called. (Mostly, this means it won’t be invoked if an exception occurs in a preceding to_run
block; all ordinary to_complete
blocks are invoked in that situation.)
# File activesupport/lib/active_support/execution_wrapper.rb, line 50 def self.register_hook(hook, outer: false) if outer to_run RunHook.new(hook), prepend: true to_complete :after, CompleteHook.new(hook) else to_run RunHook.new(hook) to_complete CompleteHook.new(hook) end end
run!(reset: false) Link
Run this execution.
Returns an instance, whose complete!
method must be invoked after the work has been performed.
Where possible, prefer wrap
.
# File activesupport/lib/active_support/execution_wrapper.rb, line 66 def self.run!(reset: false) if reset lost_instance = IsolatedExecutionState.delete(active_key) lost_instance&.complete! else return Null if active? end new.tap do |instance| success = nil begin instance.run! success = true ensure instance.complete! unless success end end end
to_complete(*args, &block) Link
to_run(*args, &block) Link
wrap(source: "application.active_support") Link
Perform the work in the supplied block as an execution.
# File activesupport/lib/active_support/execution_wrapper.rb, line 86 def self.wrap(source: "application.active_support") return yield if active? instance = run! begin yield rescue => error error_reporter&.report(error, handled: false, source: source) raise ensure instance.complete! end end
Instance Public methods
complete!() Link
Complete this in-flight execution. This method must be called exactly once on the result of any call to run!
.
Where possible, prefer wrap
.