Mongrel1.1.5 のバグ(Rails2.3.8との相性問題)

もう使うことが無いと思われた mongrel_rails ですが Windows Server にセットアップする需要があったため久しぶりに動かしてみたらうまくいかない。やられてしまいました。

環境

Rails: 2.3.8
mogrel_rails: 1.1.5
OS: Windows Server 2008
ruby: 1.8.7

経緯、現象

  • mongrel_service で rails インスタンスを5つサービス化
  • Apacheからmod_proxy_balancerで負荷分散設定
  • アクセスしてみる
  • レスポンスが text/plain になってる(→解決1)
  • リダイレクトが効かない。レスポンスヘッダの Location が無い (→解決2)

解決1 レスポンスが text/plain

参考 http://d.hatena.ne.jp/kusakari/20100620/1276961317

上記サイトでは windows mongrel は大丈夫って書いてありますが、Apacheでリバースプロキシするとダメでした。
なので Apache の DefaultType を text/html にすることで逃げました。
根本的な解決ではありませんが。

上記サイトのように mongrel_rails に手を入れるのもいいでしょう。

解決2 リダイレクトが効かない

参考 http://www.peterboling.com/2010/7/25/rails-2-3-8-mongrel-1-1-5-bug

wget -S --spider でLocationが無いことを確認して気づきました。
これはひどい

RAILS_ROOT/config/initializers/ mongrel_hack.rb
として
http://gist.github.com/471663
を保存することで解決しました。

結論

unicorn も passenger も使えない windowsはもう滅びていいよ。