如何获取我的rails应用程序中的所有路由?

el_*_*ick 20 ruby routes ruby-on-rails

我可以在rails应用程序中获取所有路由吗?我需要一个输出rake routes,并将结果放在一个数组中.

可能吗?怎么样?

Sha*_*ell 17

你可以看一下rails从rake任务中吐出那些路径的方式.它/gems/rails/2.3.x/lib/tasks/routes.rake适用于Rails 2.似乎基本上ActionController::Routing::Routes.routes是在一般情况下进行,然后询问它.

  • 对于Rails 4来说,它现在是铁路宝石 (2认同)

jor*_*inl 9

那么,无论你需要什么,你都可以:

routes = `rake routes`.split("\n")
Run Code Online (Sandbox Code Playgroud)

甚至:

routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }
Run Code Online (Sandbox Code Playgroud)


小智 6

为了传播它所表达的头痛,我根据@jordini回答:

 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
Run Code Online (Sandbox Code Playgroud)

这就是我以前用于为我的网页创建所有权限的原因.