Доступ к скомпилированным маршрутам в Grape / Rack :: Mount :: Route

Я пытаюсь сгенерировать список всех маршрутов, сгенерированных моим подклассом 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?

9
задан dB. 13 February 2013 в 18:48
поделиться