Ruby on Rails の gateway.cgi 相当のモジュールを Plack::Loader のサブクラスとして実装してみた
前に [Plack::Server::GatewayCGI なるものを試作してみた]] んです、その後 Plack の開発を追っていたら、miyagawa さんがコミットメッセージで、 [rails の gateway.cgi のようなものは Plack::Loader のカテゴリがフィットするよ という趣旨のことを言ってたので、前に書いたPlack::Server::GatewayCGI
をPlack::Loader::GatewayCGI
として実装しなおしてみました。
- <https://gist.github.com/289556 https://gist.github.com/289556>
例によってコードは 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
を試作してみたという話でした。