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.
Methods
- after_class_unload
- before_class_unload
- new
- release_unload_lock!
- reload!
- require_unload_lock!
- to_prepare
- wrap
Class Public methods
after_class_unload(*args, &block)
Registers a callback that will run immediately after the classes are unloaded.
📝 Source code
# File activesupport/lib/active_support/reloader.rb, line 44
    def self.after_class_unload(*args, &block)
      set_callback(:class_unload, :after, *args, &block)
    endbefore_class_unload(*args, &block)
Registers a callback that will run immediately before the classes are unloaded.
📝 Source code
# File activesupport/lib/active_support/reloader.rb, line 39
    def self.before_class_unload(*args, &block)
      set_callback(:class_unload, *args, &block)
    endnew()
📝 Source code
# File activesupport/lib/active_support/reloader.rb, line 99
    def initialize
      super
      @locked = false
    endreload!()
Initiate a manual reload
📝 Source code
# 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!
    endto_prepare(*args, &block)
Registers a callback that will run once at application startup and every time the code is reloaded.
📝 Source code
# File activesupport/lib/active_support/reloader.rb, line 34
    def self.to_prepare(*args, &block)
      set_callback(:prepare, *args, &block)
    endwrap(**kwargs)
Run the supplied block as a work unit, reloading code as needed
📝 Source code
# 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
    endInstance Public methods
release_unload_lock!()
Release the unload lock if it has been previously obtained
📝 Source code
# File activesupport/lib/active_support/reloader.rb, line 114
    def release_unload_lock!
      if @locked
        @locked = false
        ActiveSupport::Dependencies.interlock.done_unloading
      end
    endrequire_unload_lock!()
Acquire the ActiveSupport::Dependencies::Interlock unload lock, ensuring it will be released automatically
📝 Source code
# File activesupport/lib/active_support/reloader.rb, line 106
    def require_unload_lock!
      unless @locked
        ActiveSupport::Dependencies.interlock.start_unloading
        @locked = true
      end
    end