Как работает Rails router Journey?

77
6

Глядя на Readme маршрутизатора Journey Router (который является маршрутизатором Rails 4.0), он довольно пуст. Мне было интересно, как маршрутизатор работает концептуально, и если этот "абстрактный" грамматик поймает идею, маршрутизатора как язык мини-программирования:


ROUTE := GET|POST|PUT|DELETE   path
path := (static_path) | (dynamic_path)

Итак, как работает Rails Rails 4.0?

спросил(а) 2013-05-29T23:07:00+04:00 6 лет, 6 месяцев назад
1
Решение
99

Если вы хотите понять маршрутизацию Rails, лучшее место для начала - Rails Routing from Outside In в краевом руководстве.


После этого у вас будет больше удачи, глядя на ActionDispatch::Routing docs.


Примечание. Следующее относится к Journey v1.0.4, который был самым последним в момент написания.


Само путешествие - это механизм маршрутизации Rails представлен в Rails 3.2. В примечаниях к выпуску описывается одно выражение: "Распознавание маршрута также получило связку быстрее благодаря новому движку Journey." Разумеется, это не так много информации о путешествии, но Rails не описывает каждую деталь реализации; это навсегда!:) Journey gemspec также описывает себя с утверждением: "Путешествие - это маршрутизатор, который направляет запросы".


Вы можете посмотреть api docs, но в версии 1.0.4 он имеет крайне редкую документацию (Journey:: Router:: Utils.normalize_path (путь) документально), кроме самого кода и, возможно, его open и closed проблемы. Вы можете взглянуть на другого С.О. сообщения с тегом journey.

Некоторые из кода несколько самоописательны только через имена методов и т.д., как в Journey:: Routes. Journey тесты - отличный способ увидеть, как это работает.


Некоторые заметки о самом коде:


    monkey-patches Hash в версиях Ruby до 1.9 версии для добавления метода keep_if.
    "gtg" означает "обобщенный график перехода" (см. здесь)
    Самый забавный код здесь (Easter egg: rails c then Journey::Path::Pattern.new(9))

Путешествие visualizer может быть интересно поиграть с ним (примечание визуализатор в Journey:: GTG:: TransitionTable). Пример визуализации здесь и онлайн-демонстрация здесь.

ответил(а) 2013-05-29T23:49:00+04:00 6 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема