123456789_123456789_123456789_123456789_123456789_

Module: URI

Relationships & Source Files
Namespace Children
Classes:
Defined in: lib/open-uri.rb,
lib/open-uri.rb

Class Method Summary

Class Method Details

.open(name, *rest, &block)

Allows the opening of various resources including URIs.

If the first argument responds to the ‘open’ method, ‘open’ is called on it with the rest of the arguments.

If the first argument is a string that begins with <code>(protocol)://<code>, it is parsed by URI.parse. If the parsed object responds to the ‘open’ method, ‘open’ is called on it with the rest of the arguments.

Otherwise, Kernel.open is called.

OpenURI::OpenRead#open provides URI::HTTP#open, URI::HTTPS#open and URI::FTP#open, Kernel.open.

We can accept URIs and strings that begin with http://, https:// and ftp://. In these cases, the opened file object is extended by ::OpenURI::Meta.

[ GitHub ]

  
# File 'lib/open-uri.rb', line 44

def self.open(name, *rest, &block)
  if name.respond_to?(:open)
    name.open(*rest, &block)
  elsif name.respond_to?(:to_str) &&
        %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ name &&
        (uri = URI.parse(name)).respond_to?(:open)
    uri.open(*rest, &block)
  else
    open_uri_original_open(name, *rest, &block)
    # After Kernel#open override is removed:
    #super
  end
end