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)
?
?
?
====结束====
=== ? ? ? ? ? ===
== ? ? ? ? ? ? ? ?==
= ? ? ? ? ? ? ? ? ? ? =
| ? ? ? ? ? ? ? ? ? ? ? |
?