class URI::Generic

要約

すべての URI クラスの基底クラスです。

hash と eql? が再定義されているため、Hash のキーとして利用することができます。

目次

特異メソッド
インスタンスメソッド
定数

継承しているメソッド

特異メソッド

build(ary) -> URI::Generic[permalink][rdoc]
build(hash) -> URI::Generic

引数で与えられた URI 構成要素から URI::Generic オブジェクトを生成します。

[PARAM] ary:
構成要素を表す配列を与えます。要素は以下の順です。
      [scheme, userinfo, host, port, registry, path, opaque, query, fragment]
[PARAM] hash:
構成要素を表すハッシュを与えます。ハッシュのキーはシンボルは以下のいずれかです。ハッシュの値は文字列で与えます。
      :scheme ,:userinfo, :host, :port, :registry, :path, :opaque, :query, :fragment
[EXCEPTION] URI::InvalidComponentError:
各要素が適合しない場合に発生します。
build2(ary) -> URI::Generic[permalink][rdoc]
build2(hash) -> URI::Generic

URI::Generic.build と同じですが、例外 URI::InvalidComponentError が発生した場合に、引数の各要素を URI.escape して再度 build を試みます。

[PARAM] ary:
構成要素を表す文字列の配列を与えます。要素は以下の順です。
      [scheme, userinfo, host, port, registry, path, opaque, query, fragment]
[PARAM] hash:
構成要素を表すハッシュを与えます。ハッシュのキーはシンボルは以下のいずれかです。 ハッシュの値は文字列で与えます。
      :scheme, :userinfo, :host, :port, :registry, :path, :opaque, :query, :fragment
component -> [Symbol][permalink][rdoc]

URI の構成要素を表すシンボルの配列を返します。

require 'uri'
p URI::Generic.component
p URI::MailTo.component

# => [:scheme, :userinfo, :host, :port, :registry, :path, :opaque, :query, :fragment]
# => [:scheme, :to, :headers]
default_port -> Integer | nil[permalink][rdoc]

スキームに対応するデフォルトのポート番号を整数で返します。

require 'uri'
URI::Generic.default_port     # => nil
URI::FTP.default_port         # => 21
URI::HTTP.default_port        # => 80
URI::HTTPS.default_port       # => 443
URI::LDAP.default_port        # => 389
URI::LDAPS.default_port       # => 636
URI::MailTo.default_port      # => nil
new(scheme, userinfo, host, port, registry, path, opaque, query, fragment, parser = URI::DEFAULT_PARSER, arg_check = false) -> URI::Generic[permalink][rdoc]

各引数を成分とする URI::Generic オブジェクトを生成して返します。

[PARAM] scheme:
構成要素 scheme を表す文字列を与えます。
[PARAM] userinfo:
構成要素を表す文字列を与えます。
[PARAM] host:
構成要素を表す文字列を与えます。
[PARAM] port:
構成要素を表す文字列を与えます。
[PARAM] registry:
構成要素を表す文字列を与えます。
[PARAM] path:
構成要素を表す文字列を与えます。
[PARAM] opaque:
構成要素を表す文字列を与えます。
[PARAM] query:
構成要素を表す文字列を与えます。
[PARAM] fragment:
構成要素を表す文字列を与えます。
[PARAM] arg_check:
真が与えられた場合は、各引数が字句規則に適合しているか否かを検査します。適合しない場合は例外 URI::InvalidComponentError が起ります。
[EXCEPTION] URI::InvalidURIError:
use_registry が偽のとき、registry が与えられると発生します。
use_registry -> bool[permalink][rdoc]

構成要素 registry を受け付けるなら true を返します。 URI::Generic クラスでは false です。

インスタンスメソッド

merge(rel) -> URI::Generic[permalink][rdoc]
self + rel -> URI::Generic

自身と与えられたパス rel を連結した新しい URI オブジェクトを生成して返します。

[RFC3986] の Section 5.2 の仕様に従います。 rel が文字列の場合は URI.parse(rel) によって、URI に変換してから連結します。

[PARAM] rel:
連結したいパスを文字列か URI オブジェクトで与えます。

例:

