OS XのWeb共有でeRubyを動かせるようにしてみた

OS XのWeb共有でCGIが動かせるようになったので、今度は拡張子 .rhtml でeRubyのファイルを実行できるようにしてみた。
ruby実装のerbでも良いのだけど、性能を考えるとC実装のerubyの方が良いかな*1、ということで、以下からerubyのソースをダウンロード。

http://www.modruby.net/ja/index.rbx/eruby/download.html

コンパイルとインストールは、あっけないほど簡単に終了。

$ ./configure.rb
$ make
$ sudo make install

apacheからerubyを起動できるように、以下のコマンドでerubyの実行ファイルをCGIの実行ファイル置き場にコピー。

$ sudo cp eruby /Library/WebServer/CGI-Executables/

拡張子".rhtml"でerubyを起動するように、ユーザ毎の設定ファイル"/etc/apache2/users/<ユーザー名>.conf"を、以下のように記述。4行目のAddTypeと5行目のActionが、erubyのために追加した行です。

<Directory "/Users/<ユーザ名>/Sites/cgi/">
    AddHandler cgi-script cgi
    Options ExecCGI
    AddType application/x-httpd-eruby .rhtml
    Action application/x-httpd-eruby /cgi-bin/eruby
</Directory>

システム環境設定のWeb共有のチェックボックスOFF/ONでWeb共有(Apache)を再起動してから、例えば以下のような ~/Sites/cgi/hello.rhtml で動作確認。

<html>
<head><title>Hello!</title>
</head>
<body>
<p>Hello, world!!</p>
<p>This tests eruby. Current time: <%= Time.now %></p>
</body>
</html>

ついでに、環境変数を一覧表示するerubyスクリプトも動かしてみる。

<% ERuby.charset = "utf-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>環境変数一覧</title>
</head>
<body>
<h1>環境変数一覧</h1>
<table border>
<tr><th>名前</th><th></th>
<% ENV.each do |key,value| %>
<tr><td><%=key%></td><td><%=value%></td></tr>
<% end %>
</table>
</body>
</html>

なお、1行目の Eruby.charset = "utf-8" は、ブラウザで文字化けさせないために必要。

*1:erubyより速いErubis(http://www.kuwata-lab.com/erubis/)というのがあるのを後で知った・・・。今度試してみるかな。→試してみた