Ruby製サーバ"Thin"

Mongrel + EventMachine + Rack

RubyInsideでThinというものが紹介されていたらしいです。俺ははてブ経由で知ったのですが。公式サイトを見る限りではMongrelのパーサーを使って、EventMachineというネットワーク I/O ライブラリを使って、Rack対応らしいです。Mongrelのパーサーを使っているから高速で安全、EventMachine使っているから安定していてスケーラビリティ、とのことでした。

Mongrel

言わずもがな、Rubyに見切りを付けるかもしれないZedが作ったRuby製Webサーバーです。

Mongrel: Home

EventMachine

ネットワークプログラミング用のライブラリらしいです。コアはC++で書かれているらしいですが、Rubyで書かれているものもあるようです。

RubyForge: Ruby/EventMachine: Project Info
Young risk taker.: Ruby/EventMachineでネットワークプログラミング

Rack

Webサーバー毎の差を処理してくれるライブラリみたいです。ハンドラーはCGI,FastCGI,WEBrick,Mongrelがあって、Rackを通せば同じコードがどのサーバーでも動くというものみたい。

Rack: a Ruby Webserver Interface
ウノウラボ Unoh Labs: RackでWebアプリのWebサーバー依存を無くす

インストールから動かすまで

Mongrelみたいにscript/serverで立ち上がるようにできるのかもしれませんが、ちょっとそこまでは調べきれていません。とりあえずインストールから起動までをまとめてみた。

インストール

> sudo gem install thin

EventMachineはC++でコアが書かれているため、C++コンパイラが必要になります。入っていなかったらmake通らないよって怒られるので事前に入れておきましょう。Windowsの人は個人用途ならBorland C++Compiler辺りでいいのではないでしょうか。もしくはcygwinとか。

動かす

> cd RAILS_ROOT
> thin start

Railsアプリの場合の例。超簡単です。ポート番号はデフォルトだと3000番ですが、もし変えたければ-pオプションで指定できます。他にも-dオプションでデーモンとして起動させたりもできるっぽいです。

動かしてみた感じ

動かしたといっても簡単なテストアプリを走らせただけなんで、Mongrelとかとの速度の違いは全然分かりませんでした。もっと作り込んだら分かるんでしょうけども・・・・・・。