aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-06-20 13:37:58 +0200
committerJosé Valim <jose.valim@gmail.com>2010-06-20 13:37:58 +0200
commit772c2b0b862850c29e7f112a5ddeaf1c0ed06408 (patch)
treec8fe77055ed15aa6596b6f9073f2b69d901b59aa
parent71703c98ba2bf65a6fed94917b039827cb63bace (diff)
downloadrails-772c2b0b862850c29e7f112a5ddeaf1c0ed06408.tar.gz
rails-772c2b0b862850c29e7f112a5ddeaf1c0ed06408.tar.bz2
rails-772c2b0b862850c29e7f112a5ddeaf1c0ed06408.zip
Use the new ActiveSupport::FileUpdateChecker instead of RoutesReloader.
-rw-r--r--actionpack/lib/action_dispatch/railtie.rb2
-rw-r--r--railties/lib/rails/application.rb13
-rw-r--r--railties/lib/rails/application/routes_reloader.rb46
3 files changed, 11 insertions, 50 deletions
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