Как получить все маршруты в моем приложении рельсов? - PullRequest
20 голосов
/ 09 сентября 2010

можно ли получить все маршруты в моем приложении rails?Мне нужен вывод типа rake routes и поместить результат в массив.

Возможно ли это?как?

Ответы [ 3 ]

17 голосов
/ 09 сентября 2010

Вы могли бы посмотреть, как рельсы выпрыгивают из этих маршрутов из задачи грабли. Это в /gems/rails/2.3.x/lib/tasks/routes.rake для Rails 2. Кажется, что в основном делает ActionController::Routing::Routes.routes в общем случае, а затем опрашивает это.

9 голосов
/ 09 сентября 2010

Ну, независимо от того, где вам это нужно, вы можете сделать:

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

Или даже:

routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }
6 голосов
/ 05 марта 2014

Для того, чтобы распространить головную боль, которая была связана с этим, я сделал это на основе ответа @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

Это было то, что я использовал для создания всех разрешений для моей веб-страницы водин раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...