Setting HTTP credentials in the URL is too much restrictive. URI restricts format from user and password with a RegExp.
It's too much restrictive. In a real app I use e-mails as usernames and those are not supported by URI.
e.g:
irb(main):001:0> require 'uri'
=> true
irb(main):002:0> example = URI.parse('http://ernesto.jimenez:pass@tractis.com')
=> #<URI::HTTP:0x1c896e URL:http://ernesto.jimenez:pass@tractis.com>
irb(main):003:0> example.user
=> "ernesto.jimenez"
irb(main):004:0> example = URI.parse('http://ernesto.jimenez@negonation.com:pass@tractis.com')
URI::InvalidURIError: bad URI(is not URI?): http://ernesto.jimenez@negonation.com:pass@tractis.com
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/common.rb:436:in `split'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/common.rb:485:in `parse'
from (irb):4
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/ftp.rb:128
irb(main):005:0> example.user = 'ernesto.jimenez@negonation.com'
URI::InvalidComponentError: bad component(expected userinfo component or user component): ernesto.jimenez@negonation.com
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/generic.rb:269:in `check_user'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/generic.rb:311:in `user='
from (irb):5
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/uri/ftp.rb:128