[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:48189] Re: eRubyが動かない (sarge --> etch)



武藤@Debianぷろじぇくとです。

At Mon, 19 Mar 2007 18:03:22 +0900,
KAWAFUJI Mitsuhiro wrote:
>  しかし、eRubyの方がダメで、
>     test.rhtml
> のアクセスでは、ブラウザはファイルをダウンロードしようとします。
>     eruby/test
> のようにするとファイルの中身がそのまま表示されます(改行はなくなり
> ますが)。

<% %>を含んだファイル「そのまま」が出るのですか。

>   # for Apache::ERubyRun
>   RubyRequire apache/eruby-run
>   <Files *.rhtml>
>     SetHandler ruby-object
>     RubyHandler Apache::ERubyRun.instance
>   </Files>

この設定だけにして、<% 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形式でブラウザで正常に表示されます。

このあたりはmod-ruby側では何も変えてないようなので、RubyかApacheの
変更が何か影響しているのだろうとは思います。
-- 
Kenshi Muto
kmuto@debian.org