Skip to content

Instantly share code, notes, and snippets.

@leandro
Created May 20, 2015 23:50
Show Gist options
  • Save leandro/8581d36d09bd10453f39 to your computer and use it in GitHub Desktop.
Save leandro/8581d36d09bd10453f39 to your computer and use it in GitHub Desktop.
Reproducing issue #20204 in rails/rails (4.2.1)
Rails.application.routes.draw do
resources :fruits do
mount TestEngine::Engine => '/test', as: :test_1
end
resources :vegetables do
mount TestEngine::Engine => '/test', as: :test_2
end
end
TestEngine::Engine.routes.draw do
scope module: "test" do
root to: "tests#index"
resources :tests
end
end
leandroico:engine-routes-test leandro$ rails c
Warning: You're using Rubygems 2.0.14 with Spring. Upgrade to at least Rubygems 2.1.0 and run `gem pristine --all` for better startup performance.
Loading development environment (Rails 4.2.1)
2.1.5 :001 > app.fruit_test_1.tests_path(fruit_id: 1)
ActionController::UrlGenerationError: No route matches {:action=>"index"} missing required keys: [:vegetable_id]
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/journey/formatter.rb:46:in `generate'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:727:in `generate'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:758:in `generate'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:801:in `url_for'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:280:in `call'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:223:in `call'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:345:in `block (2 levels) in define_url_helper'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/mapper.rb:637:in `block (2 levels) in define_generate_prefix'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:792:in `url_for'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:280:in `call'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:223:in `call'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/route_set.rb:345:in `block (2 levels) in define_url_helper'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/routes_proxy.rb:31:in `tests_path'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/actionpack-4.2.1/lib/action_dispatch/routing/routes_proxy.rb:34:in `method_missing'
from (irb):1
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/railties-4.2.1/lib/rails/commands/console.rb:110:in `start'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/railties-4.2.1/lib/rails/commands/console.rb:9:in `start'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:68:in `console'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/railties-4.2.1/lib/rails/commands.rb:17:in `<top (required)>'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `require'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `block in require'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:240:in `load_dependency'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `require'
from /Users/leandro/projetos/engine-routes-test/bin/rails:8:in `<top (required)>'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:268:in `load'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:268:in `block in load'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:240:in `load_dependency'
from /Users/leandro/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:268:in `load'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from -e:1:in `<main>'2.1.5 :002 >
2.1.5 :003 > app.vegetable_test_2.tests_path(vegetable_id: 1)
=> "/vegetables/1/test/tests"
2.1.5 :004 > app.fruit_test_1.tests_path(vegetable_id: 1)
=> "/vegetables/1/test/tests"
leandroico:engine-routes-test leandro$ rake routes
Prefix Verb URI Pattern Controller#Action
fruit_test_1 /fruits/:fruit_id/test TestEngine::Engine
fruits GET /fruits(.:format) fruits#index
POST /fruits(.:format) fruits#create
new_fruit GET /fruits/new(.:format) fruits#new
edit_fruit GET /fruits/:id/edit(.:format) fruits#edit
fruit GET /fruits/:id(.:format) fruits#show
PATCH /fruits/:id(.:format) fruits#update
PUT /fruits/:id(.:format) fruits#update
DELETE /fruits/:id(.:format) fruits#destroy
vegetable_test_2 /vegetables/:vegetable_id/test TestEngine::Engine
vegetables GET /vegetables(.:format) vegetables#index
POST /vegetables(.:format) vegetables#create
new_vegetable GET /vegetables/new(.:format) vegetables#new
edit_vegetable GET /vegetables/:id/edit(.:format) vegetables#edit
vegetable GET /vegetables/:id(.:format) vegetables#show
PATCH /vegetables/:id(.:format) vegetables#update
PUT /vegetables/:id(.:format) vegetables#update
DELETE /vegetables/:id(.:format) vegetables#destroy
Routes for TestEngine::Engine:
root GET / test_engine/test/tests#index
tests GET /tests(.:format) test_engine/test/tests#index
POST /tests(.:format) test_engine/test/tests#create
new_test GET /tests/new(.:format) test_engine/test/tests#new
edit_test GET /tests/:id/edit(.:format) test_engine/test/tests#edit
test GET /tests/:id(.:format) test_engine/test/tests#show
PATCH /tests/:id(.:format) test_engine/test/tests#update
PUT /tests/:id(.:format) test_engine/test/tests#update
DELETE /tests/:id(.:format) test_engine/test/tests#destroy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment