Plackをコードリーディングしたのだけれど、適当にメモしたのを公開しておく。
Plack/PSGI
- PSGI仕様 : http://search.cpan.org/dist/PSGI/PSGI.pod
- antitpopさんの勉強資料 : http://d.hatena.ne.jp/antipop/20090924/1253761509
PSGI
response
- [status, [headers], [content]]
Plack::Response
- responseを作るUtilityのみ
Plack::TempBuffer
- Request bodyなどを処理するための一時buffer
- サイズが小さければPerlIO(scalarに値を保存しておく)、大きければFile?
Plack::Handler
Plack::Runner
Plack::Loader
- Plack::HandlerからServerを立ち上げる役割
- preload_appでBuilderによってつくられたものからappを作る
- runはserver->runを実行しているだけ
- subclassでrunとかpreload_appとかいじれば、モジュールの遅延ロードとか、serverの自動再起動とかが実装可能
Plack::Middleware
- PlackのMiddlewareを実装するbase class
- callとresponse_cbを使ってMiddlewareを実装できる
- response_cbを使う理由はresがarrayrefとcoderef両方共使えるから
Plack::Builder
- builderは逆順にwrapしていく
Hash::MultiValue
- keys : 配列, values : 配列
- 配列位置によるvalueの特定
- inside out object的に作られている
- private