Rails路由器Journey如何工作?

时间:2013-05-29 20:07:52

标签: ruby-on-rails journey

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

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

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

1 个答案:

答案 0 :(得分:10)

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

在此之后,您会看到ActionDispatch::Routing的{​​{3}}更多运气。

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

Journey本身是Rails 3.2中的Rails路由引擎docs。在发行说明中,它用一个声明来描述:“由于新的introduced引擎,路由识别也变得更快。”当然,这并不是关于Journey的大量信息,但是Rails没有描述每个实现细节;这需要永远! :) Journey的Journey也用自己的声明描述:“Journey是路由器。它路由请求。”

你可以查看gemspec,但是在v1.0.4中,它有非常稀疏的文档(Journey :: Router :: Utils.normalize_path(path)是api docs)而不是{{ 3}}以及它的documentedcode itself问题。你可以看看另一个S.O.标记为open的帖子。

有些代码只是通过方法名称等在closed中有点自我描述。 Journey journey也是了解其运作方式的好方法。

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

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

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