On Sat, Dec 1, 2012 at 7:24 PM, David Madison <lists / ruby-forum.com> wrote:
> Here's a workaround that fixes URI.parse.
>
> I didn't feel like rewriting the entire split, so I escaped out the '_'
> in the URL with a legal string.
>
> This will work great as long as you don't find a domain that has "_"
> *and* the string "UNDERLINEuriSplitISbrokenUNDERLINE" in it.  That seems
> like a reasonable premise for a kludgy hack fix.  :)
>
> See attached file if you have problems with cut-and-paste because of the
> line wrap:
>
> require 'uri'
>
> # Fix for broken URI.parse (doesn't allow '_' in subdomains)
> module URI
>   class << self
>     alias origsplit split
>     def split(uri)
>       return origsplit(uri) unless
> uri.gsub!(/^([^:]+:\/\/[^\/]+)_/,'\1UNDERLINEuriSplitISbrokenUNDERLINE')
>       fix = origsplit(uri)
>       fix[2].gsub!(/UNDERLINEuriSplitISbrokenUNDERLINE/,'_')
>       fix
>     end
>   end
> end
>
> puts URI.parse("http://whatever.domain.com")
> puts URI.parse("http://whatever_again.domain.com")
>
> Attachments:
> http://www.ruby-forum.com/attachment/7919/urifix.rb
>
>
> --
> Posted via http://www.ruby-forum.com/.
>

Underscores aren't valid in domain names..., just a-z, 0-9, and -