WEBrickでCGIするとき、'.rb'という拡張子をCGIとして認識させる方法
Sinatraのローカル開発用としてWEBrickでテスト用CGIサーバ書いてみたが、*1
WEBrickのデフォルトだと '.cgi'をCGIスクリプトとして認識するようになっていて、完成したアプリをデプロイする前に'.rb'に戻したりするのが面倒だしトラブルの元になりそうなので、WEBrick側で'.rb'をCGIスクリプトとして処理する方法を調べた。
以下のようなコードで行けた。
require 'webrick' include WEBrick module WEBrick::HTTPServlet FileHandler.add_handler('rb', CGIHandler) end s = HTTPServer.new( :Port => 3000, :DocumentRoot => File.join(Dir.pwd, "/html") ) trap("INT") { s.shutdown } s.start
FileHandler#add_handler
を使えばいいらしい。
*1:...と書いたが、なんか思い違いしてるかも