我正在努力让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.html找到了在Apache上设置eruby的指南 - 我尝试使用这些配置设置,重启apache,等...但是没有解析rhtml文件(它只是将ruby表达式输出为平面文本)
我在httpd.conf文件中添加了以下行,但它没有做任何事情 -
AddType application/x-httpd-eruby .rhtml
Action application/x-httpd-eruby /cgi-bin/eruby
如果我自己安装eruby而不是erubis,我觉得这样可行。除了通过我已经完成的宝石安装之外,erubis网站没有提供任何有关如何启动和运行的明确示例。
我还尝试将文件和conf设置从.rhtml更改为.eruby,以防万一,这也无效。
请帮忙!
答案 0 :(得分:3)
显然这种使用嵌入式Ruby的风格已经不再适用了,但我还想运行eruby&通过添加CGI shell脚本将请求的页面传递给erubis,找到了一种让erubis处理.rhtml页面的方法。我的解决方案在这里描述:
http://techdog.tumblr.com/post/36496065877/configure-erubis-cgi-in-apache
我在 Ubuntu 12.04 &上有 Apache / 2.2.22 Ruby 1.8.7 。我安装了 erubis 2.7.0 实施&将可执行文件erubis文件复制到Apache的cgi文件夹,在我的例子中复制到/ usr / lib / cgi-bin / erubis。
我通过将这些指令添加到/etc/apache/httpd.conf,配置了一个名为erubis.sh的cgi脚本来处理.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块的输出放在正确的位置。