Я пытаюсь сгенерировать список всех маршрутов, сгенерированных моим подклассом Grape :: API (MyApi).
Я могу приблизиться, позвонив:
MyApi.send(:route_set).instance_variable_get(:@routes)
, который дает мне массив объектов Rack :: Mount :: Route.
Единственный полезный атрибут объекта Route: условия, которые возвращают хэш, подобный этому:
:path_info => (?-mix:\\A\\/api\\/(?<version>v1)\\/token(?:\\.(?<format>[^\\/]+))?\\Z)", "k: request_method, v: (?-mix:\\AGET\\Z)
Как вы можете видеть значение хеш является регулярным выражением для сопоставления пути маршрута. Я также могу использовать: named_captures для получения всех именованных захватов из регулярного выражения:
{:path_info=>{:version=>0, :format=>1}, :request_method=>{}}
В конечном итоге я пытаюсь создать список всех маршрутов, созданных с помощью Grape :: API, их полный путь и т. Д. Для меня имеет смысл попытаться деконструировать регулярное выражение в условиях. Есть ли другой способ доступа / создания удобочитаемого пути для Rack :: Mount :: Route?