マイペースなRailsおじさん

Ruby、Ruby on Rails、オブジェクト指向設計を主なテーマとして扱います。だんだん大きくなっていくRuby on Rails製プロダクトのメンテナンス性を損なわない方法を考えたり考えなかったりしている人のブログです。

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という名称でロガーやサーバーの立ち上げのためのフックを提供していて、これをカスタマイズしてつかうこともできる。