WEBrickをちょこっとだけ触ってみる
デバッグ用にちょっとしたWebサーバを作ってみたくなったので,WEBrickを触ってみた.
#!/usr/local/bin/ruby require 'webrick' require 'pp' class MyServlet < WEBrick::HTTPServlet::AbstractServlet # Process GET Request # # _req_:: WEBrick::HTTPRequest # _res_:: WEBrick::HTTPResponse # returns:: WEBrick::HTTPResponse def do_GET(req, res) res['Content-Type'] = 'text/html; charset=utf-8' you = req.query['name'] || 'you' greeting = {'morning' => 'Good morning', 'evening' => 'Good evening' }[req.query['time']] || 'Hello' res.body = "<html><body><p>#{greeting}, #{you}!</p></body></html>\n" return res end end srv = WEBrick::HTTPServer.new(:BindAddress => '127.0.0.1', :Port => 10080 ) ['INT', 'TERM'].each do |signal| trap(signal) { srv.shutdown } end srv.mount('/app', MyServlet) srv.start
たったこれだけのコードで,localhost:10080上でWebサーバが起動した.こりゃおもしろい.何より,わかりやすい所がいい.AbstractServletを継承したクラスを作って,扱いたいHTTPリクエストのメソッドを処理する関数(do_GETとかdo_HEADとか)を定義して,WEBrick::HTTPServer#mountするだけ.シンプルで良い.
難点は,セッション管理とか細かい所の面倒を見てくれない所かな.探せばライブラリあるんだろうか.