Ticket: http://dev.rubyonrails.org/ticket/9183 (I''ve confirmed this is a problem with later updates of Rails 1.2.3 gems, and not a specific problem to Hobo) Named routes inside a route block broken Beginning with the update after original Rails 1.2.3, named routes get broken when used inside a routing block. There is a possibility (unconfirmed) that other routing capabilites (like nested resources?) are also problematic inside a block. I''ve marked this as Critical because in my app, this bug effectively shuts down my entire site. :-( With no quick fix except for reverting to previously working Rails version. (that isn''t "easy" due to the bug #7322 <http://dev.rubyonrails.org/ticket/7322>) Sample code: config/routes.rb: map.resources :bagus, :collection => {:aduh => :get} do |x| x.aduh ''/nguk'', :controller => ''bagus'', :action => ''aduh'' end app/controllers/bagus.rb: class BagusController < ApplicationController def aduh render :inline => ''text <%= aduh_path %> bages'' end end Result: NameError in BagusController#aduh undefined local variable or method `aduh_path'' for #<ActionView::Base:0xb6804ba0> RAILS_ROOT: /media/prestige/project/hobo/testr Application Trace | Framework Trace | Full Trace compiled-template:1:in `_run_2'' app/controllers/bagus_controller.rb:3:in `aduh'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_view/base.rb:350:in `send'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_view/base.rb:350:in `compile_and_render_template'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_view/base.rb:326:in `render_template'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:884:in `render_template'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:817:in `render_with_no_layout'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/layout.rb:258:in `render_without_benchmark'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/benchmarking.rb:51:in `render'' /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/benchmarking.rb:51:in `render'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:1136:in `send'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:1136:in `perform_action_without_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/filters.rb:713:in `call_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/filters.rb:752:in `perform_action_without_benchmark'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'' /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/rescue.rb:133:in `perform_action_without_caching'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/caching.rb:663:in `perform_action'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3.7116/lib/active_record/query_cache.rb:99:in `cache'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/caching.rb:662:in `perform_action'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:494:in `send'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:494:in `process_without_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/filters.rb:747:in `process_without_session_management_support'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/session_management.rb:122:in `process'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:346:in `process'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.3.7116/lib/dispatcher.rb:39:in `dispatch'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:78:in `process'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:76:in `synchronize'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:76:in `process'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:618:in `process_client'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:in `each'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:in `process_client'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `initialize'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `new'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in `initialize'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in `new'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:271:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:270:in `each'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:270:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:127:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/command.rb:211:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:243 /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:488:in `load'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:488:in `load'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:342:in `new_constants_in'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:488:in `load'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.3.7116/lib/commands/servers/mongrel.rb:64 /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'' /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:495:in `require'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:342:in `new_constants_in'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:495:in `require'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.3.7116/lib/commands/server.rb:39 /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'' /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'' script/server:3 compiled-template:1:in `_run_2'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_view/base.rb:350:in `send'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_view/base.rb:350:in `compile_and_render_template'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_view/base.rb:326:in `render_template'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:884:in `render_template'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:817:in `render_with_no_layout'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/layout.rb:258:in `render_without_benchmark'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/benchmarking.rb:51:in `render'' /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/benchmarking.rb:51:in `render'' app/controllers/bagus_controller.rb:3:in `aduh'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:1136:in `send'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:1136:in `perform_action_without_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/filters.rb:713:in `call_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/filters.rb:752:in `perform_action_without_benchmark'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'' /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/rescue.rb:133:in `perform_action_without_caching'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/caching.rb:663:in `perform_action'' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.3.7116/lib/active_record/query_cache.rb:99:in `cache'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/caching.rb:662:in `perform_action'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:494:in `send'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:494:in `process_without_filters'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/filters.rb:747:in `process_without_session_management_support'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/session_management.rb:122:in `process'' /usr/lib/ruby/gems/1.8/gems/actionpack-1.13.3.7116/lib/action_controller/base.rb:346:in `process'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.3.7116/lib/dispatcher.rb:39:in `dispatch'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:78:in `process'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:76:in `synchronize'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/rails.rb:76:in `process'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:618:in `process_client'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:in `each'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:617:in `process_client'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `initialize'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `new'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:736:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in `initialize'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in `new'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel.rb:720:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:271:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:270:in `each'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/configurator.rb:270:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:127:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/lib/mongrel/command.rb:211:in `run'' /usr/lib/ruby/gems/1.8/gems/mongrel-1.0.1/bin/mongrel_rails:243 /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:488:in `load'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:488:in `load'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:342:in `new_constants_in'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:488:in `load'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.3.7116/lib/commands/servers/mongrel.rb:64 /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'' /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:495:in `require'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:342:in `new_constants_in'' /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2.7116/lib/active_support/dependencies.rb:495:in `require'' /usr/lib/ruby/gems/1.8/gems/rails-1.2.3.7116/lib/commands/server.rb:39 /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'' /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'' script/server:3 Request Parameters: None Show session dump --- flash: !map:ActionController::Flash::FlashHash {} Response Headers: {"cookie"=>[], "Cache-Control"=>"no-cache"} Update: sake routes displays that the route is named ''person_kill'' (for resources ''people'' and action ''kill'') person_kill ANY //people/:person_id/hello/ {:path_prefix=>"/people/:person_id", :name_prefix=>"person_", :action=>"index", :controller=>"people"} Previous Rails version (1.2.3.original) would simply name the route as ''kill''. After reading the changelog for edge/trunk : +* Prefix nested resource named routes with their action name, e.g. new_group_user_path(@group) instead of group_new_user_path(@group). The old nested action named route is deprecated in Rails 1.2.4. #8558 <http://dev.rubyonrails.org/ticket/8558> [David Chelimsky] I suspect the behavior changes yet again (''kill_person''?) Workaround: Use the new route name. It may change again in Rails 1.2.4 so simply be careful. :-) Replacing the inner variable "x" with "map" works for a few situations. Using "connect" works, but this beats the purpose of named routes. The "best" workaround is to use the old Rails 1.2.3 gems. Unfortunately, freezing still hasn''t been working yet (bug #7322 <http://dev.rubyonrails.org/ticket/7322>). Used versions: ceefour@ojalanow:~/project/hobo/testr$ gem list | egrep ''^action|^active|^rails '' actionmailer (1.3.3.7116) actionpack (1.13.3.7116, 1.13.3.6548) actionwebservice (1.2.3.6548) activerecord (1.15.3.7116, 1.15.3.6548) activeresource (0.9.0.7116) activesupport (1.4.2.7116, 1.4.2.6548) rails (1.2.3.7116) -- Hendy Irawan www.hendyirawan.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com To unsubscribe from this group, send email to rubyonrails-core-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---
Manfred Stienstra
2007-Aug-04 09:12 UTC
Re: [BUG] Named routes inside a route block broken
On Aug 4, 2007, at 10:53 AM, Hendy Irawan wrote:> Ticket: http://dev.rubyonrails.org/ticket/9183 > > (I''ve confirmed this is a problem with later updates of Rails 1.2.3 > gems, and not a specific problem to Hobo) > > Named routes inside a route block brokenThanks for your bug report. You don''t have to repeat all the tickets you submit to Trac, most of us use an RSS feed to keep up with new tickets. Manfred --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com To unsubscribe from this group, send email to rubyonrails-core-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en -~----------~----~----~----~------~----~------~--~---