$Id: servlet.html,v 1.3 2000/05/02 13:28:45 mas Exp $
postgreSQLのデータをWebで公開しようといろいろ作ってるうちに おもしろいのができました。
原さんの公開された shttpsrv を改造して、rubyのモジュールを サーバに動的にロードできるようにしました。 設定ファイルで指定したURLを要求すると、htmlファイルを転送する 代わりに、rubyのモジュールが動的に生成したページを転送します。 また、SSIの中で使うこともできます。
最初のリクエストでは、ロードする時間が必要ですが、 二度目以降は、CGIよりもずっとレスポンスが早いです。 また、httpのリクエストを越えて長生きする(?)オブジェクトを 使いたい時にも便利です。
shttpsrv-1.04に対するパッチをあてて下さい。 shttpsrv.rb と conf.rb が変更されると思います。
conf.rb に変数 ScriptAlias が追加されます。 サービスのrequireする名前、モジュール名などを定義します。
ServletAlias = [ # [仮想パス, requireする名前, モジュール名], ['/rb/', 'testserv.rb', 'TestServ'], #1 ['counter', 'counter.rb', 'Counter'] #2 ]
#1 では http://localhost:8088/rb/arg1/arg2/ という要求があると 次の文が評価されます。
require 'testserv.rb' TestServ.service('arg1/arg2')
#2 では foo.shtml 中に
<!--#ruby service="counter args"-->
という文があると次の文が評価されます。
requrie 'counter.rb' Counter.service_ssi('args', 'foo.shtml')
service(arg)
ではヘッダを含んだ一ページを生成することを期待し、
service_ssi(arg, filename)
ではHTMLの一部を生成することを期待しています。