Как работает Rails router Journey?
Глядя на Readme маршрутизатора Journey Router (который является маршрутизатором Rails 4.0), он довольно пуст. Мне было интересно, как маршрутизатор работает концептуально, и если этот "абстрактный" грамматик поймает идею, маршрутизатора как язык мини-программирования:
ROUTE := GET|POST|PUT|DELETE path
path := (static_path) | (dynamic_path)
Итак, как работает Rails Rails 4.0?
Если вы хотите понять маршрутизацию 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). Пример визуализации здесь и онлайн-демонстрация здесь.
Еще в рубрике
- Вопросы
- Ruby-on-rails
- Как работает Rails router Journey?