Как получить все маршруты в моем приложении rails?
Можно ли получить все маршруты в моем приложении rails? Мне нужен вывод, например rake routes
, и поместите результат в массив.
Возможно ли это? как?
Ответы
Ответ 1
Вы могли бы взглянуть на то, как рельсы выплевывают эти маршруты из задачи рейка. Он находится в /gems/rails/2.3.x/lib/tasks/routes.rake
для Rails 2. В общем случае он делает в основном ActionController::Routing::Routes.routes
, а затем допрашивает это.
Ответ 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
Это то, что я использовал для создания всех разрешений для моей веб-страницы сразу.