Use the new ActiveSupport::FileUpdateChecker instead of RoutesReloader.
This commit is contained in:
parent
71703c98ba
commit
772c2b0b86
@ -10,7 +10,7 @@ class Railtie < Rails::Railtie
|
||||
|
||||
# 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
|
@ -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 @@ class Application < Engine
|
||||
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 @@ def railties
|
||||
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!
|
||||
|
@ -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
|
Loading…
Reference in New Issue
Block a user