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

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

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

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

1 ответ

Решение

Если вы хотите разбираться в маршрутизации Rails, лучше всего начать с маршрутизации Rails с внешней стороны в руководстве по краям.

После этого вам повезет больше, глядя на ActionDispatch::Routing Документы.

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

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

Вы можете взглянуть на API- интерфейсы, но в v1.0.4 он имеет крайне скудную документацию (документирован Journey::Router::Utils.normalize_path(путь)), кроме самого кода и, возможно, его открытых и закрытых проблем. Вы можете взглянуть на другие SO сообщения с тегом trip.

Часть кода является несколько информативной только через имена методов и т. Д., Как в Journey:: Routes. Тесты Journey также являются отличным способом увидеть, как это работает.

Некоторые замечания по самому коду:

  • Он исправляет Hash в версиях Ruby до 1.9, чтобы добавить метод keep_if.
  • "gtg" означает "обобщенный граф переходов" (см. здесь)
  • Самый смешной код здесь (пасхальное яйцо: rails c затем Journey::Path::Pattern.new(9))

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

Другие вопросы по тегам