encoding error ruby-openid
SinatraでOpenIDでのログインを実装しようとしてハマったので、メモ。
ruby-openid (2.1.7)で確認。
c = OpenID::Consumer.new(ss, st)
begin
req = c.begin( openid_identifier )
rurl = req.redirect_url( root_url, callbk_url )
return rurl
rescue
raise Error, $!.to_s
end
というソースで、openid_identifierにユーザ名が入ってるパターン(livedoorやはてななど)の場合に、次のようなエラーメッセージが出る
incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)
これはバグらしく、パッチが以下の所にある。
Encoding::CompatibilityError with Ruby 1.9
はてなとLivedoorだけどうやっても接続出来なかったのだけど、このパッチで出来るようになった。