I agree with @phluid61, plain path provided to URI.parse should not be treated as implicit file scheme. Such a change would break backwards compatibility for the methods mentioned, and I think URI.parse('http://foo/bar').merge(URI.parse('/1/2/3')) should result in #<URI::HTTP http://foo/1/2/3> and not #<URI::File file:///1/2/3>.