From: robipolli@... Date: 2017-10-24T11:10:44+00:00 Subject: [ruby-core:83540] [Ruby trunk Feature#14035] URI module always serializes to the minimal form insted of the traditional one 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: