From: Ben Johnson Date: 2008-11-21T07:16:02+09:00 Subject: Found a ruby bug in the URI class, what do I do? I'm pretty sure this is a bug, and it seem so obvious that I'm thinking I might be doing something wrong. Check it out: >> require "uri" => true >> URI.parse("http://whatever.domain.com") => # >> URI.parse("http://whatever_again.domain.com") URI::InvalidURIError: the scheme http does not accept registry part: whatever_again.domain.com (or bad hostname?) from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/generic.rb:195:in `initialize' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/http.rb:78:in `initialize' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/common.rb:488:in `new' from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/common.rb:488:in `parse' from (irb):45 When you add an underscore the sub domain it raises an exception, even though that is a perfectly valid host name. I dug deeper and found the following: >> URI.split("http://whatever.domain.com") => ["http", nil, "whatever.domain.com", nil, nil, "", nil, nil, nil] >> URI.split("http://whatever_again.domain.com") => ["http", nil, nil, nil, "whatever_again.domain.com", "", nil, nil, nil] Notice its not recognizing the second URI as a host, which is really strange, its actually saying its the registry. Anyways, can anyone shed some light on this or do you have any ideas how I can easily patch this? Check out the split method source: http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/classes/URI.html#M009379 That doesn't look to easy to patch since its one big regular expression that breaks up the string. Thanks for your help! -- Posted via http://www.ruby-forum.com/.