gpt4 book ai didi

ruby-on-rails - Rails 3 请求调度周期

转载 作者:太空宇宙 更新时间:2023-11-03 16:38:07 25 4
gpt4 key购买 nike

我正在研究 Rails 3 架构,以了解发送请求的过程。整个过程非常简单。应用程序是一个 Rack 应用程序,它最终将其调用消息委托(delegate)给 ActionDispatch::Routing::RouteSet 的调用方法,该方法调度必要的 Controller 的适当操作。它通过键“action_dispatch.request.path_parameters”从存储在 rack env 中的散列中获取 Controller 和操作名称。

所以问题是:谁设置了这个散列?谁解析请求 uri 并确定操作和 Controller 名称?

我找不到这段代码。我看到在路由配置期间,ActionDispatch::Routing::Mapper 对象用于构造有关已定义路由的信息并将其存储在 ActionDispatch::Routing::RouteSet 中。但是在请求期间如何使用此信息来找到适当的操作和 Controller 。 Rack 是否也以某种方式参与其中?

最佳答案

“action_dispatch.request.path_parameters”存储为常量 ActionDispatch::Routing::RouteSet::PARAMETERS_KEY (actionpack/lib/action_dispatch/routing/route_set.rb)

PARAMETERS_KEY 稍后在同一个文件中使用,并传递给 ::Rack::Mount::RouteSet

的构造函数

转到 ::Rack::Mount::RouteSet 来源:https://github.com/josh/rack-mount/blob/master/lib/rack/mount/route_set.rb#L22您可以看到存储了属性名称。

同一个文件,在 call(env) 方法中,这当然是将被调用的 Rack 接口(interface),我们看到这一行 ( https://github.com/josh/rack-mount/blob/master/lib/rack/mount/route_set.rb#L147 ) 你的 env[ “action_dispatch.request.path_parameters”] 属性实际上已设置,并最终返回到您正在调查的代码中。

希望这对您有所帮助!

关于ruby-on-rails - Rails 3 请求调度周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4416391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com