【发布时间】:2014-12-12 06:55:47
【问题描述】:
我在 Ubuntu 上安装了带有 apache 的 phusion-passenger。在我的 config.ru 中,我有以下代码:
require 'cgi'
$tpl = CGI.new['myvar'] + '.rb'
app = proc do |env|
[200, { "Content-Type" => "text/html" }, [$tpl]]
end
run app
然后,当我打开浏览器http://localhost/?myvar=hello 时,我看到打印出了hello 这个词,这很好。然后我把url改成http://localhost/?myvar=world,但是页面还是显示hello。只有在我重新加载 apache 后,页面才会显示 world。
在使用 phusion-passenger 之前,我将 mod_ruby 与 apache 一起使用。如果我没记错的话,我不需要重新启动 apache 来获取 CGI 变量来打印更新的值。
我不拘泥于需要使用 CGI。我只是希望能够抓取查询字符串参数,而不必每次都重新加载 apache。
我没有使用 rails 或 Sinatra,因为我只是想了解一下 Ruby 语言以及 apache 的 phusion-passenger 是什么。
【问题讨论】:
-
“我没有使用 Rails 或 Sinatra,因为我只是想了解一下 Ruby 语言以及 apache 的 phusion-passenger 是什么。”那你真的会走上一条艰难的道路。我们很少使用 Rack,我们使用 Sinatra、Padrino 或 Rails,并将 Rack 视为最简单的事情的不可见层,当我们需要处理 HTTPd 和控制层之间的数据流时,Rack 会很有用。 Ruby 不是 Rack,Rack 是 HTTPd 和 Ruby 控制层之间的中间件,比如 Sinatra。