查看Journey Router(即 Rails 4.0 路由器)的自述文件,它相当空洞。我想知道路由器在概念上是如何工作的,如果这个“抽象”语法抓住了路由器作为迷你编程语言的想法:
ROUTE := GET|POST|PUT|DELETE path
path := (static_path) | (dynamic_path)
那么,Rails 4.0 路由器是如何工作的呢?
查看Journey Router(即 Rails 4.0 路由器)的自述文件,它相当空洞。我想知道路由器在概念上是如何工作的,如果这个“抽象”语法抓住了路由器作为迷你编程语言的想法:
ROUTE := GET|POST|PUT|DELETE path
path := (static_path) | (dynamic_path)
那么,Rails 4.0 路由器是如何工作的呢?
如果您想了解 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 的测试也是了解其工作原理的好方法。
关于代码本身的一些注释:
rails c
然后Journey::Path::Pattern.new(9)
)Journey 的可视化器可能也很有趣(注意Journey::GTG::TransitionTable 中的可视化器方法)。示例可视化在这里,在线演示现在在这里。