aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2015-06-22 19:34:37 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2015-06-22 19:34:37 -0300
commit75b63de5edae7dc12c2518337217d93067e8bc37 (patch)
treeede858171354f103ecc62a20773f05d1abe0af31 /actionpack
parentccdefa0e230dac72ae35e41791ec5fa53117e91e (diff)
parent34a52c6bce2f97398cef4790e49739ef8f865d11 (diff)
downloadrails-75b63de5edae7dc12c2518337217d93067e8bc37.tar.gz
rails-75b63de5edae7dc12c2518337217d93067e8bc37.tar.bz2
rails-75b63de5edae7dc12c2518337217d93067e8bc37.zip
Merge pull request #19431 from hmarr/head-routing
Respect routing precedence for HEAD requests
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_dispatch/journey/router.rb3
-rw-r--r--actionpack/test/dispatch/routing_test.rb5
2 files changed, 4 insertions, 4 deletions
diff --git a/actionpack/lib/action_dispatch/journey/router.rb b/actionpack/lib/action_dispatch/journey/router.rb
index cc4bd6105d..b84aad8eb6 100644
--- a/actionpack/lib/action_dispatch/journey/router.rb
+++ b/actionpack/lib/action_dispatch/journey/router.rb
@@ -121,7 +121,8 @@ module ActionDispatch
end
def match_head_routes(routes, req)
- head_routes = match_routes(routes, req)
+ verb_specific_routes = routes.reject { |route| route.verb == // }
+ head_routes = match_routes(verb_specific_routes, req)
if head_routes.empty?
begin
diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb
index 77f86b7a62..26b8636c2f 100644
--- a/actionpack/test/dispatch/routing_test.rb
+++ b/actionpack/test/dispatch/routing_test.rb
@@ -3567,12 +3567,11 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
mount lambda { |env| [200, {}, [env['REQUEST_METHOD']]] }, at: '/'
end
- # TODO: HEAD request should match `get /home` rather than the
+ # HEAD request should match `get /home` rather than the
# lower-precedence Rack app mounted at `/`.
head '/home'
assert_response :ok
- #assert_equal 'test#index', @response.body
- assert_equal 'HEAD', @response.body
+ assert_equal 'test#index', @response.body
# But the Rack app can still respond to its own HEAD requests.
head '/foobar'