diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-06-22 19:34:37 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-06-22 19:34:37 -0300 |
commit | 75b63de5edae7dc12c2518337217d93067e8bc37 (patch) | |
tree | ede858171354f103ecc62a20773f05d1abe0af31 | |
parent | ccdefa0e230dac72ae35e41791ec5fa53117e91e (diff) | |
parent | 34a52c6bce2f97398cef4790e49739ef8f865d11 (diff) | |
download | rails-75b63de5edae7dc12c2518337217d93067e8bc37.tar.gz rails-75b63de5edae7dc12c2518337217d93067e8bc37.tar.bz2 rails-75b63de5edae7dc12c2518337217d93067e8bc37.zip |
Merge pull request #19431 from hmarr/head-routing
Respect routing precedence for HEAD requests
-rw-r--r-- | actionpack/lib/action_dispatch/journey/router.rb | 3 | ||||
-rw-r--r-- | actionpack/test/dispatch/routing_test.rb | 5 |
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' |