如何在我的 Rails 应用程序中获取所有路线?
Posted
技术标签:
【中文标题】如何在我的 Rails 应用程序中获取所有路线?【英文标题】:how get all routes in my rails application? 【发布时间】:2011-04-10 00:13:53 【问题描述】:我可以在我的 rails 应用程序中获取所有路线吗?我需要像rake routes
这样的输出并将结果放入一个数组中。
有可能吗?怎么样?
【问题讨论】:
你在哪里需要这个输出? 对于 Rails 3:Rails.application.routes.routes.to_a
(参见my original answer)
【参考方案1】:
您可以查看 rails 从 rake 任务中吐出这些路线的方式。它在 Rails 2 的 /gems/rails/2.3.x/lib/tasks/routes.rake
中。在一般情况下似乎基本上是在做 ActionController::Routing::Routes.routes
然后审问。
【讨论】:
对于 Rails 4,它现在位于 railties gem 中 谢谢@Shadwell - 你知道我如何访问它吗? 非常非常古老的答案。你可能在这里有一些运气:github.com/rails/rails/blob/master/railties/lib/rails/commands/…【参考方案2】:好吧,不管你在哪里需要它,你都可以这样做:
routes = `rake routes`.split("\n")
甚至:
routes = `rake routes`.split("\n").map |r| r.gsub(', ', ',').split(' ')
【讨论】:
【参考方案3】:为了分散实现这一点的头痛,我根据@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
这是我用来一次为我的网页创建所有权限的方法。
【讨论】:
以上是关于如何在我的 Rails 应用程序中获取所有路线?的主要内容,如果未能解决你的问题,请参考以下文章
Rails 6 如何使用 Octokit 从 Github 文件获取中处理 404