Project

General

Profile

Actions

Feature #14035

closed

URI module always serializes to the minimal form insted of the traditional one

Added by ioggstream (Roberto Polli) over 3 years ago. Updated about 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:83423]

Description

Reproduce

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

I expect

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.

Related issues

Related to Ruby master - Feature #15861: Correctly parse `file:c:/path/to/file` URIsOpenActions
Actions

Also available in: Atom PDF