首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

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

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

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)

?

?

?

====结束====

=== ? ? ? ? ? ===

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

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

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

?

热点排行