WEBrick::CGIのサポートを追加した。ついでにTofuletがTofuのContextを兼ねていたのだけど、コンテキストとサーブレットを分離した。WEBrick::CGIから入っても、サーブレットから入っても、どちらもコンテキストを生成してservice(@bartender)する。requestとresponseは分離することができないのではないか? という思いつきで導入したコンテキストだけど、本当に両者をまとめてよかったのかどうか、実は自信がない。でもそのresponseはrequestと分ち難く結びついていると思うんだよなー。
とか書いたってViewCVSとかを準備するまで誰からも見えないのであった。
というわけでWEBrick::CGI用Tofuletの全てはこちら。
class CGITofulet < WEBrick::CGI def initialize(bartender, *args) @bartender = bartender super(*args) end def service(req, res) TofuletContext.new(req, res).service(@bartender) end end
CGIそのものはこれ。ENV, stdin, stdoutを渡せば、リモートのWEBrick::CGI#startが全てうまくやってくれる。
#!/usr/local/bin/ruby require 'drb/drb' DRb.start_service ro = DRbObject.new_with_uri('druby://localhost:12321') ro.start(ENV.to_hash, $stdin, $stdout)