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

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



 川藤です。

On Tue, Mar 20, 2007 at 22:29:49 +0900
you Kenshi Muto <kmuto@xxxxxxxx> wrote:
 |武藤@Debianぷろじぇくとです。

 |>  しかし、eRubyの方がダメで、
 |>     test.rhtml
 |> のアクセスでは、ブラウザはファイルをダウンロードしようとします。
 |>     eruby/test
 |> のようにするとファイルの中身がそのまま表示されます(改行はなくなり
 |> ますが)。
 |
 |<% %>を含んだファイル「そのまま」が出るのですか。

 すみません、後者は私の間違いでした。使っていたスクリプトに間違い
がありました。<% puts 1+2 %>だけのシンプルなスクリプトだと、eruby
ディレクトリに置いたスクリプトは正常に結果を表示してくれました。

 
 |<% 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形式でブラウザで正常に表示されます。

 確認しました。Wiresharkでパケットをモニタすると、確かに、何もし
ない状態だとContent-Typeとしてapplication/x-httpd-erubyを送ってき
ていますね。上記ご指摘のコメントアウトを行なうとtext/htmlを返して
きて、ブラウザ上にeRubyスクリプトの実行結果が表示されます。

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

 ということは、Debian以外の環境でも同じ現象が生じているのでしょう
か……。

川藤