require 'uri'
p URI.parse('http://example.com/') + '/foo/bar.html'
#=> #<URI::HTTP:0x201001c0 URL:http://example.com/foo/bar.html>
URI('http://a/b/c/d;p?q').merge('?y')            #=> #<URI::HTTP:0xb7ca2e2c URL:http://a/b/c/d;p?y>
URI('http://a/b/c/d;p?q').merge('/./g')          #=> #<URI::HTTP:0xb7ca2738 URL:http://a/g>
URI('http://a/b/c/d;p?q').merge('/../g')         #=> #<URI::HTTP:0xb7ca2008 URL:http://a/g>
URI('http://a/b/c/d;p?q').merge('../../../g')    #=> #<URI::HTTP:0xb7ca1888 URL:http://a/g>
URI('http://a/b/c/d;p?q').merge('../../../../g') #=> #<URI::HTTP:0xb7ca10a4 URL:http://a/g>
route_from(src) -> URI::Generic[permalink][rdoc]
self - src -> URI::Generic

与えられた URI を表す src からの相対パスを返します。

[PARAM] src:
自身の相対パスを算出するための、ルートとなる Absolute URI を与えます。

例:

require 'uri'
p URI.parse('http://example.com/foo/bar.html') - 'http://example.com/'
#=> #<URI::Generic:0x20100256 URL:foo/bar.html>
self == uri -> bool[permalink][rdoc]

引数に指定した URI (文字列またはURIオブジェクト)との一致判定を行います。URI は正規化して比較されます。

[PARAM] uri:
比較したい URI を URI オブジェクトで指定します。

例:

require 'uri'
u1 = URI.parse('http://example.com/?hoge')
u2 = URI.parse('http://Example.Com/?hoge')
p u1 == u2                                  #=> true
absolute -> bool[permalink][rdoc]
absolute? -> bool

自身に scheme が設定されているなら true を返します。そうでない場合は false を返します。

例:

require 'uri'
p URI.parse('http://example.com/').absolute?    #=> true
p URI.parse('./').absolute?                     #=> false
coerce(oth) -> [URI, URI][permalink][rdoc]

引数 oth をパースして [パース後の oth, self] の配列を返します。

[PARAM] oth:
URI オブジェクトか文字列を指定します。

例:

require 'uri'

uri = URI.parse("http://my.example.com")
uri.coerce("http://foo.com")
# => [#<URI::HTTP:0x00000000bcb028 URL:http://foo.com/>, #<URI::HTTP:0x00000000d92178 URL:http://my.example.com>]
component -> [Symbol][permalink][rdoc]

self.class.component を返します。

[SEE_ALSO] URI::Generic.component

default_port -> Integer | nil[permalink][rdoc]

self.class.default_port を返します。

[SEE_ALSO] URI::Generic.default_port

find_proxy(env = ENV) -> URI | nil[permalink][rdoc]

プロキシ URI を返します。

プロキシ URI は http_proxy, ftp_proxy, no_proxy などの環境変数から取得します。適切なプロキシが見つからない場合は nil を返します。

環境変数は大文字にしたもの(HTTP_PROXY, FTP_PROXY, NO_PROXYなど)も調べられる事に注意してください。

ただし、CGI環境下では http_proxy と HTTP_PROXY は特別扱いされます。 HTTP_PROXY はヘッダ Proxy: に設定されうるためです。そのため、 HTTP_PROXY(環境変数が大文字小文字を区別しない場合は http_proxy も) は使われません。代わりに CGI_HTTP_PROXY が使われます。

[PARAM] env:
環境変数 ENV の代わりに参照するオブジェクトを指定します。
[EXCEPTION] BadURIError:
selfが相対URIであった場合に発生します。

[SEE_ALSO] ENV

fragment -> String | nil[permalink][rdoc]

自身の fragment を文字列で返します。設定されていない場合は nil を返します。

例:

require 'uri'
u = URI.parse('http://example.com/#frgmt')
p u.fragment                                #=> "frgmt"
fragment=(s)[permalink][rdoc]

自身の fragment を設定します。

[PARAM] s:
自身の fragment を表す文字列を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
hierarchical? -> bool[permalink][rdoc]

自身に path が設定されているなら true を返します。そうでない場合は false を返します。

host -> String | nil[permalink][rdoc]

自身の host を文字列で返します。設定されていない場合は nil を返します。

