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

时间:2010-09-08 23:00:29

标签: ruby-on-rails ruby routes

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

有可能吗?如何?

3 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:10)

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

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

甚至:

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

答案 2 :(得分: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

这是我以前用于为我的网页立即创建所有权限的内容。