класс ActiveSupport::Reloader
Active Support Reloader
Этот класс определяет несколько обратных вызовов:
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.
Публичные Классовые Методы
# File activesupport/lib/active_support/reloader.rb, line 44 def self.after_class_unload(*args, &block) set_callback(:class_unload, :after, *args, &block) end
Регистрирует обратный вызов, который будет выполнен сразу после разгрузки классов.
# File activesupport/lib/active_support/reloader.rb, line 39 def self.before_class_unload(*args, &block) set_callback(:class_unload, *args, &block) end
Регистрирует обратный вызов, который будет выполнен непосредственно перед разгрузкой классов.
# File activesupport/lib/active_support/reloader.rb, line 99 def initialize super @locked = false end
Вызывает метод суперкласса
# 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 Инициировать ручную перезагрузку
# File activesupport/lib/active_support/reloader.rb, line 34 def self.to_prepare(*args, &block) set_callback(:prepare, *args, &block) end
Регистрирует обратный вызов, который будет выполнен один раз при запуске приложения и каждый раз при перезагрузке кода.
# 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 Выполнить предоставленный блок в качестве единицы работы, перезагружая код по мере необходимости
Публичные Методы Экземпляров
# File activesupport/lib/active_support/reloader.rb, line 114
def release_unload_lock!
if @locked
@locked = false
ActiveSupport::Dependencies.interlock.done_unloading
end
end Освободить блокировку разгрузки, если она была ранее получена
# File activesupport/lib/active_support/reloader.rb, line 106
def require_unload_lock!
unless @locked
ActiveSupport::Dependencies.interlock.start_unloading
@locked = true
end
end Получить блокировку разгрузки, гарантируя, что она будет автоматически освобождена
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.