gemの概要を雑に把握するシリーズ③ rack/rack
rackgithub.com
概要
WebサーバーとWebフレームワークの組み合わせを自由に選択できるように、統一的なインターフェースを提供するライブラリ。 Middlewareを選択することで、双方向の通信の間に特定の処理を割り込ませることができる。 各ソフトウェアで必要になるであろう、MimeタイプやRequestなど、HTTPサーバーに基本的な構成要素も提供している。
気になる実装
ポートとか、基本的なWebサーバーの設定は全部rackで受け持っていた。pumaとかにrackからバイパスしている。 OptParserの呼び出し方がかっこよく見える。参考にしよう。 'X-Sendfile', 'X-Lighttpd-Send-File'とか、知らないヘッダがありそうなので、Applicationから使いたくなりそうなHTTPの勉強にはかなり良いかもしれない
bin/rackup xxx.ru
とすると、Rack::Builderの中で.ruに書かれたスクリプトを実行する。
Appのインターフェースを実装したものをrunにわたすと@appとして設定される。
Middlewareという名称でロガーやサーバーの立ち上げのためのフックを提供していて、これをカスタマイズしてつかうこともできる。