Список всех маршрутов в приложении 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

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

Надеюсь, поможет!

Другие вопросы по тегам