diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2018-02-16 22:03:39 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-16 22:03:39 -0500 |
commit | 65b370fe7d11d19dcec202967f9a70a4c040e96c (patch) | |
tree | c073a00d398fd7311dedfc7dce1b81fb7a57dd6e | |
parent | 971e22f43e16118db6ac3087c5ec75a740dbddca (diff) | |
parent | 94a27cb2b5c9b3db8e72d4cbef00ff040b30681d (diff) | |
download | rails-65b370fe7d11d19dcec202967f9a70a4c040e96c.tar.gz rails-65b370fe7d11d19dcec202967f9a70a4c040e96c.tar.bz2 rails-65b370fe7d11d19dcec202967f9a70a4c040e96c.zip |
Merge pull request #32025 from fatkodima/array-routing-constraints
Fix array routing constraints
-rw-r--r-- | actionpack/lib/action_dispatch/journey/path/pattern.rb | 4 | ||||
-rw-r--r-- | actionpack/test/dispatch/routing_test.rb | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/actionpack/lib/action_dispatch/journey/path/pattern.rb b/actionpack/lib/action_dispatch/journey/path/pattern.rb index 2d85a89a56..537f479ee5 100644 --- a/actionpack/lib/action_dispatch/journey/path/pattern.rb +++ b/actionpack/lib/action_dispatch/journey/path/pattern.rb @@ -90,7 +90,7 @@ module ActionDispatch return @separator_re unless @matchers.key?(node) re = @matchers[node] - "(#{re})" + "(#{Regexp.union(re)})" end def visit_GROUP(node) @@ -183,7 +183,7 @@ module ActionDispatch node = node.to_sym if @requirements.key?(node) - re = /#{@requirements[node]}|/ + re = /#{Regexp.union(@requirements[node])}|/ @offsets.push((re.match("").length - 1) + @offsets.last) else @offsets << @offsets.last diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb index 4222eb4eb7..fe314e26b1 100644 --- a/actionpack/test/dispatch/routing_test.rb +++ b/actionpack/test/dispatch/routing_test.rb @@ -4500,7 +4500,7 @@ class TestPortConstraints < ActionDispatch::IntegrationTest get "/integer", to: ok, constraints: { port: 8080 } get "/string", to: ok, constraints: { port: "8080" } - get "/array", to: ok, constraints: { port: [8080] } + get "/array/:idx", to: ok, constraints: { port: [8080], idx: %w[first last] } get "/regexp", to: ok, constraints: { port: /8080/ } end end @@ -4529,7 +4529,10 @@ class TestPortConstraints < ActionDispatch::IntegrationTest get "http://www.example.com/array" assert_response :not_found - get "http://www.example.com:8080/array" + get "http://www.example.com:8080/array/middle" + assert_response :not_found + + get "http://www.example.com:8080/array/first" assert_response :success end |