Issue #6057 has been updated by Scott Gonyea.


Another example:

URI.join("http://foo.com/baz", "bar", "bim")
# => #<URI::HTTP:0x1005412e URL:http://foo.com/bim> 

Also, if we did model the behavior of Pathname, then joining of "/baz" would reset the path which I do think is acceptable and good behavior.
----------------------------------------
Bug #6057: URI - Nonsensical Behavior
https://bugs.ruby-lang.org/issues/6057

Author: Scott Gonyea
Status: Open
Priority: Normal
Assignee: 
Category: lib
Target version: 
ruby -v: 1.9.3-p125


The behavior of Ruby's URI is confusing, to say the least.

URI("http://foo.com/bar") + "baz"
# => #<URI::HTTP:0x710713de URL:http://foo.com/baz> 

URI.join("http://foo.com/baz", "bar")
# => #<URI::HTTP:0x29fd5dc4 URL:http://foo.com/bar>

I could at least understand this behavior being the case if we were adding "/bar" (although it'd still be non-intuitive). That URI throws away its current path makes it a tedious library. Net::HTTP expects it as an input, yet as you interact with URI, you are constantly massaging it into and out of string form.

In my opinion, URI should model the behavior of Pathname.



-- 
http://bugs.ruby-lang.org/