aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2012-01-24 10:34:09 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2012-01-24 10:34:09 -0800
commitad6f689bfff5148065a4d7eec1cf5d15da4e41c4 (patch)
tree57149665113cafcebc7b1a8b164c623f53c370ab
parentd26a166cfbd5c7f67277256aa74e6cc1df7feb77 (diff)
parent9b654d47134ef06022861200c2f6e48f8459afb0 (diff)
downloadrails-ad6f689bfff5148065a4d7eec1cf5d15da4e41c4.tar.gz
rails-ad6f689bfff5148065a4d7eec1cf5d15da4e41c4.tar.bz2
rails-ad6f689bfff5148065a4d7eec1cf5d15da4e41c4.zip
Merge pull request #3775 from karevn/master
Please pull my changes - they fix a rare problem with tests framework
-rw-r--r--actionpack/lib/action_dispatch/routing/route_set.rb3
-rw-r--r--actionpack/test/controller/routing_test.rb15
2 files changed, 16 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb
index 6100e69d4b..ac4dd7d927 100644
--- a/actionpack/lib/action_dispatch/routing/route_set.rb
+++ b/actionpack/lib/action_dispatch/routing/route_set.rb
@@ -598,7 +598,8 @@ module ActionDispatch
params[key] = URI.parser.unescape(value)
end
end
-
+ old_params = env[::ActionDispatch::Routing::RouteSet::PARAMETERS_KEY]
+ env[::ActionDispatch::Routing::RouteSet::PARAMETERS_KEY] = (old_params || {}).merge(params)
dispatcher = route.app
while dispatcher.is_a?(Mapper::Constraints) && dispatcher.matches?(env) do
dispatcher = dispatcher.app
diff --git a/actionpack/test/controller/routing_test.rb b/actionpack/test/controller/routing_test.rb
index 9a0cfc8e8e..44a40e0665 100644
--- a/actionpack/test/controller/routing_test.rb
+++ b/actionpack/test/controller/routing_test.rb
@@ -1380,7 +1380,20 @@ class RouteSetTest < ActiveSupport::TestCase
end
end
end
-
+
+ def test_route_with_subdomain_and_constraints_must_receive_params
+ name_param = nil
+ set.draw do
+ match 'page/:name' => 'pages#show', :constraints => lambda {|request|
+ name_param = request.params[:name]
+ return true
+ }
+ end
+ assert_equal({:controller => 'pages', :action => 'show', :name => 'mypage'},
+ set.recognize_path('http://subdomain.example.org/page/mypage'))
+ assert_equal(name_param, 'mypage')
+ end
+
def test_route_requirement_recognize_with_ignore_case
set.draw do
match 'page/:name' => 'pages#show',