おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

passenger2.2.9 released

Phusion Passenger 2.2.9 released « Phusion Corporate Blogの意訳です。自分用のメモ。

Rails3の互換性を修正

以前のバージョンのpassengerでも既にRails3への互換性はあったんだけど・・・
詳細は以下の通り。

passenger2.2.8より、config.ruが存在するときにpassengerはアプリをRailsアプリではなくRackアプリとして扱うようになった。それ以前のバージョンでは、RackよりもRailsを優先して検知するようにしていた。passengerはRackアプリとRailsアプリを異なる方法でロードする。RailsローダーはRails3と互換性がなかった。これを修正した。

Rails3アプリはconfig.ruファイルをデフォルトで含むので、passenger2.2.8でも動く(2.2.8はRackローダーを使うから)。それ以前のバージョンのpassengerはRailsローダーを使うのでダメ。

2.2.9はまだいくつか注意点がある。

  • Smart spawning(REEで33%メモリ節約!なメカニズム)はRackアプリをサポートしてない。つまりsmart spawningをRails3で使いたかったらconfig.ruファイルを削除する必要がある。
  • Rails3はRack1.1.0に依存してる。Rack1.1.0をgemでインストールする必要がある。もしgem bundlerでRack1.1.0をインストールしてても、きちんとgemでインストールしなきゃだめ(passengerもRack依存なので)

上記の二つの注意点は一時的なもので、将来的には解決する予定ですよとのこと。

Gem Bundlerとの互換性

Yehuda Katz’s gem bundlerとpassengerに互換性がないという報告がいくつかあがっている。これはたぶん初期バージョンのgem bundlerの話で、最新はうまくうごくはず。gem bundlerのREADMEに書いてある下記のsnippetをconfig/preinitializer.rbに挿入するのを忘れずに

require "#{RAILS_ROOT}/vendor/gems/environment"

ActiveRecordのサブクラスが他のデータベースにつながっている時のバグを修正

ActiveRecordのサブクラスがデフォルトのもの以外のデータベースに接続してるときに、forkすると接続が正しくクリアされなかった。これは"Lost connection to MySQL server during query"のような変なエラーの原因になっていた。これを治した

(nginx)PCREのURLを修正

PCREがインストールされていないときに、passenger-install-nginx-moduleはPCRE7.8をダウンロードする。PCRE7.8がFTPサーバから削除されたので、8.0のURLに更新した。