Ruby on Railsのgateway.cgi相当のモジュールをPlack::Loaderのサブクラスとして実装してみた
前にPlack::Server::GatewayCGIなるものを試作してみたんですが、
その後Plackの開発を追っていたら、miyagawaさんがコミットメッセージで、
railsのgateway.cgiのようなものはPlack::Loaderのカテゴリがフィットするよ
という趣旨のことを言ってたので、
前に書いたPlack::Server::GatewayCGIをPlack::Loader::GatewayCGIとして実装しなおしてみました。
例によってコードはgithubへ見に行ってください。
今回の特徴としては、前はPlack::Server::AnyEventにベースのバックエンドサーバに依存してたのが、
今回はその依存がなくなり、Plack::Server::CoroとかPlack::Server::Standaloneとかが使えるようになりました。
今のところ、
- Plack::Server::AnyEvent
- Plack::Server::Coro
- Plack::Server::POE
- Plack::Server::ServerSimple
- Plack::Server::Standalone
のサーバに対応しています。
一応Plack::Server::CGIでも動きますが、駐在プロセスとかできないので、
高速化は一切できません。
あとPlack::Server::FastCGIに関しては、サーバのホストとポートの取得の仕方がわからなかったので、
今のところ対応していません。誰かそのあたりのコードをプリーズ。
あ、それとPlack::Serverのネームスペースが非推奨になって、Plack::Handlerに変わったはずなので、
ここら辺これからPlackの開発がすすんでくると読み替える必要があるんで注意してください。
あとまた例によって今回書いたPlack::Loader::GatewayCGIはプロトタイプなので、
実際に実用しようと思うと、もうちょっとコードをリファクタリングする必要があると思います。
まあ実用するにはまだまだって感じなので、あんまり使い道はない感じですが、 ちょっと実験するぐらいなら使えるので、いろいろいじって見るのもいいかと思います。
以上Plack::Loader::GatewayCGIを試作してみたという話でした。