まつもと ゆきひろです

In message "[ruby-list:33902] Re: Ruby スクリプトサーバ +  アプリと Apache+CGI アプリ"
    on 02/02/13, Shugo Maeda <shugo / ruby-lang.org> writes:

|まつもとさんがcall/ccを使って普通のCGI風のインタフェイスで使える
|とか言っていたような記憶が。

こんな感じ。書いたのが昔なんでクラス変数の代わりに定数を使っ
てますね。CGI.newをCGI::Fast.newに置換えると動くような気がし
ます。

----
require 'CGI'
require 'fcgi.so'

class CGI
  class Fast<CGI
    CONTINUATION = []
    def Fast::new(*args)
      at_exit do
	if CONTINUATION[0]
	  CONTINUATION[0].call
	end
      end
      callcc do |c|
	CONTINUATION[0] = c
      end
      fcgi = FCGI::accept
      unless fcgi
	CONTINUATION[0] = nil
	exit
      end
      $defout = fcgi.out
      super(*args)
    end
  end
end