From bc1b58de0368ef01ca6146a9e83c2d9a6746e169 Mon Sep 17 00:00:00 2001 From: Nicholas Firth-McCoy Date: Fri, 24 Jun 2016 12:21:34 +1000 Subject: [PATCH] Fix rails/info routes for apps with globbing route Backport of #25430 to 5-0-stable --- railties/CHANGELOG.md | 4 ++++ railties/lib/rails/application/finisher.rb | 5 ++++- railties/test/application/routing_test.rb | 19 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index e63839c1d7..ca160f7dc5 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -1,3 +1,7 @@ +* Ensure `/rails/info` routes match in development for apps with a catch-all globbing route. + + *Nicholas Firth-McCoy* + ## Rails 5.0.0.rc2 (June 22, 2016) ## * No changes. diff --git a/railties/lib/rails/application/finisher.rb b/railties/lib/rails/application/finisher.rb index 2cf2c0c165..20b5d6b9e1 100644 --- a/railties/lib/rails/application/finisher.rb +++ b/railties/lib/rails/application/finisher.rb @@ -21,10 +21,13 @@ module Rails initializer :add_builtin_route do |app| if Rails.env.development? - app.routes.append do + app.routes.prepend do get '/rails/info/properties' => "rails/info#properties", internal: true get '/rails/info/routes' => "rails/info#routes", internal: true get '/rails/info' => "rails/info#index", internal: true + end + + app.routes.append do get '/' => "rails/welcome#index", internal: true end end diff --git a/railties/test/application/routing_test.rb b/railties/test/application/routing_test.rb index e51f32aaed..93847c7aa9 100644 --- a/railties/test/application/routing_test.rb +++ b/railties/test/application/routing_test.rb @@ -39,6 +39,25 @@ module ApplicationTests assert_equal 200, last_response.status end + test "/rails/info routes are accessible with globbing route present" do + app("development") + + app_file "config/routes.rb", <<-RUBY + Rails.application.routes.draw do + get '*foo', to: 'foo#index' + end + RUBY + + get "/rails/info" + assert_equal 302, last_response.status + + get "rails/info/routes" + assert_equal 200, last_response.status + + get "rails/info/properties" + assert_equal 200, last_response.status + end + test "root takes precedence over internal welcome controller" do app("development")