今さらMongrel

“Published over 4 years ago”とあるので随分古い記事なのですが、Ruby on Rack #1 – Hello Rack!を読んでみようと例を見ると、Mongrelが使われていたのでインストールしようとすると失敗しました。

$ gem install mongrel
Fetching: gem_plugin-0.2.3.gem (100%)
Fetching: daemons-1.1.9.gem (100%)
Fetching: fastthread-1.0.7.gem (100%)
Building native extensions.  This could take a while...
Fetching: cgi_multipart_eof_fix-2.5.0.gem (100%)
Fetching: mongrel-1.1.5.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing mongrel:
	ERROR: Failed to build gem native extension.

        /home/xxx/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb
checking for main() in -lc... yes
creating Makefile

make
compiling http11_parser.c
http11_parser.rl: 関数 ‘http_parser_execute’ 内:
http11_parser.rl:105:3: 警告: 符号付きと符号無しの整数式の間での比較です [-Wsign-compare]
compiling http11.c
http11.c: 関数 ‘http_field’ 内:
http11.c:70:3: 警告: 書式が文字列リテラルでは無く、かつ書式引数ではありません [-Wformat-security]
http11.c:71:3: 警告: 書式が文字列リテラルでは無く、かつ書式引数ではありません [-Wformat-security]
http11.c:77:22: エラー: ‘struct RString’ は ‘ptr’ という名前のメンバを持っていません
http11.c:77:50: エラー: ‘struct RString’ は ‘len’ という名前のメンバを持っていません
http11.c:77:27: 警告: カンマ演算子の左側の式に効力がありません [-Wunused-value]
http11.c: 関数 ‘request_uri’ 内:
http11.c:102:3: 警告: 書式が文字列リテラルでは無く、かつ書式引数ではありません [-Wformat-security]
http11.c: 関数 ‘fragment’ 内:
http11.c:113:3: 警告: 書式が文字列リテラルでは無く、かつ書式引数ではありません [-Wformat-security]
http11.c: 関数 ‘request_path’ 内:
http11.c:124:3: 警告: 書式が文字列リテラルでは無く、かつ書式引数ではありません [-Wformat-security]
http11.c: 関数 ‘query_string’ 内:
http11.c:135:3: 警告: 書式が文字列リテラルでは無く、かつ書式引数ではありません [-Wformat-security]
http11.c: 関数 ‘header_done’ 内:
http11.c:172:13: エラー: ‘struct RString’ は ‘ptr’ という名前のメンバを持っていません
http11.c:172:13: エラー: ‘struct RString’ は ‘ptr’ という名前のメンバを持っていません
http11.c:172:13: エラー: ‘struct RString’ は ‘ptr’ という名前のメンバを持っていません
http11.c:174:89: エラー: ‘struct RString’ は ‘ptr’ という名前のメンバを持っていません
http11.c:176:52: エラー: ‘struct RString’ は ‘ptr’ という名前のメンバを持っていません
http11.c:177:26: エラー: ‘struct RString’ は ‘len’ という名前のメンバを持っていません
http11.c: 関数 ‘HttpParser_execute’ 内:
http11.c:298:23: エラー: ‘struct RString’ は ‘ptr’ という名前のメンバを持っていません
http11.c:299:23: エラー: ‘struct RString’ は ‘len’ という名前のメンバを持っていません
http11.c:307:5: 警告: 書式が文字列リテラルでは無く、かつ書式引数ではありません [-Wformat-security]
make: *** [http11.o] エラー 1


Gem files will remain installed in /home/xxx/.rvm/gems/ruby-1.9.3-p448/gems/mongrel-1.1.5 for inspection.
Results logged to /home/xxx/.rvm/gems/ruby-1.9.3-p448/gems/mongrel-1.1.5/ext/http11/gem_make.out

理由はわかりませんが、プレリリース版では大丈夫だそうです。

$ gem install mongrel --pre
Fetching: daemons-1.0.10.gem (100%)
Fetching: mongrel-1.2.0.pre2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed daemons-1.0.10
Successfully installed mongrel-1.2.0.pre2
2 gems installed
Installing ri documentation for daemons-1.0.10...
Building YARD (yri) index for daemons-1.0.10...
Installing ri documentation for mongrel-1.2.0.pre2...
Building YARD (yri) index for mongrel-1.2.0.pre2...
Installing RDoc documentation for daemons-1.0.10...
Installing RDoc documentation for mongrel-1.2.0.pre2...

開発時にRailsアプリを起動する場合は、

$ rails s mongrel

です。
まあ、実際にMongrelを使うことはないのでしょうが。