Issue #14035 has been updated by ioggstream (Roberto Polli).


Hi Matthew, and thanks for your time!

phluid61 (Matthew Kerwin) wrote:
> The spec for file URIs is [RFC8089](https://tools.ietf.org/html/rfc8089), which allows for file URIs with no authority part (e.g. 'file:/foo').
Ok.

> Neither it nor RFC3986 make any claims about canonical representation of URIs, much as I may have liked it to.
I read here https://tools.ietf.org/html/rfc8089#appendix-B reports that there is a `traditional` form though.
Clearly `traditional` != `canonical` ;)

Checked gem, thx++



----------------------------------------
Feature #14035: URI module always serializes to the minimal form insted of the traditional one
https://bugs.ruby-lang.org/issues/14035#change-67566

* Author: ioggstream (Roberto Polli)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
### Reproduce

execute URI("file:///etc/hosts").to_s 


### I expect

  - URI("file:///etc/hosts").to_s == "file:///etc/hosts"

  - URI to preserve traditional form instead converting it to the minimal one (Eg. see https://tools.ietf.org/html/rfc8089#appendix-B ) 

  
### I wish

  - URI to preserve the minimal/traditional form.

  URI("file:///etc/hosts").to_s == "file:///etc/hosts"
  URI("file:/etc/hosts").to_s == "file:/etc/hosts"


### Instead 

  - URI("file:///etc/hosts").to_s == "file:/etc/hosts"

  - URI("file:///etc/hosts").host == nil

### Proposal for Ruby 2.4

Adopting the convention of an "empty host" instead of no authority when the passed string has the traditional form.

  - file schema to have a blank/empty "" host  

suggested in rfc3986 will fix the issue.

```
   If the URI scheme defines a default for host, then that default
   applies when the host subcomponent is undefined or when the
   registered name is empty (zero length).  For example, the "file" URI
   scheme is defined so that no authority, an empty host, and
   "localhost" all mean the end-user's machine, whereas the "http"
   scheme considers a missing authority or empty host invalid.
```
 



-- 
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>