Action Dispatch RouteSet 路由底层(实现方式)

Routing 定义应用的路由后,由 RouteSet 底层实现。

本章节偏低层,如果你不能掌握,可以先跳过。

RouteSet 概述

  • 特指 route_set.rb 及 routes_proxy.rb 两文件

  • 本身就充满魔法,是 Routing 里的一个模块。

  • 还是内外沟通的桥梁。

  • 内指 Journey.

  • 外指对外的接口及 routing 目录里的其它内容。

require 'action_dispatch'

routes = ActionDispatch::Routing::RouteSet.new

routes.draw do
  get '/' => 'mainpage#index'
  get '/page/:id' => 'mainpage#show'
end

从 Action Dispatch 转换站场到 Action Controller. (准确点:Action Dispatch -> Metal -> Abstract Controller -> Action Controller)

# route_set.rb
def dispatch(controller, action, env)
  controller.action(action).call(env)
end

除上述外,还有:

Routes Proxy # 从 RouteSet 里抽取而来

最后更新于