diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 35fae242972..75f2b9a3bdc 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -112,38 +112,6 @@ module Rails @routes_reloader ||= RoutesReloader.new end - # A routes reloader hook that is used to setup to_prepare callbacks. - # A plugin may override this if they desire to provide a more - # exquisite route reloading. - # :api: plugin - def set_routes_reloader_hook - reloader = routes_reloader - hook = lambda { reloader.execute_if_updated } - hook.call - self.reloaders << reloader - ActionDispatch::Reloader.to_prepare(&hook) - end - - # 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 set_dependencies_hook - callback = lambda do - ActiveSupport::DescendantsTracker.clear - ActiveSupport::Dependencies.clear - end - - if config.reload_classes_only_on_change - reloader = config.file_watcher.new(watchable_args, true, &callback) - self.reloaders << reloader - # We need to set a to_prepare callback regardless of the reloader result, i.e. - # models should be reloaded if any of the reloaders (i18n, routes) were updated. - ActionDispatch::Reloader.to_prepare(:prepend => true, &callback) - else - ActionDispatch::Reloader.to_cleanup(&callback) - end - end - # Returns an array of file paths appended with a hash of directories-extensions # suitable for ActiveSupport::FileUpdateChecker API. def watchable_args diff --git a/railties/lib/rails/application/finisher.rb b/railties/lib/rails/application/finisher.rb index 3a94311b573..738fb939944 100644 --- a/railties/lib/rails/application/finisher.rb +++ b/railties/lib/rails/application/finisher.rb @@ -62,14 +62,31 @@ module Rails # Set app reload just after the finisher hook to ensure # routes added in the hook are still loaded. - initializer :set_routes_reloader_hook do |app| - app.set_routes_reloader_hook + initializer :set_routes_reloader_hook do + reloader = routes_reloader + hook = lambda { reloader.execute_if_updated } + hook.call + self.reloaders << reloader + ActionDispatch::Reloader.to_prepare(&hook) end # Set app reload just after the finisher hook to ensure # paths added in the hook are still loaded. - initializer :set_dependencies_hook, :group => :all do |app| - app.set_dependencies_hook + initializer :set_dependencies_hook, :group => :all do + callback = lambda do + ActiveSupport::DescendantsTracker.clear + ActiveSupport::Dependencies.clear + end + + if config.reload_classes_only_on_change + reloader = config.file_watcher.new(watchable_args, true, &callback) + self.reloaders << reloader + # We need to set a to_prepare callback regardless of the reloader result, i.e. + # models should be reloaded if any of the reloaders (i18n, routes) were updated. + ActionDispatch::Reloader.to_prepare(:prepend => true, &callback) + else + ActionDispatch::Reloader.to_cleanup(&callback) + end end # Disable dependency loading during request cycle