[SEE_ALSO] URI::Generic#hostname

host=(s)[permalink][rdoc]

自身の host を設定します。

[PARAM] s:
自身の host を表す文字列を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
[EXCEPTION] URI::InvalidURIError:
host と registry を同時に設定した場合に発生します。

[SEE_ALSO] URI::Generic#hostname=

hostname -> String | nil[permalink][rdoc]

自身の hostname を文字列で返します。また、URI::Generic#host が設定されていない場合は nil を返します。

このメソッドは URI::Generic#host に IPv6 アドレスが設定されていた場合はブラケットを削除した文字列を返しますがそれ以外は同じ文字列を返します。

require 'uri'
u = URI("http://[::1]/bar")
p u.hostname      # => "::1"
p u.host          # => "[::1]"
hostname=(s)[permalink][rdoc]

自身の hostname を設定します。

このメソッドは引数に IPv6 アドレスを設定した場合は URI::Generic#host にブラケットを追加した文字列を設定しますがそれ以外は同じ処理を行います。

require 'uri'
u = URI("http://foo/bar")
p u.to_s                  # => "http://foo/bar"
u.hostname = "::1"
p u.to_s                  # => "http://[::1]/bar"
[PARAM] s:
自身の hostname を表す文字列を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
[EXCEPTION] URI::InvalidURIError:
host と registry を同時に設定した場合に発生します。
merge!(rel) -> self[permalink][rdoc]

与えられたパス rel を自身へ連結します。

[RFC2396] の Section 5.2 の仕様に従います。 rel が文字列の場合は URI.parse(rel) によって、URI に変換してから連結します。

[PARAM] rel:
連結したいパスを文字列か URI オブジェクトで与えます。

例:

require 'uri'
u = URI.parse('http://example.com/')
u.merge!('/foo/bar.html')
p u.to_s                                   #=> http://example.com/foo/bar.html
normalize -> URI::Generic[permalink][rdoc]
normalize! -> String | nil

URI オブジェクトを正規化して返します。ホスト名を小文字にし、パスと構成要素がなければ '/' をセットします。

例:

require 'uri'
u = URI.parse('http://Example.Com')
p u.to_s                            #=> "http://Example.Com"
p u.normalize.to_s                  #=> "http://example.com/"
opaque -> String | nil[permalink][rdoc]

自身の opaque を文字列で返します。設定されていない場合は nil を返します。

例:

require 'uri'
p URI.parse('http://example.com/').opaque       #=> nil
p URI.parse('mailto:nospam@localhost').opaque   #=> "nospam@localhost"
p URI.parse('urn:ietf:rfc:1149').opaque         #=> "ietf:rfc:1149"
opaque=(s)[permalink][rdoc]

自身の opaque を設定します。

[PARAM] s:
自身の opaque を表す文字列を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
[EXCEPTION] URI::InvalidURIError:
opaque とヒエラルキーパートを同時に設定した場合に発生します。
parser -> URI::Parser[permalink][rdoc]

selfのパーサを返します。未定義であった場合は URI::DEFAULT_PARSER を返します。

password -> String | nil[permalink][rdoc]

自身の password を文字列で返します。設定されていない場合は nil を返します。

password=(s)[permalink][rdoc]

自身の password を設定します。

自身に user が設定されていない場合には例外が発生します。

[PARAM] s:
自身の password を表す文字列を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
[EXCEPTION] URI::InvalidURIError:
userinfo と registry を同時に設定した場合に発生します。
path -> String | nil[permalink][rdoc]

自身の path を文字列で返します。設定されていない場合は nil を返します。

require 'uri'
p URI.parse('http://example.com/hoge').path       #=> "/hoge"
p URI.parse('http://example.com').path            #=> ""
p URI.parse('mailto:nospam@localhost').path       #=> nil
p URI('ftp://example.com/foo').path    #=> 'foo'
p URI('ftp://example.com/%2Ffoo').path #=> '/foo'
path=(s)[permalink][rdoc]

自身の path を設定します。

[PARAM] s:
自身の path を表す文字列を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
[EXCEPTION] URI::InvalidURIError:
opaque と path を同時に設定した場合に発生します。
port -> String | nil[permalink][rdoc]

