模块 URI

公共类方法

open(name, *rest, &block) 点击切换源代码

允许打开各种资源,包括 URI。

如果第一个参数响应 ‘open’ 方法,则会使用其余的参数调用该对象的 ‘open’ 方法。

如果第一个参数是一个以 `(协议)://` 开头的字符串,它将被 URI.parse 解析。 如果解析后的对象响应 ‘open’ 方法,则会使用其余的参数调用该对象的 ‘open’ 方法。

否则,将调用 Kernel#open。

OpenURI::OpenRead#open 提供 URI::HTTP#open、URI::HTTPS#open 和 URI::FTP#open、Kernel#open。

我们可以接受以 http://、https:// 和 ftp:// 开头的 URI 和字符串。 在这些情况下,打开的文件对象会被 OpenURI::Meta 扩展。

调用超类方法
# File open-uri.rb, line 23
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
    super
  end
end