Ruby框架-请求入口点

Ruby框架-请求入口点,ruby,ruby-on-rails-3,frameworks,web-frameworks,Ruby,Ruby On Rails 3,Frameworks,Web Frameworks,我正在学习ruby并研究他的框架。我不明白的一件事是框架如何处理ruby世界中的请求。深入挖掘,我发现有一个叫做Rack的中间件可以完成这项工作 因此,我的问题是: 机架如何处理HTTP请求 来自PHP,其中有著名的“index.PHP”文件作为入口点,这是ruby世界中的勘误表 提前感谢。来自机架规格: Rack应用程序是响应调用的Ruby对象(不是类)。它只接受一个参数,即环境,并返回一个包含三个值的数组:status、header和body 实际上,机架应用程序启动的常用方式是在con

我正在学习ruby并研究他的框架。我不明白的一件事是框架如何处理ruby世界中的请求。深入挖掘,我发现有一个叫做Rack的中间件可以完成这项工作

因此,我的问题是:

  • 机架如何处理HTTP请求
  • 来自PHP,其中有著名的“index.PHP”文件作为入口点,这是ruby世界中的勘误表

提前感谢。

来自机架规格:

Rack应用程序是响应调用的Ruby对象(不是类)。它只接受一个参数,即环境,并返回一个包含三个值的数组:status、header和body

实际上,机架应用程序启动的常用方式是在config.ru文件中定义的。如果您查看rails应用程序的基本目录,您将看到它。在rails中,它包括config/environment.rb,其中包括config/application.rb,其中包括boot.rb,其中包括gems等等。从这一点开始,框架开始做它的事情

rails的总体思想是调度器接受任何请求并决定需要对其执行什么操作。可以将dispatcher视为您提到的index.php的等价物

config.ru文件的访问方式(或机架应用程序的启动方式)取决于应用程序的部署方式。Phusion Passenger是apache和nginx的流行模块,它将在添加到服务器配置文件的任何应用程序的根目录中查找config.ru

这实际上取决于部署选项。Ruby应用程序可以通过apache/nginx模块运行,可以直接通过Ruby编写的web服务器运行,也可以通过CGI运行


+1谢谢,非常有用的回复!因此,请求以类似的方式处理,但在ruby中,我们已经“预加载”了应用程序进程,等待某个事件(调用)发生。虽然在PHP框架中没有“预加载”的应用程序,但它会加载到每个请求中。我是对的?我并不完全熟悉典型的PHP部署,但是当通过CGI使用PHP时,每次都必须启动应用程序。如果通过CGI使用Ruby,也会做同样的事情。Phusion Passenger将ruby应用程序的实际实例保存在内存中,因此请求不必每次都启动一个新进程。