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

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

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

最佳答案

如果您想了解 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 中,除了 documented 及其 code itselfopen 问题之外,它的文档极其稀疏(Journey::Router::Utils.normalize_path(path) 是 closed )。你可以看看另一个 S.O.带有 journey 标签的帖子。

一些代码只是通过方法名称等进行自我描述,就像在 Journey::Routes 中一样。 Journey 的 tests 也是了解其工作原理的好方法。

关于代码本身的一些说明:

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

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

    关于ruby-on-rails - Rails 路由器之旅如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16822914/

    10-11 13:47