Class: ActiveSupport::ExecutionWrapper
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
| Subclasses: | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
           DescendantsTracker | |
| Instance Chain: 
          self,
           Callbacks | |
| Inherits: | Object | 
| Defined in: | activesupport/lib/active_support/execution_wrapper.rb | 
Constant Summary
Callbacks - Included
  
Callbacks - Attributes & Methods
- .__callbacks rw
- #__callbacks readonly
- .__callbacks? ⇒ Boolean rw
- #__callbacks? ⇒ Boolean readonly
Class Method Summary
- .register_hook(hook, outer: false)
- 
    
      .run!(reset: false)  
    
    Run this execution. 
- .to_complete(*args, &block)
- .to_run(*args, &block)
- 
    
      .wrap(source: "application.active_support")  
    
    Perform the work in the supplied block as an execution. 
DescendantsTracker - self
Instance Method Summary
- 
    
      #complete!  
    
    Complete this in-flight execution. 
Callbacks - Included
| #run_callbacks | Runs the callbacks for the given event. | 
Class Attribute Details
.__callbacks (rw)
[ GitHub ]# File 'activesupport/lib/active_support/callbacks.rb', line 70
class_attribute :__callbacks, instance_writer: false, default: {}
    .__callbacks?  ⇒ Boolean  (rw)
  
  [ GitHub ]
# File 'activesupport/lib/active_support/callbacks.rb', line 70
class_attribute :__callbacks, instance_writer: false, default: {}
Class Method Details
.register_hook(hook, outer: false)
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)
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)
[ GitHub ]# File 'activesupport/lib/active_support/execution_wrapper.rb', line 21
def self.to_complete(*args, &block) set_callback(:complete, *args, &block) end
.to_run(*args, &block)
[ GitHub ]# File 'activesupport/lib/active_support/execution_wrapper.rb', line 17
def self.to_run(*args, &block) set_callback(:run, *args, &block) end
.wrap(source: "application.active_support")
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 Exception => error error_reporter&.report(error, handled: false, source: source) raise ensure instance.complete! end end
Instance Attribute Details
#__callbacks (readonly)
[ GitHub ]# File 'activesupport/lib/active_support/callbacks.rb', line 70
class_attribute :__callbacks, instance_writer: false, default: {}
    #__callbacks?  ⇒ Boolean  (readonly)
  
  [ GitHub ]
# File 'activesupport/lib/active_support/callbacks.rb', line 70
class_attribute :__callbacks, instance_writer: false, default: {}
Instance Method Details
#complete!
# File 'activesupport/lib/active_support/execution_wrapper.rb', line 135
def complete! complete ensure IsolatedExecutionState.delete(self.class.active_key) end