7

查看Journey Router(即 Rails 4.0 路由器)的自述文件,它相当空洞。我想知道路由器在概念上是如何工作的,如果这个“抽象”语法抓住了路由器作为迷你编程语言的想法:

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

那么,Rails 4.0 路由器是如何工作的呢?

4

1 回答 1

12

如果您想了解 Rails 路由,最好的起点是边缘指南中的Rails Routing from the Outside In

在那之后,您会更幸运地查看ActionDispatch::Routing's docs

注意:以下内容与撰写本文时最新的 Journey v1.0.4 有关。

Journey 本身就是Rails 3.2 中引入的 Rails 路由引擎。在发行说明中,它用一个声明进行了描述:“由于新的Journey引擎,路线识别也变得更快了。” 当然,关于 Journey 的具体信息并不多,但 Rails 并没有描述每个实现细节。那将永远需要!:) Journey 的gemspec还用以下语句描述自己:“Journey 是一个路由器。它路由请求。”

您可以查看api 文档,但在 v1.0.4 中,除了代码本身以及可能是它的开放封闭问题之外,它的文档非常稀疏(Journey::Router::Utils.normalize_path(path) 已记录) 。您可以查看带有标签Journey的其他 SO 帖子。

某些代码只是通过方法名称等在某种程度上具有自我描述性,例如Journey::Routes。Journey 的测试也是了解其工作原理的好方法。

关于代码本身的一些注释:

  • 它在 Ruby 1.9 之前的版本中对Hash 进行猴子补丁以添加 keep_if 方法。
  • “gtg”代表“广义转移图”(见这里
  • 最有趣的代码在这里(复活节彩蛋:rails c然后Journey::Path::Pattern.new(9)

Journey 的可视化器可能也很有趣(注意Journey::GTG::TransitionTable 中的可视化器方法)。示例可视化在这里,在线演示现在在这里

于 2013-05-29T20:49:17.267 回答