In Files

  • open-uri.rb

Methods

Kernel

Public Class Methods

open(name, *rest, &block) click to toggle source

makes possible to open various resources including URIs. If the first argument respond to `open’ method, the method is called with the rest arguments.

If the first argument is a string which begins with xxx://, it is parsed by URI.parse. If the parsed object respond to `open’ method, the method is called with the rest arguments.

Otherwise original open is called.

Since open-uri.rb provides OpenURI::OpenRead#open, URI::HTTPS#open and OpenURI::OpenRead#open, Kernelopen can accepts such URIs and strings which begins with http://, https:// and ftp://. In these case, the opened file object is extended by OpenURI::Meta.

 
               # File open-uri.rb, line 27
def open(name, *rest, &block) # :doc:
  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)
  end
end
            

Private Instance Methods

open(name, *rest, &block) click to toggle source

makes possible to open various resources including URIs. If the first argument respond to `open’ method, the method is called with the rest arguments.

If the first argument is a string which begins with xxx://, it is parsed by URI.parse. If the parsed object respond to `open’ method, the method is called with the rest arguments.

Otherwise original open is called.

Since open-uri.rb provides OpenURI::OpenRead#open, URI::HTTPS#open and OpenURI::OpenRead#open, Kernelopen can accepts such URIs and strings which begins with http://, https:// and ftp://. In these case, the opened file object is extended by OpenURI::Meta.

 
               # File open-uri.rb, line 27
def open(name, *rest, &block) # :doc:
  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)
  end
end