aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2006-08-05 20:46:49 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2006-08-05 20:46:49 +0000
commit5130fc84c602001d31454a5631ee7b354d197663 (patch)
tree8cec1213c1c5013e1f42f24f6c5f3bb24c5ba5c9 /actionpack
parent01e389c965af85901ee8ea77fe099fd3081e07ea (diff)
downloadrails-5130fc84c602001d31454a5631ee7b354d197663.tar.gz
rails-5130fc84c602001d31454a5631ee7b354d197663.tar.bz2
rails-5130fc84c602001d31454a5631ee7b354d197663.zip
Remove duplicate routes from mapped resources (closes #5712) [eigentone@gmail.com]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4669 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/resources.rb7
-rw-r--r--actionpack/test/controller/resources_test.rb22
2 files changed, 26 insertions, 3 deletions
diff --git a/actionpack/lib/action_controller/resources.rb b/actionpack/lib/action_controller/resources.rb
index 35ca2dcf2f..ef8da1ded4 100644
--- a/actionpack/lib/action_controller/resources.rb
+++ b/actionpack/lib/action_controller/resources.rb
@@ -143,9 +143,10 @@ module ActionController
end
map.connect(resource.member_path, route_options.merge(:action => primary)) unless primary.blank?
- map.named_route("#{resource.name_prefix}#{resource.singular}", resource.member_path, :action => "show", :conditions => { :method => :get })
- map.named_route("formatted_#{resource.name_prefix}#{resource.singular}", "#{resource.member_path}.:format", :action => "show", :conditions => { :method => :get })
end
+
+ map.named_route("#{resource.name_prefix}#{resource.singular}", resource.member_path, :action => "show", :conditions => { :method => :get })
+ map.named_route("formatted_#{resource.name_prefix}#{resource.singular}", "#{resource.member_path}.:format", :action => "show", :conditions => { :method => :get })
end
def requirements_for(method)
@@ -154,4 +155,4 @@ module ActionController
end
end
-ActionController::Routing::RouteSet::Mapper.send :include, ActionController::Resources
+ActionController::Routing::RouteSet::Mapper.send :include, ActionController::Resources \ No newline at end of file
diff --git a/actionpack/test/controller/resources_test.rb b/actionpack/test/controller/resources_test.rb
index 845f8878f2..7e0299e834 100644
--- a/actionpack/test/controller/resources_test.rb
+++ b/actionpack/test/controller/resources_test.rb
@@ -133,6 +133,18 @@ class ResourcesTest < Test::Unit::TestCase
:options => { :thread_id => '1', :message_id => '2' }
end
end
+
+ def test_restful_routes_dont_generate_duplicates
+ with_restful_routing :messages do
+ routes = ActionController::Routing::Routes.routes
+ routes.each do |route|
+ routes.each do |r|
+ next if route === r # skip the comparison instance
+ assert distinct_routes?(route, r), "Duplicate Route: #{route}"
+ end
+ end
+ end
+ end
protected
def with_restful_routing(*args)
@@ -212,4 +224,14 @@ class ResourcesTest < Test::Unit::TestCase
"#{method} not in #{action_method} methods: #{resource.send("#{action_method}_methods")[method].inspect}"
end
end
+
+ def distinct_routes? (r1, r2)
+ if r1.conditions == r2.conditions and r1.requirements == r2.requirements then
+ if r1.segments.collect(&:to_s) == r2.segments.collect(&:to_s) then
+ return false
+ end
+ end
+ true
+ end
+
end