WEBrick

WEBrickのETag

Rack::ETagは、bodyがStringじゃないとETag作らないんだぜ。rack-contrib/lib/rack/etag.rb ... if !headers.has_key?('ETag') && body.is_a?(String) headers['ETag'] = %("#{Digest::MD5.hexdigest(body)}") end ... WEBrickは逆に静的ファイルだけだけど…

Rack+WEBrick素人(2)

Rackで静的ファイルを使うのはRack::Staticだと思ったのでやってみた。hello_static_rack.rb #!/usr/bin/env ruby require 'rubygems' require 'rack' include Rack class HelloRack end app = Rack::Static.new(HelloRack.new, {:urls => ["/"], :root => "…

WEBrick素人(2)

"Rack+WEBrick素人"の例は、動的生成の例だから、書き直してみた。hello_webrick.rb #!/usr/bin/env ruby require 'webrick' include WEBrick class HelloServlet < HTTPServlet::AbstractServlet def do_GET(req, res) res.body = "Hello, World!" res['Con…

Rack+WEBrick素人

hello_rack.rb #!/usr/bin/env ruby require 'rubygems' require 'rack' include Rack class HelloRack def call(env) [200, {"Content-Type" => "text/plain"}, ["Hello, World!"]] end end Handler::WEBrick.run HelloRack.new, :Port => 3000 結果 http:/…

WEBrick素人

httpserver.rb #!/usr/bin/env ruby require 'webrick' include WEBrick s = HTTPServer.new( :Port => 8000, :DocumentRoot => File.join(Dir::pwd, "public_html") ) trap("INT"){ s.shutdown } s.start 結果 http://localhost:8000/ GET / HTTP/1.1 Host:…