how get all routes in my rails application?

21,476

Solution 1

You could have a look at way rails spits out those routes from the rake task. It's in /gems/rails/2.3.x/lib/tasks/routes.rake for Rails 2. Seems to be basically doing ActionController::Routing::Routes.routes in the general case and then interrogating that.

Solution 2

Well, independently of where you need it, you could do:

routes = `rake routes`.split("\n")

Or even:

routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }

Solution 3

In order to spread the headache that it was to acomplish that, i did this based on @jordini answer:

 Rails.application.routes.routes.to_a.each do |rota|
   if rota.app.instance_variable_defined? '@defaults'
      perm = Permission.where({
        :acao => rota.defaults[:action],
        :controller => rota.defaults[:controller], 
        :verbo => rota.verb.source.to_s.gsub("^","").gsub("$","").downcase
      ).first_or_create
    end
 end

This was what i've used to create all permissions for my web page at once.

Share:
21,476
el_quick
Author by

el_quick

Just a developer more.

Updated on May 09, 2020

Comments

  • el_quick
    el_quick about 4 years

    can I get all routes in my rails application? I need an output like rake routes and put the result in an array.

    Is it possible? how?

  • Neikos
    Neikos almost 10 years
    For Rails 4 it is now in the railties gem
  • BenKoshy
    BenKoshy about 5 years
    thank you @Shadwell - do you know how I could access that?
  • Shadwell
    Shadwell about 5 years
    Very, very old answer this. You might have some luck here : github.com/rails/rails/blob/master/railties/lib/rails/comman‌​ds/…