On Oct 1, 2007, at 03:02 , Gareth Adams wrote:
> I just got stung by  rather annoying feature of URI.join:
>
> irb(main):001:0> URI.join('http://www.example.com/something',  
> 'else').to_s
> => "http://www.example.com/else"
>
> Note that this completely ignores the 'something' in the original  
> URI. I had assumed that it joined in a similar way to File.join:
>
> irb(main):002:0> File.join('/something', 'else').to_s
> => "/something/else"
>
> I notice that adding a slash works as expected, but why is there a  
> difference?

URIs and paths are not the same, "http://example.com/something" and  
"http://example.com/something/" are allowed to return different  
content.  URI.join works off the directory, "/" in your case, rather  
than assuming that "/something" is a directory, which may be incorrect.

(My annoyance with this method is that the first argument cannot be a  
URI::Generic.)

--
Poor workers blame their tools. Good workers build better tools. The
best workers get their tools to do the work for them. -- Syndicate Wars