On Sun, Dec 2, 2012 at 4:00 PM, David Madison <lists / ruby-forum.com> wrote:
> tamouse mailing lists wrote in post #1087523:
>> Handling an underscore in a domain name as you are is expedient to the
>> immediate issue you seem to have, however it is not a fix.
>
> Well - it's not a proper fix from the perspective that URI is broken
> and needs to be rethought, but it is a fix to the problem of:
>   "I am using URI and I need to support sub_domain names and it
>    looks like the maintainers of URI aren't planning on changing
>    anytime soon"
>
> :)
>
> --
> Posted via http://www.ruby-forum.com/.
>

This might offer a better workaround:

Change the regexp used to parse the hostname by creating a new parser object:

1.9.3-p194 :047 > u = URI::Parser.new(:HOSTNAME =>
"(?:[a-zA-Z0-9\\-._~]|%\\h\\h)+")
 => #<URI::Parser:0x8728bcc>
1.9.3-p194 :048 > uri = u.parse("http://www_w.example.com")
 => #<URI::HTTP:0x87af21c URL:http://www_w.example.com>

Interesting thing, I was perusing the commit logs for uri/common.rb.
On Dec 5th, 2010, a change was applied that would have made the
hostname regexp match that specified in 3986, then about 1.5 hours
later, it was changed back. I wonder what their thinking was...