Skip to content

4.2.0 unexpected route issues (is not a supported controller name) #18211

@2called-chaos

Description

@2called-chaos

Hey guys, while trying to upgrade I ran into some issues with existing routes.

I think it is caused to the change 5.2 "Deprecated support for setting the :to option of a router to a symbol or a string that does not contain a "#" character" but look at these 3 lines:

get 'a/:action' => 'foo'
get 'b/:action/a' => 'foo'
get 'c/:action' => 'foo'

a and c don't output any deprecation warning which I think I should(?) but b just breaks completely with the following exception:

ArgumentError - 'b/:action' is not a supported controller name. This can lead to potential routing problems. See http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use:
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:260:in `block (2 levels) in check_controller_and_action'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:319:in `translate_controller'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:256:in `block in check_controller_and_action'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:271:in `check_part'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:255:in `check_controller_and_action'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:178:in `normalize_options!'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:100:in `initialize'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:78:in `build'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:1559:in `add_route'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:1536:in `decomposed_match'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:1517:in `block in match'
  actionpack (4.2.0) lib/action_dispatch/routing/mapper.rb:1507:in `match'
  config/routes.rb:24:in `block in <top (required)>'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:423:in `eval_block'
  actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb:401:in `draw'
  config/routes.rb:1:in `<top (required)>'
  activesupport (4.2.0) lib/active_support/dependencies.rb:268:in `block in load'
  activesupport (4.2.0) lib/active_support/dependencies.rb:240:in `load_dependency'
  activesupport (4.2.0) lib/active_support/dependencies.rb:268:in `load'
  railties (4.2.0) lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
  railties (4.2.0) lib/rails/application/routes_reloader.rb:40:in `load_paths'
  railties (4.2.0) lib/rails/application/routes_reloader.rb:16:in `reload!'
  railties (4.2.0) lib/rails/application/routes_reloader.rb:26:in `block in updater'
  activesupport (4.2.0) lib/active_support/file_update_checker.rb:75:in `execute'
  railties (4.2.0) lib/rails/application/routes_reloader.rb:7:in `execute'
  railties (4.2.0) lib/rails/application/finisher.rb:81:in `block (2 levels) in <module:Finisher>'
  activesupport (4.2.0) lib/active_support/callbacks.rb:441:in `block in make_lambda'
  activesupport (4.2.0) lib/active_support/callbacks.rb:189:in `block in simple'
  activesupport (4.2.0) lib/active_support/callbacks.rb:190:in `block in simple'
  activesupport (4.2.0) lib/active_support/callbacks.rb:190:in `block in simple'
  activesupport (4.2.0) lib/active_support/callbacks.rb:190:in `block in simple'
  activesupport (4.2.0) lib/active_support/callbacks.rb:92:in `_run_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:734:in `_run_prepare_callbacks'
  activesupport (4.2.0) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:83:in `prepare!'
  actionpack (4.2.0) lib/action_dispatch/middleware/reloader.rb:71:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
  airbrake (4.1.0) lib/airbrake/rails/middleware.rb:13:in `call'
  better_errors (2.1.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
  better_errors (2.1.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
  better_errors (2.1.0) lib/better_errors/middleware.rb:57:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.2.0) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.2.0) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.2.0) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.2.0) lib/rails/rack/logger.rb:20:in `call'
  quiet_assets (1.1.0) lib/quiet_assets.rb:27:in `call_with_quiet_assets'
  actionpack (4.2.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.6.0) lib/rack/methodoverride.rb:22:in `call'
  rack (1.6.0) lib/rack/runtime.rb:18:in `call'
  activesupport (4.2.0) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
  rack (1.6.0) lib/rack/lock.rb:17:in `call'
  actionpack (4.2.0) lib/action_dispatch/middleware/static.rb:113:in `call'
  rack (1.6.0) lib/rack/sendfile.rb:113:in `call'
  airbrake (4.1.0) lib/airbrake/user_informer.rb:16:in `_call'
  airbrake (4.1.0) lib/airbrake/user_informer.rb:12:in `call'
  railties (4.2.0) lib/rails/engine.rb:518:in `call'
  railties (4.2.0) lib/rails/application.rb:164:in `call'
  rack (1.6.0) lib/rack/content_length.rb:15:in `call'
  thin (1.6.3) lib/thin/connection.rb:86:in `block in pre_process'
  thin (1.6.3) lib/thin/connection.rb:84:in `pre_process'
  thin (1.6.3) lib/thin/connection.rb:53:in `process'
  thin (1.6.3) lib/thin/connection.rb:39:in `receive_data'
  eventmachine (1.0.4) lib/eventmachine.rb:187:in `run'
  thin (1.6.3) lib/thin/backends/base.rb:73:in `start'
  thin (1.6.3) lib/thin/server.rb:162:in `start'
  rack (1.6.0) lib/rack/handler/thin.rb:19:in `run'
  rack (1.6.0) lib/rack/server.rb:286:in `start'
  railties (4.2.0) lib/rails/commands/server.rb:80:in `start'
  railties (4.2.0) lib/rails/commands/commands_tasks.rb:80:in `block in server'
  railties (4.2.0) lib/rails/commands/commands_tasks.rb:75:in `server'
  railties (4.2.0) lib/rails/commands/commands_tasks.rb:39:in `run_command!'
  railties (4.2.0) lib/rails/commands.rb:17:in `<top (required)>'
  bin/rails:4:in `<main>'

Something isn't right here, am I right?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions