读书人

Rails源码翻阅(七)ActionController

发布时间: 2012-12-19 14:13:14 作者: rapoo

Rails源码阅读(七)ActionController::Dispatcher_用户请求在rails中的处理流程(2)

Rails源码阅读(七)ActionController::Routing::Routes_用户请求在rails中的处理流程(2)

?

ActionController::Dispatcher把主要工作交给了ActionController::Routing::Routes.call(@env)

ActionController::Routing::Routes的代码:

ActionController::Base.call方法(注意这里是类方法!):    class << self      def call(env)        # HACK: For global rescue to have access to the original request and response        request = env["action_controller.rescue.request"] ||= Request.new(env)        response = env["action_controller.rescue.response"] ||= Response.new        process(request, response) #这里!      end      # ActionController::Base.process代码:      # Factory for the standard create, process loop where the controller is discarded after processing.      def process(request, response) #:nodoc:        new.process(request, response)      end    end

?

?

?

总结:

#1 RouteSet的call方法,根据访问链接和路由配置,识别出了应该去找哪个XXXController,同时找哪个action也得到了,放入params:

Parameters: {"method"=>:get, "action"=>"follow", "controller"=>"profile"}

#2 执行XXXController.run方法

到这里,执行流程到了:ActionController::Base,即:ActionController::Base.process方法。

?

?

?

====结束====

=== ? ? ? ? ? ===

== ? ? ? ? ? ? ? ?==

= ? ? ? ? ? ? ? ? ? ? =

| ? ? ? ? ? ? ? ? ? ? ? |

?

读书人网 >网络基础

热点推荐