2016-09-17 11 views
1

В Rails просмотреть все маршруты я определил с помощью:Список всех маршрутов в приложении Рода

rake routes

Есть встроенный способ сделать это в приложении Рода?

Если нет, то есть общий шаблон разработчики Рода использовать для быстрого просмотра всех маршрутов (возможно Rake задача некоторых видов?)

ответ

1

Автоматически не представляется возможным. roda маршруты динамически оцениваются при поступлении запроса, поэтому они не загружаются до и не хранятся в какой-либо структуре данных.

documentation Как говорит:

Блок маршрут называется всякий раз, когда новый запрос приходит Он дал экземпляр подкласса Rack :: Request с некоторыми дополнительными методами для согласования маршрутов..

простое решение, которое требует минимальных усилий, чтобы использовать roda-route_list плагин, но он нуждается поясняющий комментарий на вершине каждого маршрута в файле app.rb, как это:

# route: /path/to/foo 
# route: GET /path/to/foo 
# ... 

(проверить documentation для других возможностей)

Затем вы должны создать файл, содержащий JSon метаданные маршрутов, вы можете сделать это запуск сценария поставляется с roda-route_list плагин

roda-parse_routes -f routes.json app.rb 

Это создает файл routes.json в корневом каталоге вашего приложения, и, наконец, вы можете получить список маршрутов с:

route_list # => [{:path=>'/path/to/foo', :methods=>['GET', 'POST']}] 
# (it is an Array of route metadata hashes) 

Вы можете также создать простую задачу грабли перечислить все маршруты, что-то вроде этого:

# Rakefile 
require 'roda' 

namespace :routes do 
    task :list do |task| 
    class App < Roda 
     plugin :route_list 
     puts route_list 
    end 
    end 
end 

может быть, есть более элегантное решение, чем этот фрагмент кода, но это работает :)

Ho Это помогает!