Issue #8544 has been updated by Mike Williams.


Here's a naive implementation of support for "file:"

    require 'open-uri'
    require 'uri'

    module URI

      class File < Generic
        def open(*args, &block)
          ::File.open(self.path, &block)
        end
      end

      @@schemes['FILE'] = File

    end


----------------------------------------
Feature #8544: OpenURI should open 'file://' URIs
https://bugs.ruby-lang.org/issues/8544#change-51666

* Author: Silas Davis
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
The following code prints the contents of '/tmp/file.txt':

require 'open-uri'
open('/tmp/file.txt').read {|f| puts f.read }

which although useful should probably fail since a unix file path is not a URI, and therefore might shield data problems in a system

However the following should produce the same output and is a URI, but fails:

open('file:///tmp/file.txt').read {|f| puts f.read }

I note that the documentation for open-uri does explain that it is a wrapper for http, https, and ftp, but to deserve its name it should open such URIs as specified in this RFC: http://tools.ietf.org/html/rfc1630. This coupled with the fact that it already does open files, but not by a URI specification.




-- 
https://bugs.ruby-lang.org/