diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_controller/resources.rb | 7 | ||||
-rw-r--r-- | actionpack/test/controller/resources_test.rb | 22 |
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 |