先生!せっかく URI.escape したのに URI.parse できない文字列があって困ってます!
先生からもなんか言ってやってください!

irb> s = URI.escape("http://example.com/[abc]")
"http://example.com/[abc]"
irb> URI.parse(s)
URI::InvalidURIError: bad URI(is not URI?): http://example.com/[abc]

RFC3986 さんは
「でもまあ authority に入ってさえなけりゃブラケットはパーセントエンコードしなくても実質問題ないんじゃね」
みたいなことをオフレコで言ってました

第2引数に正規表現書けば動作しますがめどいです

ちなみに Addressable::URI くんはパーセントエンコードしますが normalize で authority 内のが消えます
irb> s = Addressable::URI.escape("http://exam[]ple.com/[abc]")
"http://exam%5B%5Dple.com/%5Babc%5D"
irb> p Addressable::URI.parse(s).normalize
#<Addressable::URI:0xfdb9da28c URI:http://exam[]ple.com/%5Babc%5D>
惜しい