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を試作してみたという話でした。