我正在学习 ruby 并查看他的框架。我无法理解的一件事是框架如何处理 ruby 世界中的请求。深入挖掘后,我发现有一个名为 Rack 的中间件可以完成这项工作。
所以我的问题是:
- Rack 如何处理 HTTP 请求?
- 来自以著名的“index.php”文件作为入口点的 PHP,这是 ruby 世界的对应物?
提前致谢。
最佳答案
来自机架规范:
Rack 应用程序是响应调用的 Ruby 对象(不是类)。它只接受一个参数,即环境,并返回一个恰好包含三个值的数组:状态、 header 和正文。
在实践中,启动机架应用程序的常用方式是在 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 运行。
Here is a description of the different ways web apps are deployed, from the passenger docs
关于Ruby 框架 - 请求入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5119204/