In Rails, how to see all the "path" and "url" methods added by Rails's routing? (update: using Rails console)

Ruby on-RailsRuby on-Rails-3

Ruby on-Rails Problem Overview


[update: by not using rake routes, just to understand Rails console a little more]

It seems like inside of "rails console" for Rails 3, we can use controller, but in Rails 2.2 or 2.3, we need to use @controller

And in Rails 3, we can print out all the routes added by Rails routing for a scaffold foo:

ruby-1.9.2-p0 > puts controller.public_methods.grep(/path|url/).grep(/foo/).sort.join("\n")
edit_foo_path
edit_foo_url
foo_path
foo_url
foos_path
foos_url
new_foo_path
new_foo_url

but on Rails 2.3.8, it gives a bunch of formatted_foos_path, etc, and gives nothing for Rails 2.2.2. How to make it print out for Rails 2.3.8 and 2.2.2?


Details for Rails 2.3.8:

ruby-1.8.7-p302 > puts @controller.public_methods.grep(/path|url/).grep(/foo/).sort.join("\n")
formatted_edit_foo_path
formatted_edit_foo_url
formatted_foo_path
formatted_foo_url
formatted_foos_path
formatted_foos_url
formatted_new_foo_path
formatted_new_foo_url

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

Rails 3.x–6.x

Rails.application.routes.named_routes.helper_names

Rails 2.x

helpers = Rails.application.routes.named_routes.helpers

This will get you all the named route methods that were created. Then you can do helpers.map(&:to_s), and whatever regex you want to get your foo versions

Solution 2 - Ruby on-Rails

or load up localhost_path/rails/info/routes in your browser.

Solution 3 - Ruby on-Rails

Well in Rails 4, I use rake routes. Is it that you need?

Solution 4 - Ruby on-Rails

Rails >= 6.1

I just upgraded an app to 6.1.4 and noticed that rake routes no longer works.

Instead we can run bin/rails routes > To get a complete list of the available routes in your application, visit http://localhost:3000/rails/info/routes in your browser while your server is running in the development environment. You can also execute the bin/rails routes command in your terminal to produce the same output.

Docs: https://guides.rubyonrails.org/routing.html#listing-existing-routes

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionnonopolarityView Question on Stackoverflow
Solution 1 - Ruby on-RailsnzifnabView Answer on Stackoverflow
Solution 2 - Ruby on-RailsJoe JansenView Answer on Stackoverflow
Solution 3 - Ruby on-Railsmetronom72View Answer on Stackoverflow
Solution 4 - Ruby on-RailsNM PennypackerView Answer on Stackoverflow