From 772c2b0b862850c29e7f112a5ddeaf1c0ed06408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 20 Jun 2010 13:37:58 +0200 Subject: Use the new ActiveSupport::FileUpdateChecker instead of RoutesReloader. --- actionpack/lib/action_dispatch/railtie.rb | 2 +- railties/lib/rails/application.rb | 13 +++++-- railties/lib/rails/application/routes_reloader.rb | 46 ----------------------- 3 files changed, 11 insertions(+), 50 deletions(-) delete mode 100644 railties/lib/rails/application/routes_reloader.rb diff --git a/actionpack/lib/action_dispatch/railtie.rb b/actionpack/lib/action_dispatch/railtie.rb index 38da44d7e7..ed93211255 100644 --- a/actionpack/lib/action_dispatch/railtie.rb +++ b/actionpack/lib/action_dispatch/railtie.rb @@ -10,7 +10,7 @@ module ActionDispatch # Prepare dispatcher callbacks and run 'prepare' callbacks initializer "action_dispatch.prepare_dispatcher" do |app| - ActionDispatch::Callbacks.to_prepare { app.routes_reloader.reload_if_changed } + ActionDispatch::Callbacks.to_prepare { app.routes_reloader.execute_if_updated } end end end \ No newline at end of file diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index b410639272..8b8ef20b1f 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -1,4 +1,5 @@ require 'active_support/core_ext/hash/reverse_merge' +require 'active_support/file_update_checker' require 'fileutils' require 'rails/plugin' require 'rails/engine' @@ -46,7 +47,6 @@ module Rails autoload :Configuration, 'rails/application/configuration' autoload :Finisher, 'rails/application/finisher' autoload :Railties, 'rails/application/railties' - autoload :RoutesReloader, 'rails/application/routes_reloader' class << self private :new @@ -121,11 +121,18 @@ module Rails end def routes_reloader - @routes_reloader ||= RoutesReloader.new + @routes_reloader ||= ActiveSupport::FileUpdateChecker.new([]){ reload_routes! } end def reload_routes! - routes_reloader.reload! + routes = Rails::Application.routes + routes.disable_clear_and_finalize = true + + routes.clear! + routes_reloader.paths.each { |path| load(path) } + ActiveSupport.on_load(:action_controller) { routes.finalize! } + ensure + routes.disable_clear_and_finalize = false end def initialize! diff --git a/railties/lib/rails/application/routes_reloader.rb b/railties/lib/rails/application/routes_reloader.rb deleted file mode 100644 index a2b3622df8..0000000000 --- a/railties/lib/rails/application/routes_reloader.rb +++ /dev/null @@ -1,46 +0,0 @@ -module Rails - class Application - class RoutesReloader - attr_reader :paths - - def initialize - @paths, @last_change_at = [], nil - end - - def changed_at - routes_changed_at = nil - - paths.each do |path| - config_changed_at = File.stat(path).mtime - - if routes_changed_at.nil? || config_changed_at > routes_changed_at - routes_changed_at = config_changed_at - end - end - - routes_changed_at - end - - def reload! - routes = Rails::Application.routes - routes.disable_clear_and_finalize = true - - routes.clear! - paths.each { |path| load(path) } - ActiveSupport.on_load(:action_controller) { routes.finalize! } - - nil - ensure - routes.disable_clear_and_finalize = false - end - - def reload_if_changed - current_change_at = changed_at - if @last_change_at != current_change_at - @last_change_at = current_change_at - reload! - end - end - end - end -end \ No newline at end of file -- cgit v1.2.3