対応しなくなったんですよ。マジで。
日本語を含むとエラー
>> URI.parse 'http://example.com/あああ' URI::InvalidURIError: URI must be ascii only "http://example.com/\u{3042}\u{3042}\u{3042}" from /Users/takuya/.rbenv/versions/2.2.3/lib/ruby/2.2.0/uri/rfc3986_parser.rb:20:in `split' >>
ruby まじどうしようもないな。
日本語を含むURIはASCIIにEncodeしろってことだろうけどさ、ブラウザからURIをコピペしたら日本語含まれるじゃん?
日本語が含まれたまま使えないと不便だよね。
モンキーパッチで対応する
require 'uri' module URI class << self alias :_parse :parse def parse a, original=false return self._parse a if original r=/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+/ a = a.gsub(r){|m| URI.encode_www_form_component(m) } u = self._parse a return u end end end
とりあえず対応することが出来る。大抵のURIはコレで対応できそう。
npm のモジュール地獄見てて、gem の同じような地獄に成りつつあるし。イチイチ依存Gem増やす必要はないかもしれない。