diff options
author | fatkodima <fatkodima123@gmail.com> | 2018-02-17 01:26:36 +0200 |
---|---|---|
committer | fatkodima <fatkodima123@gmail.com> | 2018-02-17 02:44:58 +0200 |
commit | 94a27cb2b5c9b3db8e72d4cbef00ff040b30681d (patch) | |
tree | cb5252da38c5918e6aaf7fcba5219e838a3d13df /actionpack | |
parent | 89bcca59e91fa9da941de890012872e8288e77b0 (diff) | |
download | rails-94a27cb2b5c9b3db8e72d4cbef00ff040b30681d.tar.gz rails-94a27cb2b5c9b3db8e72d4cbef00ff040b30681d.tar.bz2 rails-94a27cb2b5c9b3db8e72d4cbef00ff040b30681d.zip |
Fix array routing constraints
Diffstat (limited to 'actionpack')
-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 |