Class: ActiveSupport::Reloader
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| 
         Class Chain: 
        
       | 
    |
| 
         Instance Chain: 
        
          self,
           
      ExecutionWrapper,
          Callbacks
         | 
    |
| Inherits: | 
        ActiveSupport::ExecutionWrapper
        
  | 
    
| Defined in: | activesupport/lib/active_support/reloader.rb | 
Overview
This class defines several callbacks:
to_prepare -- Run once at application startup, and also from
{to_run}.
to_run -- Run before a work run that is reloading. If
{reload_classes_only_on_change} is true (the default), the class
unload will have already occurred.
to_complete -- Run after a work run that has reloaded. If
{reload_classes_only_on_change} is false, the class unload will
have occurred after the work run, but before this callback.
before_class_unload -- Run immediately before the classes are
unloaded.
after_class_unload -- Run immediately after the classes are
unloaded.
  Constant Summary
Class Attribute Summary
- .check rw
 - .check? ⇒ Boolean rw
 - .executor rw
 - .executor? ⇒ Boolean rw
 
ExecutionWrapper - Inherited
Class Method Summary
- 
    
      .after_class_unload(*args, &block)  
    
    
Registers a callback that will run immediately after the classes are unloaded.
 - 
    
      .before_class_unload(*args, &block)  
    
    
Registers a callback that will run immediately before the classes are unloaded.
 - .new ⇒ Reloader constructor
 - 
    
      .reload!  
    
    
Initiate a manual reload.
 - 
    
      .to_prepare(*args, &block)  
    
    
Registers a callback that will run once at application startup and every time the code is reloaded.
 - 
    
      .wrap(**kwargs)  
    
    
Run the supplied block as a work unit, reloading code as needed.
 - .check! Internal use only
 - .prepare! Internal use only
 - .reloaded! Internal use only
 - .run!(reset: false) Internal use only
 
ExecutionWrapper - Inherited
| .register_hook | Register an object to be invoked during both the   | 
    
| .run! | Run this execution.  | 
    
| .to_complete, .to_run, | |
| .wrap | Perform the work in the supplied block as an execution.  | 
    
| .active_key, .error_reporter, .perform | |
DescendantsTracker - Inherited
Instance Attribute Summary
- #check rw
 - #check? ⇒ Boolean rw
 - #executor rw
 - #executor? ⇒ Boolean rw
 
ExecutionWrapper - Inherited
Instance Method Summary
- 
    
      #release_unload_lock!  
    
    
Release the unload lock if it has been previously obtained.
 - 
    
      #require_unload_lock!  
    
    
Acquire the
Dependencies::Interlockunload lock, ensuring it will be released automatically. - #class_unload!(&block) Internal use only
 - #complete! Internal use only
 - #run! Internal use only
 
ExecutionWrapper - Inherited
| #complete! | Complete this in-flight execution.  | 
    
| #hook_state, #complete, #run, #run! | |
Callbacks - Included
| #run_callbacks | Runs the callbacks for the given event.  | 
    
| #halted_callback_hook | A hook invoked every time a before callback is halted.  | 
    
Constructor Details
    .new  ⇒ Reloader 
  
# File 'activesupport/lib/active_support/reloader.rb', line 99
def initialize super @locked = false end
Class Attribute Details
.check (rw)
[ GitHub ]# File 'activesupport/lib/active_support/reloader.rb', line 85
class_attribute :check, default: lambda { false }
    .check?  ⇒ Boolean  (rw)
  
  [ GitHub ]
# File 'activesupport/lib/active_support/reloader.rb', line 85
class_attribute :check, default: lambda { false }
.executor (rw)
[ GitHub ]# File 'activesupport/lib/active_support/reloader.rb', line 84
class_attribute :executor, default: Executor
    .executor?  ⇒ Boolean  (rw)
  
  [ GitHub ]
Class Method Details
.after_class_unload(*args, &block)
Registers a callback that will run immediately after the classes are unloaded.
# File 'activesupport/lib/active_support/reloader.rb', line 44
def self.after_class_unload(*args, &block) set_callback(:class_unload, :after, *args, &block) end
.before_class_unload(*args, &block)
Registers a callback that will run immediately before the classes are unloaded.
# File 'activesupport/lib/active_support/reloader.rb', line 39
def self.before_class_unload(*args, &block) set_callback(:class_unload, *args, &block) end
.check!
# File 'activesupport/lib/active_support/reloader.rb', line 87
def self.check! # :nodoc: @should_reload ||= check.call end
.prepare!
# File 'activesupport/lib/active_support/reloader.rb', line 95
def self.prepare! # :nodoc: new.run_callbacks(:prepare) end
.reload!
Initiate a manual reload
.reloaded!
# File 'activesupport/lib/active_support/reloader.rb', line 91
def self.reloaded! # :nodoc: @should_reload = false end
.run!(reset: false)
.to_prepare(*args, &block)
Registers a callback that will run once at application startup and every time the code is reloaded.
# File 'activesupport/lib/active_support/reloader.rb', line 34
def self.to_prepare(*args, &block) set_callback(:prepare, *args, &block) end
.wrap(**kwargs)
Run the supplied block as a work unit, reloading code as needed
Instance Attribute Details
#check (rw)
[ GitHub ]# File 'activesupport/lib/active_support/reloader.rb', line 85
class_attribute :check, default: lambda { false }
    #check?  ⇒ Boolean  (rw)
  
  [ GitHub ]
# File 'activesupport/lib/active_support/reloader.rb', line 85
class_attribute :check, default: lambda { false }
#executor (rw)
[ GitHub ]# File 'activesupport/lib/active_support/reloader.rb', line 84
class_attribute :executor, default: Executor
    #executor?  ⇒ Boolean  (rw)
  
  [ GitHub ]
Instance Method Details
#class_unload!(&block)
# File 'activesupport/lib/active_support/reloader.rb', line 126
def class_unload!(&block) # :nodoc: require_unload_lock! run_callbacks(:class_unload, &block) end
#complete!
# File 'activesupport/lib/active_support/reloader.rb', line 131
def complete! # :nodoc: super self.class.reloaded! ensure release_unload_lock! end
#release_unload_lock!
Release the unload lock if it has been previously obtained
# File 'activesupport/lib/active_support/reloader.rb', line 114
def release_unload_lock! if @locked @locked = false ActiveSupport::Dependencies.interlock.done_unloading end end
#require_unload_lock!
Acquire the Dependencies::Interlock unload lock, ensuring it will be released automatically
# File 'activesupport/lib/active_support/reloader.rb', line 106
def require_unload_lock! unless @locked ActiveSupport::Dependencies.interlock.start_unloading @locked = true end end
#run!
# File 'activesupport/lib/active_support/reloader.rb', line 121
def run! # :nodoc: super release_unload_lock! end