diff options
author | Nicholas Firth-McCoy <nicholas@2suggestions.com.au> | 2016-06-18 18:46:44 +1000 |
---|---|---|
committer | Nicholas Firth-McCoy <nicholas@2suggestions.com.au> | 2016-06-20 21:49:12 +1000 |
commit | 9d513e0a19f2b9333cd752b2747db4f350fcddc4 (patch) | |
tree | 551ad637aa116ba0944cf0d436f3981d7aa574f1 | |
parent | 0c998a14c45430afe85188f8ad13a696b077ffd9 (diff) | |
download | rails-9d513e0a19f2b9333cd752b2747db4f350fcddc4.tar.gz rails-9d513e0a19f2b9333cd752b2747db4f350fcddc4.tar.bz2 rails-9d513e0a19f2b9333cd752b2747db4f350fcddc4.zip |
Fix rails/info routes for apps with globbing route
The /rails/info routes were inaccessible in apps with a catch-all
globbing route, as they were being appended after the globbing route and
would never be matched.
See also ccc3ddb7762bae0df7e2f8d643b19b6a4769d5be.
-rw-r--r-- | railties/CHANGELOG.md | 4 | ||||
-rw-r--r-- | railties/lib/rails/application/finisher.rb | 5 | ||||
-rw-r--r-- | railties/test/application/routing_test.rb | 19 |
3 files changed, 27 insertions, 1 deletions
diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index b8f1cda329..982385438b 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* + * Added a shared section to `config/secrets.yml` that will be loaded for all environments. *DHH* diff --git a/railties/lib/rails/application/finisher.rb b/railties/lib/rails/application/finisher.rb index 4e24640510..97dde9a3e9 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") |