[#77789] [Ruby trunk Feature#12012] Add Boolean method — prodis@...
Issue #12012 has been updated by Fernando Hamasaki de Amorim.
4 messages
2016/10/27
[ruby-core:77819] [Ruby trunk Bug#12886] URI#merge doesn't handle paths correctly
From:
samuel@...
Date:
2016-10-30 23:08:37 UTC
List:
ruby-core #77819
Issue #12886 has been reported by Samuel Williams.
----------------------------------------
Bug #12886: URI#merge doesn't handle paths correctly
https://bugs.ruby-lang.org/issues/12886
* Author: Samuel Williams
* Status: Open
* Priority: Normal
* Assignee:
* ruby -v:
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
I feel like this should work.
~~~
> URI.parse("/base/uri") + URI.parse("relative")
URI::BadURIError: both URI are relative
~~~
The result should be URI with path = "/base/relative".
But it doesn't. It fails with an exception.
There are two ways to fix this. The first is to change the meaning of `URI#absolute?` to relate to the absoluteness of the path, not whether or not there is a scheme.
The second way to fix this is to directly work around the issue in `merge`.
In my opinion
~~~
> URI.parse("a/b") + URI.parse("c")
URI::BadURIError: both URI are relative
~~~
should also work, with a result of "a/c".
The need for the LHS of the operation to contain a scheme is not a useful requirement in practice, and in addition, I'd like to state that `URI("a/c")` is actually a valid URI. So, it's purely the `merge` function being to limited in what it will handle for no obvious reason.
Situations where this comes up: parsing a website which contains relative URLS, and you want to construct absolute URLs.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>