M17N対応とかやってみた。
ruby-1.9系の安定版、ruby-1.9.1-p0が公開されていたようなので。
インストールしてみた。
以前に、はてなハイクAPI用のライブラリと、タイムログAPI用のライブラリを作って
rubyforgeに公開していたので。
今回はそれをM17Nに対応して動くようにしてみた。
主な変更箇所は、マジックコメントを入れたぐらいですが。
1箇所だけ、動かない場所があったので修正しました。
それは、次のような箇所です。
修正前
def http_access(uri, request) Net::HTTP.start(uri.host, uri.port){|http| response = http.request(request) if response.code == '200' return REXML::Document.new(response.body) else return false end } end
これを、ruby-1.9.1-p0で動かすと……
APIからとってきた response.bodyのEncodingがASCII-8bitになってしまうため
REXMLがパースする際にエラーを起こしてしまうのだ。
そこで、こんな風にした。
修正後
def http_access(uri, request) Net::HTTP.start(uri.host, uri.port){|http| response = http.request(request) if RUBY_VERSION.match(/^1\.9\./) response.body.force_encoding('UTF-8') end if response.code == '200' return REXML::Document.new(response.body) else return false end } end
RUBY_VERSIONが1.9.xの場合は、APIからとってきたものをUTF-8として扱うようにしました。
ひとまず、これで動くようなので修正したものをrubyforgeにアップしました。
gem install -r rhaiker
タイムログAPI用のライブラリは、
gem install -r timelog4r
…で、それぞれ導入できます。