【问题标题】:How does the Rails router Journey work?Rails 路由器 Journey 是如何工作的?
【发布时间】:2013-05-29 20:07:51
【问题描述】:

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

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

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

【问题讨论】:

  • 有趣的是,概要说Too complex right now. :(

标签: ruby-on-rails journey


【解决方案1】:

如果您想了解 Rails 路由,最好从边缘指南中的Rails Routing from the Outside In 入手。

在那之后,看看ActionDispatch::Routingdocs,你会有更多的运气。

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

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

您可以查看api docs,但在 v1.0.4 中,它的文档非常稀疏(Journey::Router::Utils.normalize_path(path) is documented),而不是code itself,也许还有它的openclosed 问题。你可以看看其他 S.O.带有标签journey的帖子。

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

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

  • monkey-patches Hash 在 Ruby 1.9 之前的版本中添加了一个 keep_if 方法。
  • “gtg”代表“广义转移图”(见here
  • 最有趣的代码是here(复活节彩蛋:rails c 然后是Journey::Path::Pattern.new(9)

Journey 的visualizer 可能也很有趣(注意Journey::GTG::TransitionTable 中的visualizer 方法)。示例可视化here,以及在线演示here

【讨论】:

  • 谢谢,Gary,你的答案的最后一部分正是我想要的。
猜你喜欢
  • 2019-08-24
  • 1970-01-01
  • 2021-09-29
  • 2012-09-07
  • 2016-12-21
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
相关资源
最近更新 更多