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::Interlock
unload 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