2

确定您是否在 CLI 中运行(如 PHP 中的 php_sapi_name 函数)与处理 HTTP 请求的 Ruby 约定是什么?

我在想我可以测试是否定义了请求,或者其他一些推理方法,但必须有一个我应该遵循的约定。

4

1 回答 1

1

这里没有标准化的方法,因为 Ruby 是一种脚本语言,它可能嵌入也可能不嵌入到 Web 服务器进程中。它也可能作为断开连接的后台进程运行,尽管不一定是面向 Web 的。

在 HTTP 环境中,您通常会定义类似于CGI 规范ENV['SERVER_NAME']中的其他变量。这些不会出现在命令行环境中。

一般来说,最好测试一下您是在 Rack 或 Rails 中运行,还是在使用任何特定的 Web 框架来与 HTTP 层交互。例如,defined?(Rails)将指示 Rails 是否已加载,尽管对于rake任务和rails console类型使用也是如此。

于 2013-01-14T16:10:20.040 回答