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

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

可能吗? 怎么样?

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

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

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

甚至:

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

为了传播令人头疼的问题,我根据@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 

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