aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/application.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails/application.rb')
-rw-r--r--railties/lib/rails/application.rb21
1 files changed, 16 insertions, 5 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index 0e85e6d1d5..2db131261c 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -85,13 +85,24 @@ module Rails
end
def reload_routes!
- _routes = self.routes
- _routes.disable_clear_and_finalize = true
- _routes.clear!
+ routes_to_reload.each do |_routes, draw_block|
+ _routes = self.routes
+ _routes.disable_clear_and_finalize = true
+ _routes.clear!
+ _routes.draw(&draw_block) if draw_block
+ end
routes_reloader.paths.each { |path| load(path) }
- ActiveSupport.on_load(:action_controller) { _routes.finalize! }
+ routes_to_reload.each do |_routes, draw_block|
+ ActiveSupport.on_load(:action_controller) { _routes.finalize! }
+ end
ensure
- _routes.disable_clear_and_finalize = false
+ routes_to_reload.each do |_routes, draw_block|
+ _routes.disable_clear_and_finalize = false
+ end
+ end
+
+ def routes_to_reload
+ @routes_to_reload ||= {}
end
def initialize!