class ActiveSupport::Reloader
Active Support Reloader
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.
Inherits From
Public class methods
Registers a callback that will run immediately after the classes are unloaded.
Source code GitHub
# File activesupport/lib/active_support/reloader.rb, line 44
def self.after_class_unload(*args, &block)
set_callback(:class_unload, :after, *args, &block)
end
Registers a callback that will run immediately before the classes are unloaded.
Source code GitHub
# File activesupport/lib/active_support/reloader.rb, line 39
def self.before_class_unload(*args, &block)
set_callback(:class_unload, *args, &block)
end
Source code GitHub
# File activesupport/lib/active_support/reloader.rb, line 99
def initialize
super
@locked = false
end
Initiate a manual reload
Source code GitHub
# File activesupport/lib/active_support/reloader.rb, line 51
def self.reload!
executor.wrap do
new.tap do |instance|
instance.run!
ensure
instance.complete!
end
end
prepare!
end
Registers a callback that will run once at application startup and every time the code is reloaded.
Source code GitHub
# File activesupport/lib/active_support/reloader.rb, line 34
def self.to_prepare(*args, &block)
set_callback(:prepare, *args, &block)
end
Run the supplied block as a work unit, reloading code as needed
Source code GitHub
# File activesupport/lib/active_support/reloader.rb, line 71
def self.wrap(**kwargs)
return yield if active?
executor.wrap(**kwargs) do
instance = run!
begin
yield
ensure
instance.complete!
end
end
end
Public instance methods
Release the unload lock if it has been previously obtained
Source code GitHub
# File activesupport/lib/active_support/reloader.rb, line 114
def release_unload_lock!
if @locked
@locked = false
ActiveSupport::Dependencies.interlock.done_unloading
end
end
Acquire the ActiveSupport::Dependencies::Interlock
unload lock, ensuring it will be released automatically
Source code GitHub
# File activesupport/lib/active_support/reloader.rb, line 106
def require_unload_lock!
unless @locked
ActiveSupport::Dependencies.interlock.start_unloading
@locked = true
end
end