Debian sarge ruby1.8 1.8.2-7sarge4 で mongrel_rails を動かす

mongrel はインストールに ruby 1.8.4 を要求してきて sarge ではインストール出来ません。

$ sudo gem install -r mongrel
...
ERROR:  While executing gem ... (RuntimeError)
    mongrel requires Ruby version >= 1.8.4

mongrel1.8.3 から利用可能になった] IO#readpartial を使っていて、これのためにバージョンチェックを行っているのでしょうか? (それならなんで 1.8.3 でチェックしないの? …とかいうのは置いておく。mongrel の gem spec を順番に見たけど 1.8.3 だった頃もあるようです)

で。sarge の ruby1.8 は IO#partial が使えるので gem から ruby バージョンチェックを削って強引にインストールしてみることにします。

1. mongrel-0.3.13.3.gem をダウンロード
2. tar で展開して metadata を取り出す

$ tar xvf mongrel-0.3.13.3.gem
data.tar.gz
tar: data.tar.gz: implausibly old time stamp 1970-01-01 09:00:00
metadata.gz
tar: metadata.gz: implausibly old time stamp 1970-01-01 09:00:00
$ gzip -d metadata.gz

3. metadata の 19-24 行目を削除する

 19 required_ruby_version: !ruby/object:Gem::Version::Requirement
 20   requirements:
 21   - - ">="
 22     - !ruby/object:Gem::Version
 23       version: 1.8.4
 24   version:

4. 新しい gem を作成する

$ gzip metadata
$ tar cf mongrel-0.3.13.3-sarge.gem data.tar.gz metadata.gz

5. インストール

$ sudo gem install ./mongrel-0.3.13.3-sarge.gem
Building native extensions.  This could take a while...
...
Successfully installed mongrel, version 0.3.13.3
Installing ri documentation for mongrel-0.3.13.3...
Installing RDoc documentation for mongrel-0.3.13.3...

インストールできました。mongrel_rails start を試してみます。

$ mongrel_rails start
** You have sendfile installed, will use that to serve files.
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment ...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready.  TERM => stop.  USR2 => restart.  INT => stop (no restart).
** Rails signals registered.  HUP => reload (without restart).  It might not work well.
** Mongrel available at 0.0.0.0:3000
** Use CTRL-C to stop.
127.0.0.1 - [Fri, 08 Sep 2006 17:24:46 GMT] "GET / HTTP/1.1"
127.0.0.1 - [Fri, 08 Sep 2006 17:24:47 GMT] "GET /javascripts/prototype.js HTTP/1.1"
127.0.0.1 - [Fri, 08 Sep 2006 17:24:47 GMT] "GET /javascripts/effects.js HTTP/1.1"
127.0.0.1 - [Fri, 08 Sep 2006 17:24:47 GMT] "GET /images/rails.png HTTP/1.1"
127.0.0.1 - [Fri, 08 Sep 2006 17:24:48 GMT] "GET /rails/info/properties HTTP/1.1"

と、こんな感じでいまのところ development モードで使っていますが、うちでは普通に使えています。(ほんとは何も考えずにいきなりバージョンチェックを削ってインストールしたのはナイショです)