Ruby 1.8.5, Rails 1.1.6, lighttpd 1.4.13 に Relative Path プラグイン (Revision 21) の組み合わせで不具合が発生した。
まず、
ruby script/generate controller item show
で適当にコントローラを作る。
Relative Path プラグインをインストール。
ruby script/plugin install http://opensvn.csie.org/relative_path/trunk/ mv vendor/plugins/trunk vendor/plugins/relative_path
lighttpd の設定ファイルをコピー。
cp /usr/local/lib/ruby/gems/1.8/gems/rails-1.1.6/configs/lighttpd.conf config
ruby script/server lighttpd
で lighttpd を起動し、/item/show/1 にアクセスすると Routing Error になる。
Recognition failed for "item/show/1"
/item/show/1 にアクセスするには /a/item/show/1 にアクセスしなければならない。('a' の部分は何でもよい)
webrick と mongrel では問題なかった。
できる範囲で動作を追いかけてみたが、 ActionController::Routing::RouteSet#recognize で使われている request.path が、webrick では /item/show/1 のように 先頭に / が付いているのに対し、lighttpd では item/show/1 のように先頭の / がなくなっていた。
また、webrick の場合は relative_uri_root が '' に、lighttpd の場合は '/' に設定されていた。 何か関係がありそうだが、今日のところは時間切れ。
(どうやら作業中とのことらしいので、作業前と思われる Rev.18 まで戻してみたが同様だった)
一応、config/environment.rb に
ActionController::AbstractRequest.relative_url_root = ""
と書いておけば問題ないようだ。
まだリリースできない段階であるのに、検証くださいましてありがとうございました。<br><br>lighttpd での検証はちょっと後手に回っていました。<br>今から追跡調査を実施します。
http://d.hatena.ne.jp/cuzic/20061127/1164633050<br>プログラミングは素晴らしい<br>[Rails] Relative Path プラグイン更新作業、続き<br> 昨日、前振りをした Relative Path プラグインを早くも検証してくださった方がいたようです。まだ検証が不十分だというのに使ってもらえてとても嬉しいです。 lighttpd + Relative Path プラグインの不具合 上記の URL で行われている不具合対応には早速対応し trunk に反映
すばやい対応ありがとうございました。日記をアップしてから1時間ほどで更新されていたのでびっくりしました。<br><br>lighttpd + fastcgi で試してみましたが、なぜか URI() が見つからないというエラーが出たので、とりあえず URI() を URI.parse() に直したら無事に動きました。なぜ URI() が見つからないのかは全く謎です。