自身の port を文字列で返します。設定されていない場合は nil を返します。

port=(s)[permalink][rdoc]

自身の port を設定します。

[PARAM] s:
自身の port を表す文字列か整数を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
[EXCEPTION] URI::InvalidURIError:
port と registry を同時に設定した場合に発生します。
query -> String | nil[permalink][rdoc]

自身の query を文字列で返します。設定されていない場合は nil を返します。

例:

require 'uri'
p URI.parse('http://example.com/?hoge').query   #=> "hoge"
query=(s)[permalink][rdoc]

自身の query を設定します。

[PARAM] s:
自身の query を表す文字列を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
[EXCEPTION] URI::InvalidURIError:
opaque と query を同時に設定した場合に発生します。
registry -> String | nil[permalink][rdoc]

自身の registry を文字列で返します。設定されていない場合は nil を返します。

registry=(s)[permalink][rdoc]

自身の registry を設定します。

[PARAM] s:
自身の registry を表す文字列を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
[EXCEPTION] URI::InvalidURIError:
server 部と registry を同時に設定した場合に発生します。
relative? -> bool[permalink][rdoc]

自身に scheme が設定されていないなら true を返します。そうでない場合は false を返します。

例:

require 'uri'
p URI.parse('http://example.com/').relative?    #=> false
p URI.parse('./').relative?                     #=> true
route_to(dst) -> URI::Generic[permalink][rdoc]

自身から dst への相対パスを返します。

[PARAM] dst:
URI を文字列かURIオブジェクトで与えます。

例:

require 'uri'
p URI.parse('http://example.com/').route_to('http://example.com/foo/bar.html')

#=> #<URI::Generic:0x20100198 URL:foo/bar.html>
scheme -> String | nil[permalink][rdoc]

自身の scheme を文字列で返します。設定されていない場合は nil を返します。

scheme=(s)[permalink][rdoc]

自身の scheme を設定します。

[PARAM] s:
自身の scheme を表す文字列を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
select(*components) -> [String][permalink][rdoc]

指定された components に対応する構成要素を文字列の配列として返します。

[PARAM] components:
構成要素名をシンボルで指定します。

例:

require 'uri'

uri = URI.parse('http://myuser:mypass@my.example.com/test.rbx')
p uri.select(:userinfo, :host, :path)
# => ["myuser:mypass", "my.example.com", "/test.rbx"]
to_s -> String[permalink][rdoc]

自身が表す URI を文字列として返します。

例:

require 'uri'
p URI.parse('http://example.com/').to_s #=> "http://example.com/"
user -> String | nil[permalink][rdoc]

自身の userinfo を文字列で返します。

userinfo が「username:password」の形式である場合は、username 部を返します。設定されていない場合は nil を返します。

user=(s)[permalink][rdoc]

自身の user を設定します。

[PARAM] s:
自身の user を表す文字列を指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
[EXCEPTION] URI::InvalidURIError:
user と registry を同時に設定した場合に発生します。
userinfo -> String | nil[permalink][rdoc]

自身の userinfo を "username:password" という形式の文字列で返します。設定されていない場合は nil を返します。

userinfo=(s)[permalink][rdoc]

自身の userinfo を設定します。

[PARAM] s:
自身の userinfo を "username" か "username:password" という形式の文字列、あるいは [username, password] という形式の文字列の配列で指定します。
[EXCEPTION] URI::InvalidComponentError:
不正な引数 s に対して発生します。
[EXCEPTION] URI::InvalidURIError:
userinfo と registry を同時に設定した場合に発生します。

例:

require 'uri'
u = URI.parse('http://example.com/')
u.userinfo = 'hoge-san:jfae82kj'
p u.to_s                             #=> "http://hoge-san:jfae82kj@example.com/"

u.userinfo = 'oreore'
p u.to_s                             #=> "http://oreore:jfae82kj@example.com/"

u.userinfo = ['you', 'akakfd']
p u.to_s                             #=> "http://you:akakfd@example.com/"

定数

COMPONENT -> [Symbol][permalink][rdoc]

URI::Generic で利用可能なコンポーネントの一覧です。

DEFAULT_PORT -> nil[permalink][rdoc]

URI::Generic のデフォルトポート(nil)です。