Ruby框架 - 请求入口点

时间:2011-02-25 15:39:38

标签: ruby ruby-on-rails-3 frameworks web-frameworks

我正在学习ruby并查看他的框架。我无法理解的一件事是框架如何处理ruby世界中的请求。深入挖掘我发现有一个名为Rack的中间件可以完成这项任务。

所以我的问题是:

  • Rack如何处理HTTP请求?
  • 来自PHP,其中有着名的“index.php”文件作为入口点,这是红宝石世界中的一个角色?

提前致谢。

1 个答案:

答案 0 :(得分:4)

从机架规格:

Rack应用程序是响应调用的Ruby对象(不是类)。它只需要一个参数,即环境,并返回一个恰好包含三个值的数组:状态,标题和正文。

在实践中,启动机架应用程序的常用方法是在config.ru文件中定义。如果您查看rails应用程序的基本目录,您将看到它。在rails中,它包括config / environment.rb,其中包括config / application.rb,其中包括boot.rb,其中包括gem和whatnot。从那时起,框架开始做它的事情。

使用rails的一般想法是调度程序接受任何请求并决定需要对其执行的操作。调度程序可以看作是你提到的index.php的等价物。

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

真正归结为部署选项。 Ruby应用程序可以通过apache / nginx模块运行,直接通过用ruby编写的Web服务器运行,也可以通过CGI运行。

Here is a description of the different ways web apps are deployed, from the passenger docs