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