Newer
Older
j2102 / ruby_cgi / server.rb
#!/usr/bin/env ruby
# coding:utf-8

require 'webrick'

rrr = WEBrick::HTTPServlet::CGIHandler::Ruby
$ruby = $ruby || rrr            # CGIインタプリタのための準備?$ruby?

module WEBrick
  module HTTPServlet
    FileHandler.add_handler("rb", CGIHandler)
  end
end

def start_webrick(config = {})
  conf = {
    :Port => 8080,
    :BindAddress => '127.0.0.1',   # localhost
    :CGIInterpreter => $ruby,
  }
  config.update(conf)              # 代入の別名?
  server = WEBrick::HTTPServer.new(config)
  yield server if block_given?
  ['INT', 'TERM'].each {|signal|   # 強制終了を捕捉(?)
    trap(signal) {server.shutdown} # addEventListner的なやつ
  }
  server.start                     # -[INFO]~start doneは終了時に出るやつ。
end

start_webrick {|server|
  cgi_dir = File.dirname( File.expand_path(__FILE__) ) # このディレクトリの絶対パス(多分
  server.mount("/", WEBrick::HTTPServlet::FileHandler, cgi_dir, {:FancyIndexing=>true}) # 2回目?
}