mod_ruby

前まではerubyのインタプリタを適当な場所において、ごそごそっとリンク張るとか泥臭い事をやっていたので、jail環境で再構築ついでにmod_rubyでerubyを利用しようかな、と。

しかし、うまくいかない。

インタプリタで展開はされてるんだけど、ファイルダウンロードされてしまう。

どうも、htmlヘッダがおかしいみたい。
ウッウー。

で、調べると、こんな話が。

<% puts 1+2 %>のような簡単なrhtmlに対して
試してみたところ、eRubyによる処理は行われるものの、
Content-Type: application/x-httpd-eruby で返ってくるので
ブラウザがバイナリ扱いで保存しようとしますね。
/usr/lib/ruby/1.8/apache/eruby-run.rbの末尾のほうに

          unless r.content_type
            r.content_type = format("text/html; charset=%s", ERuby.charset)
          end

というところがあるのですが、このときにr.content_typeには
「application/x-httpd-eruby」がすでに入ってしまっているため、
text/htmlへの書き換えが行われることなくContent-Typeの出力が
されてしまっているようです。
このunless行とend行をコメント化してApache2をreloadすると、
text/html形式でブラウザで正常に表示されます。

引用:http://lists.debian.or.jp/debian-users/200703/msg00073.html

まじっすか。
/usr/local/lib/ruby/site_ruby/1.8/apache/eruby-run.rb
に移動して、該当箇所を変更。
…おお。きちんと動いた。

何か、昔に色々あったみたいですが、その関係でごたごたしてるのかなぁ。
まったく逆の現象で。。。

http://lists.modruby.net/ml/archive/modruby-ja/200108.month/202.html
http://lists.modruby.net/ml/archive/modruby-ja/200108.month/209.html