0

我正在尝试让 Erubis 设置来处理 Apache Web 服务器上的 .rhtml 文件。

我安装了 Ruby (v 1.9.2p290),并通过 Ruby Gems 安装了 Erubis(2.7.0)。

我似乎找不到配置 httpd.conf 文件的正确方法——我在http://www.ruby-doc.org/docs/ProgrammingRuby/html/web 找到了在 Apache 上设置 eruby 的指南。 html - 我尝试使用这些配置设置,重新启动 apache 等...但是 rhtml 文件没有被解析(它只是将 ruby​​ 表达式输出为纯文本)

我在 httpd.conf 文件中添加了以下几行,但它没有做任何事情——

AddType application/x-httpd-eruby .rhtml
Action application/x-httpd-eruby /cgi-bin/eruby

如果我安装的是 eruby 本身,而不是 erubis,我觉得这会起作用。除了通过我已经完成的 gem 安装之外,erubis 网站没有提供任何关于如何启动和运行的明确示例。

我还尝试将文件和 conf 设置从 .rhtml 更改为 .eruby,以防万一,但这也不起作用。

请帮忙!

4

1 回答 1

3

显然,这种使用嵌入式 Ruby 的方式已不再可行,但我也想运行 erubis,并找到一种方法来让 erubis 处理 .rhtml 页面,方法是添加 CGI shell 脚本以将请求的页面传递给 erubis。我的解决方案在这里描述:

http://techdog.tumblr.com/post/36496065877/configure-erubis-cgi-in-apache


我在Ubuntu 12.04Ruby 1.8.7上有Apache/2.2.22。我安装了erubis 2.7.0实现并将可执行的 erubis 文件复制到 Apache 的 cgi 文件夹,在我的例子中是 /usr/lib/cgi-bin/erubis。

我配置了一个名为 erubis.sh 的 cgi 脚本,通过将这些指令添加到 /etc/apache/httpd.conf 来处理对 .rhtml 文件的请求:

AddType application/x-httpd-eruby .rhtml  
Application application/x-httpd-eruby /cgi-bin/erubis.sh

我通过运行以下命令确保启用了 Action 模块:

$ sudo a2enmod action

我创建了这个 bash shell 脚本erubis.sh来处理对嵌入了 ruby​​ 的页面的请求:

#!/bin/bash  
echo "Content-type: text/html"  
echo  
echo "<!DOCTYPE HTML>"  
erubis -E Stdout <$DOCUMENT_ROOT$REQUEST_URI

它输出一个最小的 http 标头,然后要求 erubis 处理所请求的包含嵌入式 Ruby 的 .rhtml 文件。Stdout 增强选项似乎需要在正确的位置获得嵌入式 Ruby 块的输出。

于 2012-11-25T07:59:31.470 回答