提交 c0466603 编写于 作者: J José Valim

Give hooks the flexibility to choose the type of callback.

上级 c2e3ce8d
......@@ -115,19 +115,21 @@ def routes_reloader #:nodoc:
# A plugin may override this if they desire to provide a more
# exquisite route reloading.
# :api: plugin
def routes_reloader_hook
app = self
lambda { app.routes_reloader.execute_if_updated }
def set_routes_reloader_hook
reloader = routes_reloader
hook = lambda { reloader.execute_if_updated }
hook.call
ActionDispatch::Reloader.to_prepare(&hook)
end
# An app reloader hook that is used to setup to_cleanup callbacks.
# An app dependencies hook that is used to setup to_cleanup callbacks.
# A plugin may override this if they desire to provide a more exquisite app reloading.
# :api: plugin
def app_reloader_hook
lambda {
def set_dependencies_hook
ActionDispatch::Reloader.to_cleanup do
ActiveSupport::DescendantsTracker.clear
ActiveSupport::Dependencies.clear
}
end
end
# Initialize the application passing the given group. By default, the
......
......@@ -66,16 +66,14 @@ module Finisher
# Set app reload just after the finisher hook to ensure
# paths added in the hook are still loaded.
initializer :set_clear_dependencies_hook, :group => :all do |app|
ActionDispatch::Reloader.to_cleanup(&app.app_reloader_hook)
initializer :set_dependencies_hook, :group => :all do |app|
app.set_dependencies_hook
end
# Set app reload just after the finisher hook to ensure
# routes added in the hook are still loaded.
initializer :set_routes_reloader do |app|
reloader = app.routes_reloader_hook
reloader.call
ActionDispatch::Reloader.to_prepare(&reloader)
initializer :set_routes_reloader_hook do |app|
app.set_routes_reloader_hook
end
# Disable dependency loading during request cycle
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册