ローカルにあるファイルに対してちょっとHTTPでアクセスしたいときにWebrickは便利なのだが、デフォルトではxhtmlのMimeをtext/htmlにしているため、XMLとして解釈されず困ったことになる。特に<hoge/>という記法を用いると死ぬ。
以下のコードで対処可能。
#!/usr/bin/env ruby
# coding: utf-8
require 'webrick'
mimetypes = WEBrick::HTTPUtils::DefaultMimeTypes.merge({'xhtml'=>'application/xhtml+xml; charset=UTF-8'})
s = WEBrick::HTTPServer.new(Port: 8000, DocumentRoot: Dir.pwd, MimeTypes: mimetypes)
trap("INT"){
s.shutdown
}
s.start
MimeTypesオプションについての記述は何故か新しいドキュメントからは消えているのだけど、ちゃんと効く。Webrickの設定を変えてサーバーを再起動した後は、必ずキャッシュを無効化してリロードするように。キャッシュが使われているせいで何をやっても新しいMimeが有効にならなくてしばらくハマっていた。