Список всех маршрутов в приложении Roda
В Rails я просматриваю все маршруты, которые я определил через:
rake routes
Есть ли встроенный способ сделать это в приложении Roda?
Если нет, то есть ли распространенный шаблон, который используют разработчики Roda для быстрого просмотра всех маршрутов (может быть, какое-нибудь задание Rake?)
1 ответ
Автоматически это невозможно. roda
маршруты поступают динамически при поступлении запроса, поэтому они не загружаются ранее и сохраняются в доступной где-то структуре данных.
Как сказано в документации:
Блок маршрута вызывается всякий раз, когда поступает новый запрос. Ему предоставляется экземпляр подкласса Rack::Request с некоторыми дополнительными методами для сопоставления маршрутов.
Простое решение, которое требует минимальных усилий, заключается в использовании roda-route_list
плагин, но он нуждается в пояснительном комментарии в верхней части каждого маршрута в вашем app.rb
файл, как это:
# route: /path/to/foo
# route: GET /path/to/foo
# ...
(проверьте документацию для других возможностей)
Затем вам нужно создать файл 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)
Вы можете также создать простую задачу rake для перечисления всех маршрутов, что-то вроде этого:
# Rakefile
require 'roda'
namespace :routes do
task :list do |task|
class App < Roda
plugin :route_list
puts route_list
end
end
end
может быть, есть более элегантное решение, чем этот фрагмент, но это работает:)
Надеюсь, поможет!