At Wed, 23 Oct 2013 19:19:45 +0900,
sorah (Shota Fukumori) wrote:
> 他のメソッドもデコードしてくれる訳じゃないですしuser/passだけ特別扱いというのはどうも。
> 
> >> URI.parse('http://example.com/%2F').path
> => "/%2F"

URI::Component というクラスを作っている者です。

  http://rubygems.org/gems/uri-component

現状、ドキュメントなしでテスト・実績も不十分ですが、
こんな感じ↓に使えます。ご参考まで。

require "uri/component"

URI::Component.mixin

u=URI.parse("http://alice:p%40s%25sword / example.com/dir%2Fname/subdir?foo=bar%40example.com")
p u.userinfo_component.user
# => "alice"
p u.userinfo_component.password
# => "p@s%sword"
p u.path_component.nodes
# => ["dir/name", "subdir"]
p u.query_component['foo']
# => ["bar / example.com"]
p u.query_component.params
# => {"foo"=>["bar / example.com"]}

> ----------------------------------------
> Bug #9045: URIに含まれるエンコードされたID/パスワードがデコードされない
> https://bugs.ruby-lang.org/issues/9045#change-42564

-- 
-- Name: SATOH Fumiyasu @ OSS Technology Corp. (fumiyas @ osstech co jp)
-- Business Home: http://www.OSSTech.co.jp/
-- GitHub Home: https://GitHub.com/fumiyas/
-- PGP Fingerprint: BBE1 A1C9 525A 292E 6729  CDEC ADC2 9DCA 5E1C CBCA