读书人

Rails源码阅览(六)ActionController

发布时间: 2012-09-24 13:49:42 作者: rapoo

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

Rails源码阅读(六)ActionController::Dispatcher和接下来的处理流程_用户请求在rails中的处理流程(1)

--紧接这一节:Rails源码阅读(二)_script/server

前面的分析小回顾:

用户的请求,经过rack的栈后,终于到了rails的ActionController::Dispatcher,这也是一个rack的实现,因此,请求会去调用ActionController::Dispatcher的call方法,并且应该返回一个样子的数组:[status, header, body]

?

=ActionController::Dispatcher的new代码:

    def dispatch      begin        run_callbacks :before_dispatch        Routing::Routes.call(@env)      rescue Exception => exception        if controller ||= (::ApplicationController rescue Base)          controller.call_with_exception(@env, exception).to_a        else          raise exception        end      ensure        run_callbacks :after_dispatch, :enumerator => :reverse_each      end    end

在这里,dispach做的真正的操作交给了Routing::Routes.call(@env)?

?

?

总结:

ActionController::Dispatcher这个rack的call操作做了哪些操作:

#1 根据配置build出了一个rack栈(并没有用栈,怎么实现的上面讲了)

#2 在develop中,@@cache_classes是false,每次请求都重新build一次rack-stack

#3 dispach操作,交给了ActionController::Routing::Routes.call(@env)

?

?

?

====结束====

=== ? ? ? ? ? ===

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

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

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

?

读书人网 >网络基础

热点推荐