Nick Sieger氏はJRuby(サイト・英語)チームの一員で、JRuby1.0.1とGoldspike 1.3を統合する作業をしていた。GoldSpikeはRailsアプリケーションをJava EEサーバ上で動作させることが出来る。GoldSpikeは、JRuby extras(サイト・英語)プロジェクトの一製品である。JRuby extrasとはsatelliteプロジェクトのグループで、JRubyとRubyライブラリ間のギャップを埋めることを目的としている。 Nick氏はアプリケーションのパッケージングに関して、GoldSpikeがとったアプローチに満足出来なかったので、GoldSpikeパッケージングプラグインを書き換える決心をし、そしてWarblerが誕生(source)した。
GoldSpikeに関する問題点
Railsをwarファイルにパッケージングすることは間違ったアプローチだというのが私の意見です。Railsをwarファイルにパッケージングすると、Railsのアプリケーションディレクトリがwarファイルのルートに保存されてしまい、webサーバやJavaのアプリケーションサーバはRailsアプリを静的コンテンツと誤って認識してしまいます。Javaのwarファイルの仕様には動的コンテンツを隠すことが目的のWEB-INFという特別なディレクトリがあります。どうしてこれをJRubyでも使わないのか?そして、WEB-INFを使ってからGoldSpikeは私の完全なRailsアプリケーションディレクトリ、.svnディレクトリ及び全てをパッケージングしてくれました。だから私はGoldSpikeを修正する作業に着手しました。
Warblerはgemを使用してインストール出来る。そしてJRubyとGoldSpikeサーブレットを一緒にし、Javaアプリケーションサーバの中で、送られてきたリクエストをあなたのアプリケーションへディスパッチしている。またWarblerはWARBLER_HOME/lib/以下にあるjarファイルを全てあなたが作ったアプリケーションに集めてくれる。GoldSpikeとは異なり、Warblerは外部と依存関係にあるファイルをダウンロードしない。
Warblerのシンプルなコマンドラインインターフェースと柔軟な設定により、Railsアプリケーションを、Java EEサーバ上のJRubyにデプロイする作業は従来と比べてより簡単になることだろう。WarblerとGoldSpikeパッケージングプラグインのコード量を比較すると、Warblerの方が約50%コード量が少ないのである。