at posts/single.html

Sizuku.rb の WEBrick 対応

なかなか時間がとれない今日この頃。 かんさんから「SizukuとWEBrickは相性がいい」とコメントを頂いたので、lily2::managerを参考にしながら WEBrick 対応の方法を考えてみた。 こんなにシンプルには実現できないだろうけど、この方向で組み込みを考えてみるかな。

#!/usr/bin/env ruby
require 'webrick'
require 'webrick/cgi'

module Sizuku
 module Handle
   def do_GET(req, res)
     handle_main(req, res)
   end

   def do_POST(req, res)
     handle_main(req, res)
   end
 end

 class AppliFactory
   def AppliFactory.make(c, option = nil)
     c.extend(Sizuku::Handle)
     $0 == __FILE__ ? make_webrick(c, option) : make_cgi(c, option)
   end

   def AppliFactory.make_cgi(c, option)
     app = WEBrick::CGI.new
     app.extend(c)
     app
   end

   def AppliFactory.make_webrick(c, option)
     servlet = WEBrick::HTTPServlet::AbstractServlet
     servlet.extend c
     app = WEBrick::HTTPServer.new(option)
     app.mount('/', servlet)
     trap("INT"){ app.shutdown }
     app
   end
 end
end

module MyApp
 def handle_main(req, res)
   res.body = 'hello'
 end
end

option = {:Port => 8080}
app = Sizuku::AppliFactory.make(MyApp, option)
app.start

関連する日記