class Socket + BasicSocket + IO + Enumerable + File::Constants + Object
クラスの継承リスト: Socket < BasicSocket < IO < Enumerable < File::Constants < Object < Kernel
要約
ソケットそのものに対するシステムコールレベルのアクセスを提供 するクラス。
Perl のソケットに対するアクセスと同レベルの機能を 提供しています。このクラスではソケットアドレスは Array#pack された文字列で指定します (socket/ソケットアドレス構造体を pack した文字列 を参照)。
一般的なソケットプログラミングはより高レベルの TCPSocket クラスや TCPServer クラスを用い て行われることが多く、このクラスはあまり用いられません。
特異メソッド
do_not_reverse_lookup -> bool
-
この値が真ならアドレスからホスト名への逆引きを行わなくなります。
この設定は大域的に作用します。
デフォルトは false です。
以下のメソッドの動作に影響します。
do_not_reverse_lookup=(bool)
-
BasicSocket#do_not_reverse_lookup の値を変更します。
- [PARAM] bool:
- この値が真ならアドレスからホスト名への逆引きを行わなくなります。
例:
require 'socket' p TCPSocket.new('localhost', 'telnet').addr TCPSocket.do_not_reverse_lookup = true p TCPSocket.new('localhost', 'telnet').addr => ["AF_INET", 2253, "localhost", "127.0.0.1"] ["AF_INET", 2254, "127.0.0.1", "127.0.0.1"]
for_fd(fd) -> BasicSocket
-
ファイルディスクリプタ fd に対する新しいソケットを生成します。
返り値のクラスはどのクラスの for_fd を呼びだしたかによって決まります。
BasicSocket.for_fd(fd) # BasicSocket のインスタンスを返す TCPSocket.for_fd(fd) # TCPSocket のインスタンスを返す
- [PARAM] fd:
- ファイルディスクリプタ を指定します。
- [RETURN]
- 任意のソケットである fd から対応するソケットクラスのインスタンスを作り、それを返します。
new(fd, mode = "r") -> IO
for_fd(fd, mode = "r") -> IO
open(fd, mode = "r") -> IO
open(fd, mode = "r") {|io| ... } -> object
-
オープン済みのファイルディスクリプタ fd に対する新しい IO オブジェクトを生成して返します。
IO.open にブロックが与えられた場合、IO オブジェクトを生成しそれを引数としてブロックを 実行します。ブロックの終了とともに fd はクローズされます。ブロックの結果を返します。 IO.new, IO.for_fd はブロックを受け付けません。
- [PARAM] fd:
- ファイルディスクリプタである整数を指定します。
- [PARAM] mode:
- Kernel.#open と同じ形式で IO のモードを指定します。File::Constants::RDONLY などの 定数(数値)でモードを指定できます。詳細は組み込み関数 Kernel.#open を参照 してください。 mode は省略可能で、省略時のデフォルトのモードは、 fcntl(2) で F_GETFL フラグが利用できる環境では第一引数で指定した fd のモードを引き継ぎ、 利用できない環境では "r" になります。
- [EXCEPTION] Errno::EXXX:
- IO オブジェクトの生成に失敗した場合に発生します。
foreach(path, rs = $/) {|line| ... } -> nil
foreach(path, rs = $/) -> Enumerable::Enumerator
-
path で指定されたファイルの各行を引数としてブロックを繰り返し実行します。 path のオープンに成功すれば nil を返します。
ブロックが与えられなかった場合は、path で指定されたファイルの各行を繰り返す Enumerable::Enumerator オブジェクトを生成して返します。
path が空ファイルの場合、何もせずに nil を返します。 Kernel.#open と同様 path の先頭が "|" ならば、"|" に続くコマンドの出力を読み取ります。
- [PARAM] path:
- ファイル名を表す文字列か "|コマンド名" を指定します。
- [PARAM] rs:
- 行の区切りを文字列で指定します。rs に nil を指定すると行区切りなしとみなします。 空文字列 "" を指定すると連続する改行を行の区切りとみなします(パラグラフモード)。
- [EXCEPTION] Errno::EXXX:
- path のオープンに失敗した場合、発生します。
[SEE_ALSO] $/
getaddrinfo(nodename, servname, family=nil, socktype=nil, protocol=nil, flags=nil) -> Array
-
[RFC2553]で定義された getaddrinfo() の機能を提供するクラスメソッド。この関数は gethostbyname() や getservbyname() の代わりとして用意されており、 IP のバージョンに依存しないプログラムを書くための標準的な API です。
- [PARAM] nodename:
- ホスト名を指定します。 必須引数です。 (socket/ホスト指定形式 を参照)
- [PARAM] servname:
- サービス名を指定します。 必須引数です。 (socket/サービス指定形式 を参照)
- [PARAM] family:
- アドレスファミリー。Socket::Constants::AF_INET など、AF_ で始まる定数を指定します。
- [PARAM] socktype:
- ソケットタイプ。 Socket::Constants::SOCK_STREAM など、 SOCK_ で始まる定数を指定します。
- [PARAM] protocol:
- プロトコル。Socket::Constants::IPPROTO_IP など、IPPROTO_ で始まる定数を指定します。
- [PARAM] flags:
- getaddrinfo(3) の第3引数に指定する addrinfo 構造体の ai_flags メンバに相当する Fixnum。 Socket::AI_PASSIVEなど。
- [RETURN]
- 7つの要素からなるアドレス情報に関する配列を返します。
- [EXCEPTION] SocketError:
- getaddrinfo(3)がエラーを返したときに発生する例外です
アドレス情報について
アドレス情報とは7つの要素からなる次の形の配列です。
- 第0要素 - アドレスファミリー (String)
- 第1要素 - ポート番号 (Integer)
- 第2要素 - ホスト名 (String)
- 第3要素 - アドレス (String)
- 第4要素 - アドレスファミリーに対応する Integer
- 第5要素 - ソケットタイプに対応する Integer
- 第6要素 - プロトコルに対応する Integer
必須引数について
必須引数の意味は以下の通りです。
- nodename - ホスト名 (socket/ホスト指定形式 を参照)
- servname - サービス名 (socket/サービス指定形式 を参照)
省略可能な引数について
残りの引数は省略可能です。
- family - アドレスファミリー。 Socket::Constants::AF_INET など、AF_ で始まる定数を指定します。
- socktype - ソケットタイプ。 Socket::Constants::SOCK_STREAM など、SOCK_ で始まる定数を指定 します。
- protocol - プロトコル。 Socket::Constants::IPPROTO_IP など、IPPROTO_ で始まる定数を指 定します。
- flags - getaddrinfo(3) の第3引数に指定する addrinfo 構造体の ai_flags メンバに相当する Fixnum。 Socket::AI_PASSIVE、 Socket::AI_CANONNAME、 Socket::AI_NUMERICHOST が用意されている場合があります。
定数の意味について
引数に指定できる定数の意味については getaddrinfo(3) を参照して下さい。
使用例
例:
p Socket.getaddrinfo(Socket.gethostname, "ftp") #=> [["AF_INET", 21, "helium.ruby-lang.org", "210.251.121.214", 2, 1, 6]] pp Socket.getaddrinfo(Socket.gethostname, nil) #=> [["AF_INET", 0, "helium.ruby-lang.org", "210.251.121.214", 2, 1, 6], # ["AF_INET", 0, "helium.ruby-lang.org", "210.251.121.214", 2, 2, 17], # ["AF_INET", 0, "helium.ruby-lang.org", "210.251.121.214", 2, 3, 0]]
gethostbyaddr(host, type = Socket::AF_INET) -> Array
-
sockaddr 構造体をパックした文字列からホスト情報を返します。 ホスト情報の構造は Socket.gethostbyname と同じです。 type には、アドレスタイプ(デフォルトは Socket::AF_INET)を指定します。
- [PARAM] host:
- ホストを文字列で指定します。
- [PARAM] type:
- アドレスタイプ(デフォルトはSocket::AF_INET)を指定します。
- [EXCEPTION] SocketError:
- gethostbyaddr(3) の呼び出しにエラーがあった場合に発生します。
gethostbyname(host) -> Array
-
ホスト名または IP アドレス(指定方法に関しては socket/ホスト指定形式 を参照) からホストの情報を返します。
- [PARAM] host:
- 文字列でホストを指定します。
- [RETURN]
- ホスト情報を含んだ4要素の配列を返します。
返り値のホスト情報について
ホスト情報は以下の 4 要素の配列で表現されています。
- ホスト名
- ホストの別名の配列
- ホストのアドレスタイプ (整数定数)
- ホストのアドレス
第四要素のホストのアドレスは、各アドレスタイプに対応する C のアドレス構造体を pack した文字列として表現されています。 例えばアドレスタイプが AF_INET (定数 2) ならば Socket.unpack_sockaddr_in で unpack できます。
使用例
irb(main):009:0> Socket.gethostbyname("210.251.121.214") ["helium.ruby-lang.org", ["helium"], 2, "\322\373y\326"] irb(main):009:0> Socket.unpack_sockaddr_in(Socket.gethostbyname("210.251.121.214")[3])[1] "210.251.121.214"
gethostname -> String
-
システムの標準のホスト名を取得します。
ホストの別名やアドレスなど他の情報を得るには Socket.getaddrinfo を使ってください。 ただし、これは不可能な場合もあります。
例:
p Socket.gethostname #=> "helium.ruby-lang.org"
getnameinfo(sa, flags = 0) -> Array
-
[RFC2553] で定義された getnameinfo() の機能を提供するク ラスメソッド。 gethostbyaddr() や getservbyport() の代 わりとして用意されています。IPのバージョンに依存しないプログラムを 書くための標準的なAPIです。
- [PARAM] sa:
- 文字列か配列を与えます。
- [PARAM] flags:
- 省略可能な第2引数 flags には getnameinfo(3) の第7番目の引数に指定する flags に相当する Fixnum を与えます。
- [RETURN]
- 配列を返し、その要素はアドレスとポートを表す文字列です。
- [EXCEPTION] SocketError:
- getnameinfo(3) がエラーを起こした場合に生じる例外
引数 sa について
引数 sa には文字列か配列を与えます。文字列の場合は sockaddr 構造体 のパック文字列を与えます。具体的には BasicSocket#getsockname の値が利用できます。配列を与える場合には、要素が3つの場合と4つの場合 があります。
- 要素が3つの場合: [アドレスファミリー, サービス, ホスト]
- 要素が4つの場合: [アドレスファミリー, サービス, 任意, アドレスを表す文字列]
アドレスファミリーには Socket::AF_INET 等の定数の他に文字列 で "AF_INET" もしくは "AF_INET6" もしくは nil が 指定できます。ただしIPv6が使えないようにコンパイルされている場合は "AF_INET6" は無効な指定となります。アドレスファミリーに nil を指定することは Socket::AF_UNSPEC を指定すること と等価です。
サービス、ホストの指定に関しては socket/サービス指定形式 、 socket/ホスト指定形式 を参照してください。
要素が3つの場合でも、ホストにはアドレスを指定できますが、要素が4つ の場合には、最後の要素を名前解決しないことが保証されます。
引数flagsについて
省略可能な第2引数 flags には getnameinfo(3) の第7番目の引数に指定する flags に相当する Fixnum を与えます。
引数flagsを構成するための定数として Socket::NI_MAXHOST、 Socket::NI_MAXSERV、 Socket::NI_NOFQDN、 Socket::NI_NUMERICHOST、 Socket::NI_NAMEREQD、 Socket::NI_NUMERICSERV、 Socket::NI_DGRAM が用意されている場合があります。
これらの定数の意味については getnameinfo(3)を参照 して下さい。
使用例
Socket.getnameinfo(Socket.sockaddr_in('21','127.0.0.1')) #=> ["localhost", "ftp"] Socket.getnameinfo([nil, 21,'127.0.0.1']) #=> ["localhost", "ftp"]
getservbyname(service, proto = "tcp") -> Fixnum
-
service, protoに対応するポート番号を返 します。protoの省略値は"tcp"です。
- [PARAM] service:
- サービス名を文字列で指定します。例えば、"ftp", "telnet" が相当します。
- [PARAM] proto:
- プロトコル名を文字列で指定します。省略値は"tcp" です。
- [RETURN]
- ポート番号を整数で返します。
open(domain, type, protocol) -> Socket
new(domain, type, protocol) -> Socket
-
新しいソケットを生成します。domain、type、 protocol はインクルードファイルにある定数で指定しま す。ほとんどの定数は Socket::AF_INET のように Socket クラスの定数として定義されています。domain とtype に関しては、"AF_INET", "SOCK_STREAM" のように文字列でも指定できますが、文 字列ですべての機能を指定できる保証はありません。
例えば、IPv4 の TCP ソケットは以下のように生成されます。
s = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
なお、socket(2) の domain 引数において AF_ と PF_ のどちらの定数を使用するかについては混乱がありますが、 Stevens の「UNIX ネットワークプログラミング第2版 Vol.1」4.2節に述べられているように、 現実的にはどちらでも問題なく、また、既存のコーディング習慣として AF_ が用いられることが多いため、 ここでは AF_ を使用しています。
- [PARAM] domain:
- 例えば、<sys/socket.h> のようなインクルードファイルに定義されている定数を指定します。
- [PARAM] type:
- 例えば、<sys/socket.h> のようなインクルードファイルに定義されている定数を指定します。
- [PARAM] protocol:
- プロトコルに使用する数値を指定します。
new -> Object
-
Objectクラスのインスタンスを生成して返します。
some = Object.new p some #=> #<Object:0x2b696d8>
sockaddr_in(port, host) -> String
pack_sockaddr_in(port, host) -> String
-
指定したアドレスをsocket/ソケットアドレス構造体を pack した文字列 で返します。port は、ポート番号を表す Fixnum あるいは、ポート 番号、サービス名を表す文字列です。
- [PARAM] port:
- ポート番号を表す Fixnum あるいは、ポート番号、サービス名を表す文字列を指定します。
- [PARAM] host:
- ホストを文字列で指定します。
- [RETURN]
- 指定したアドレスを返します。
例:
require 'socket' p Socket.sockaddr_in("echo", "localhost") => "\002\000\000\a\177\000\000\001\000\000\000\000\000\000\000\000" p Socket.sockaddr_in("echo", "::1") => "\n\000\000\a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000"
sockaddr_un(path) -> String
pack_sockaddr_un(path) -> String
-
指定したアドレスをsocket/ソケットアドレス構造体を pack した文字列 で返します。
- [PARAM] path:
- パスを文字列で指定します。
例:
require 'socket' p Socket.sockaddr_un("/tmp/.X11-unix/X0") => "\001\000/tmp/.X11-unix/X0\000...."
pair(domain, type, protocol) -> Array
socketpair(domain, type, protocol) -> Array
-
相互に結合されたソケットのペアを含む2要素の配列を返します。 引数の指定は Socket.open と同じです。
- [PARAM] domain:
- Socket.open を参照してください。
- [PARAM] type:
- Socket.open を参照してください。
- [PARAM] protocol:
- Socket.open を参照してください。
[SEE_ALSO] Socket.open
pipe -> [IO]
-
pipe(2) を実行して、相互につながった2つの IO オブジェクトを要素とする配列を返します。
戻り値の配列は最初の要素が読み込み側で、次の要素が書き込み側です。
- [EXCEPTION] Errno::EXXX:
- IO オブジェクトの作成に失敗した場合に発生します。
r, w = IO.pipe p [r, w] # => [#<IO:0x401b90f8>, #<IO:0x401b7718>] Thread.new do w.puts "foo" w.close end p r.gets # => "foo\n"
popen(command, mode = "r") -> IO
popen(command, mode = "r") {|io| ... } -> object
-
command をサブプロセスとして実行し、そのプロセスの標準入出力 との間にパイプラインを確立します。command はシェルを経由して実行されます。 生成したパイプを IO オブジェクトとして返します。
p io = IO.popen("cat", "r+") # => #<IO:0x401b75c8> io.puts "foo" io.close_write p io.gets # => "foo\n"
ブロックが与えられた場合は生成した IO オブジェクトを引数にブ ロックを実行し、その結果を返します。ブロックの実行後、生成したパイ プは自動的にクローズされます。
p IO.popen("cat", "r+") {|io| io.puts "foo" io.close_write io.gets } # => "foo\n"
- [PARAM] command:
- コマンド名を文字列で指定します。
- [PARAM] mode:
- オープンする IO ポートのモードを指定します。mode の詳細は Kernel.#open 参照して下さい。
- [EXCEPTION] Errno::EXXX:
- パイプ、あるいは子プロセスの生成に失敗した場合に発生します。
popen("-", mode = "r") -> IO
popen("-", mode = "r") {|io| ... } -> object
-
第一引数に文字列 "-" が指定された時、fork(2) を 行い子プロセスの標準入出力との間にパイプラインを確立します。 親プロセスでは IO オブジェクトを返し、子プロセスでは nil を返します。
io = IO.popen("-", "r+") if io # parent io.puts "foo" p io.gets # => "child output: foo\n" io.close else # child s = gets print "child output: " + s exit end
ブロックを与えられた場合、親プロセスでは生成した IO オブジェクトを引数に ブロックを実行し、その結果を返します。ブロックの実行後、生成したパイ プは自動的にクローズされます。 子プロセスでは nil を引数にブロックを実行し終了します。
p IO.popen("-", "r+") {|io| if io # parent io.puts "foo" io.gets else # child s = gets puts "child output: " + s end } # => "child output: foo\n"
- [PARAM] mode:
- オープンする IO ポートのモードを指定します。mode の詳細は Kernel.#open 参照して下さい。
- [EXCEPTION] Errno::EXXX:
- パイプ、あるいは子プロセスの生成に失敗した場合に発生します。
read(path, length = nil, offset = 0) -> String | nil
-
path で指定されたファイルを offset 位置から length バイト分読み込んで返します。
既に EOF に達している場合は nil を返します。ただし、length に nil か 0 が指定されている場合は、空文字列 "" を返します。例えば、IO.read(空ファイル) は "" を返します。
Kernel.#open と同様 path の先頭が "|" ならば、"|" に続くコマンドの出力を読み取ります。
- [PARAM] path:
- ファイル名を表す文字列か "|コマンド名" を指定します。
- [PARAM] length:
- 読み込む長さを整数で指定します。nil であるか省略した場合には、EOF まで読み込みます。
- [PARAM] offset:
- 読み込みを始めるオフセットを整数で指定します。
- [EXCEPTION] Errno::EXXX:
- path のオープン、offset 位置への設定、ファイルの読み込みに失敗した場合に発生します。
- [EXCEPTION] ArgumentError:
- length が負の場合に発生します。
例:
IO.read(empty_file) #=> "" IO.read(empty_file, 1) #=> nil IO.read(one_byte_file, 0, 10) #=> "" IO.read(one_byte_file, nil, 10) #=> "" IO.read(one_byte_file, 1, 10) #=> nil
readlines(path, rs = $/) -> [String]
-
path で指定されたファイルを全て読み込んで、その各行を要素としてもつ配列を返します。
Kernel.#open と同様 path の先頭が "|" ならば、"|" に続くコマンドの出力を読み取ります。
- [PARAM] path:
- ファイル名を表す文字列か "|コマンド名" を指定します。
- [PARAM] rs:
- 行の区切りを文字列で指定します。rs に nil を指定すると行区切りなしとみなします。空文字列 "" を指定すると連続する改行を行の区切りとみなします(パラグラフモード)。
- [EXCEPTION] Errno::EXXX:
- path のオープン、ファイルの読み込みに失敗した場合に発生します。
select(reads, writes = [], excepts = [], timeout = nil) -> [[IO]] | nil
-
select(2) を実行します。
与えられた入力/出力/例外待ちの IO オブジェクトの中から準備ができたものを それぞれ配列にして、配列の配列として返します。 タイムアウトした時には nil を返します。
Kernel.#select と同じです。
- [PARAM] reads:
- 入力待ちする IO オブジェクトの配列を渡します。
- [PARAM] writes:
- 出力待ちする IO オブジェクトの配列を渡します。
- [PARAM] excepts:
- 例外待ちする IO オブジェクトの配列を渡します。
- [PARAM] timeout:
- タイムアウトまでの時間を表す数値または nil を指定します。数値で指定したときの単位は秒です。nil を指定した時には IO がどれかひとつレディ状態になるまで待ち続けます。
- [EXCEPTION] IOError:
- 与えられた IO オブジェクトが閉じられていた時に発生します。
- [EXCEPTION] Errno::EXXX:
- select(2) に失敗した場合に発生します。
rp, wp = IO.pipe mesg = "ping " 100.times{ rs, ws, = IO.select([rp], [wp]) if r = rs[0] ret = r.read(5) print ret case ret when /ping/ mesg = "pong\n" when /pong/ mesg = "ping " end end if w = ws[0] w.write(mesg) end }
sysopen(path, mode = "r", perm = 0666) -> Integer
-
path で指定されるファイルをオープンし、ファイル記述子を返しま す。
IO.for_fd などで IO オブジェクトにしない限り、このメソッ ドでオープンしたファイルをクローズする手段はありません。
- [PARAM] path:
- ファイル名を表す文字列を指定します。
- [PARAM] mode:
- モードを文字列か定数の論理和で指定します。Kernel.#open と同じです。
- [PARAM] perm:
- open(2) の第 3 引数のように、ファイルを生成する場合の ファイルのパーミッションを整数で指定します。Kernel.#open と同じです。
- [EXCEPTION] Errno::EXXX:
- ファイルのオープンに失敗した場合に発生します。
[SEE_ALSO] Kernel.#open
unpack_sockaddr_in(sockaddr) -> Array
-
socket/ソケットアドレス構造体を pack した文字列 を unpack したアドレスを返します。返される値は [port, ipaddr] の配列です。
- [PARAM] sockaddr:
- ソケットアドレス構造体を pack した文字列socket/ソケットアドレス構造体を pack した文字列 を指定します。
例:
require 'socket' p Socket.unpack_sockaddr_in(Socket.sockaddr_in("echo", "localhost")) => [7, "127.0.0.1"] p Socket.unpack_sockaddr_in(Socket.sockaddr_in("echo", "::1")) => [7, "::1"]
unpack_sockaddr_un(sockaddr) -> String
-
socket/ソケットアドレス構造体を pack した文字列 を unpack したソケットパス名を返します。
- [PARAM] sockaddr:
- ソケットアドレス構造体を pack した文字列socket/ソケットアドレス構造体を pack した文字列 を指定します。
例:
require 'socket' p Socket.unpack_sockaddr_un(Socket.sockaddr_un("/tmp/.X11-unix/X0")) => "/tmp/.X11-unix/X0"
インスタンスメソッド
self << object -> self
-
object を出力します。object が文字列でない時にはメソッ ド to_s を用いて文字列に変換します。
以下のような << の連鎖を使うことができます。
STDOUT << 1 << " is a " << Fixnum << "\n"
- [PARAM] object:
- 出力したいオブジェクトを与えます。
- [EXCEPTION] Errno::EXXX:
- 出力に失敗した場合に発生します。
self == other -> bool
-
オブジェクトと other が等しければ真を返します。
このメソッドは各クラスの性質に合わせて再定義すべきです。 多くの場合、オブジェクトの内容が等しければ真を返すように (同値性を判定するように)再定義されることが期待されています。
デフォルトでは equal? と同じオブジェクト の同一性判定になっています。
- [PARAM] other:
- 比較するオブジェクトです。
p("foo" == "bar") #=> false p("foo" == "foo") #=> true p(4 == 4) #=> true p(4 == 4.0) #=> true
[SEE_ALSO] Object#equal?,Object#eql?
self === other -> bool
-
メソッド Object#== の別名です。 case 式で使用されます。このメソッドは case 式での振る舞いを考慮して、 各クラスの性質に合わせて再定義すべきです。
一般的に所属性のチェックを実現するため適宜再定義されます。
when 節の式をレシーバーとして === を呼び出すことに注意してください。
また Enumerable#grep でも使用されます。
- [PARAM] other:
- 比較するオブジェクトです。
age = 12 result = case age when 0 .. 2 "baby" when 3 .. 6 "little child" when 7 .. 12 "child" when 13 .. 18 "youth" else "adult" end puts result #=> "child" def check arg case arg when /ruby(?!\s*on\s*rails)/i "hit! #{arg}" when String "Instance of String class. But don't hit." else "unknown" end end puts check([]) #=> unknown puts check("mash-up in Ruby on Rails") #=> instance of String class. But not hit... puts check("<Ruby's world>") #=> hit! <Ruby's world>
[SEE_ALSO] Object#==, Range#===, Module#===, Enumerable#grep
self =~ other -> false
-
右辺に正規表現オブジェクトを置いた正規表現マッチ obj =~ /RE/ をサポートするためのメソッドです。 常に false を返します。
この定義により、=~ が再定義されたオブジェクトでは正常にマッチを行い、 それ以外のものは false を返すようになります。
- [PARAM] other:
- 任意のオブジェクトです。結果に影響しません。
obj = 'regexp' p(obj =~ /re/) #=> 0 obj = nil p(obj =~ /re/) #=> false
[SEE_ALSO] String#=~
__id__ -> Integer
object_id -> Integer
id -> Integer
-
各オブジェクトに対して一意な整数を返します。あるオブジェクトに対し てどのような整数が割り当てられるかは不定です。
Rubyでは、(Garbage Collectされていない)アクティブなオブジェクト間で 重複しない整数(object_id)が各オブジェクトにひとつずつ割り当てられています。この メソッドはその値を返します。
TrueClass, FalseClass, NilClass, Symbol, Fixnum クラス のインスタンスなど Immutable(変更不可)なオブジェクトの一部は同じ内容ならば必ず同じ object_id になります。
これは、Immutable ならば複数の場所から参照されても`破壊的操作'による問題が発生しないので、 同じ内容のインスタンスを複数生成しないという内部実装が理由です。
Symbol#to_iで得られる整数と object_id は別物です。
id メソッドの再定義に備えて別名 __id__ が用意されて おり、ライブラリでは後者の利用が推奨されます。また __id__ を 再定義すべきではありません。
id は obsolete なので、object_id か __id__ を使用してください。
p "ruby".object_id #=> 22759500 p "ruby".object_id #=> 22759400 p [].object_id #=> 22759360 p [].object_id #=> 22759340 p :ruby.object_id #=> 103538 p :ruby.object_id #=> 103538 p 11.object_id #=> 23 p 11.object_id #=> 23 p true.object_id #=> 2 p true.object_id #=> 2
[SEE_ALSO] Object#equal?,Symbol
send(name, *args) -> object
send(name, *args) { .... } -> object
__send__(name, *args) -> object
__send__(name, *args) { .... } -> object
-
オブジェクトのメソッド name を args を引数に して呼び出し、メソッドの実行結果を返します。
ブロック付きで呼ばれたときはブロックもそのまま引き渡します。
send が再定義された場合に備えて別名 __send__ も 用意されており、ライブラリではこちらを使うべきです。また __send__ は再定義すべきではありません。
send, __send__ は、メソッドの呼び出し制限 にかかわらず任意のメソッドを呼び出せます。 クラス/メソッドの定義/呼び出し制限 も参照してください。
- [PARAM] name:
- 文字列かSymbol で指定するメソッド名です。
- [PARAM] args:
- 呼び出すメソッドに渡す引数です。
p -365.send(:abs) #=> 365 p "ruby".send(:sub,/./,"R") #=> "Ruby" class Foo def foo() "foo" end def bar() "bar" end def baz() "baz" end end # 任意のキーとメソッド(の名前)の関係をハッシュに保持しておく # レシーバの情報がここにはないことに注意 methods = {1 => :foo, 2 => :bar, 3 => :baz} # キーを使って関連するメソッドを呼び出す # レシーバは任意(Foo クラスのインスタンスである必要もない) p Foo.new.send(methods[1]) # => "foo" p Foo.new.send(methods[2]) # => "bar" p Foo.new.send(methods[3]) # => "baz"
[SEE_ALSO] Object#method, Kernel.#eval, Proc, Method
_dump(limit) -> String
-
Marshal.#dump において出力するオブジェクトがメソッド _dump を定義している場合には、そのメソッドの結果が書き出されます。
バージョン1.8.0以降ではObject#marshal_dump, Object#marshal_loadの使用 が推奨されます。 Marshal.dump するオブジェクトが _dump と marshal_dump の両方の メソッドを持つ場合は marshal_dump が優先されます。
メソッド _dump は引数として再帰を制限するレベル limit を受 け取り、オブジェクトを文字列化したものを返します。
インスタンスがメソッド _dump を持つクラスは必ず同じフォー マットを読み戻すクラスメソッド _load を定義する必要があり ます。_load はオブジェクトを表現した文字列を受け取り、それ をオブジェクトに戻したものを返す必要があります。
- [PARAM] limit:
- 再帰の制限レベルを表す整数です。
- [RETURN]
- オブジェクトを文字列化したものを返すように定義すべきです。
class Foo def initialize(arg) @foo = arg end def _dump(limit) Marshal.dump(@foo, limit) end def self._load(obj) p obj Foo.new(Marshal.load(obj)) end end foo = Foo.new(['foo', 'bar']) p foo #=> #<Foo:0xbaf234 @foo=["foo", "bar"]> dms = Marshal.dump(foo) p dms #=> "\004\bu:\bFoo\023\004\b[\a\"\bfoo\"\bbar" result = Marshal.load(dms) #=> "\004\b[\a\"\bfoo\"\bbar" # self._load の引数 p result #=> #<Foo:0xbaf07c @foo=["foo", "bar"]>
インスタンス変数の情報は普通マーシャルデータに含まれるので、上例 のように _dump を定義する必要はありません(ただし _dump を定義すると インスタンス変数の情報は dump されなくなります)。 _dump/_load はより高度な制御を行いたい場合や拡張ライブラリで定義し たクラスのインスタンスがインスタンス変数以外に情報を保持する場合に 利用します。(例えば、クラス Time は、_dump/_load を定義して います)
[SEE_ALSO] Object#marshal_dump,Object#marshal_load
accept -> Array
-
新しい接続を受け付けて、新しい接続に対するソケットとアドレスの ペアを返します。accept(2) を参照。
たとえば IPv4 の TCP サーバソケットを生成し、accept でクライアントからの接続を受け付けるには以下のようにします。
例:
serv = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0) sockaddr = Socket.sockaddr_in(8080, "0.0.0.0") serv.bind(sockaddr) serv.listen(5) sock = serv.accept
accept_nonblock -> Array
-
ソケットをノンブロッキングモードに設定した後、 accept(2) を呼び出します。
引数、返り値は Socket#accept と同じです。
accept(2) がエラーになった場合、 EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。
all? -> bool
all? {|item| ... } -> bool
-
すべての要素が真である場合に true を返します。 偽である要素があれば、ただちに false を返します。
ブロックを伴う場合は、各要素に対してブロックを評価し、すべての結果 が真である場合に true を返します。ブロックが偽を返した時点で、 ただちに false を返します。
例:
# すべて正の数か? p [5, 6, 7].all? {|v| v > 0 } # => true p [5, -1, 7].all? {|v| v > 0 } # => false
any? -> bool
any? {|item| ... } -> bool
-
すべての要素が偽である場合に false を返します。 真である要素があれば、ただちに true を返します。
ブロックを伴う場合は、各要素に対してブロックを評価し、すべての結果 が偽である場合に false を返します。ブロックが真を返した時点 で、ただちに true を返します。
例:
p [1, 2, 3].any? {|v| v > 3 } # => false p [1, 2, 3].any? {|v| v > 1 } # => true
bind(my_sockaddr) -> 0
-
ソケットを my_sockaddr に結合します。bind(2) と同じ働きをします。
- [PARAM] my_sockaddr:
- ソケットアドレス構造体を pack した文字列socket/ソケットアドレス構造体を pack した文字列 を指定します。
- [RETURN]
- 0 を返します。
binmode -> self
-
ストリームをバイナリモードにします。MSDOS などバイナリモードの存在 する OS でのみ有効です。そうでない場合このメソッドは何もしません。
バイナリモードから通常のモードに戻す方法は再オープンしかありません。
- [EXCEPTION] Errno::EXXX:
- モードの変更に失敗した場合に発生します。
bytes -> Enumerable::Enumerator
-
自身を 1 バイトずつ整数としてイテレートするような Enumerable::Enumerator オブジェクトを生成して返します。
"hello".bytes.to_a #=> [104, 101, 108, 108, 111]
each_char {|c| ... } -> self
chars {|c| ... } -> self
each_char -> Enumerable::Enumerator
chars -> Enumerable::Enumerator
-
self に含まれる文字を一文字つつブロックに渡して評価します。
self は読み込み用にオープンされていなければなりません。
また、マルチバイト文字列を使用する場合は $KCODE を適切に設定してください。
ブロックを省略した場合は各文字について繰り返す Enumerable::Enumerator を返します。
- [EXCEPTION] IOError:
- self が読み込み用にオープンされていない場合に発生します。
f = File.new("testfile") f.each_char {|c| print c, ' ' } #=> #<File:testfile>
class -> Class
type -> Class
-
レシーバのクラスを返します。
p "ruby".class #=> String p 999999999999999.class #=> Bignum p ARGV.class #=> Array p self.class #=> Object p Class.class #=> Class p Kernel.class #=> Module
[SEE_ALSO] Class#superclass,Object#kind_of?,Object#instance_of?
clone -> IO
dup -> IO
-
レシーバと同じ IO を参照する新しい IO オブジェクトを返します。 参照しているファイル記述子は dup(2) されます。
clone の際に self は一旦 IO#flush されます。 フリーズした IO の clone は同様にフリーズされた IO を返しますが、 dup は内容の等しいフリーズされていない IO を返します。
- [EXCEPTION] IOError:
- 既に close されていた場合に発生します。
clone -> object
dup -> object
-
オブジェクトの複製を作成して返します。
dup はオブジェクトの内容, taint 情報をコピーし、 clone はそれに加えて freeze, 特異メソッドなどの情報も含めた完全な複製を作成します。
clone や dup は浅い(shallow)コピーであることに注意してください。後述。
- [EXCEPTION] TypeError:
- TrueClass, FalseClass, NilClass, Symbol, そして Numeric クラスのインスタンスなど一部の オブジェクトを複製しようとすると発生します。
obj = "string" obj.taint def obj.fuga end obj.freeze p(obj.equal?(obj)) #=> true p(obj == obj) #=> true p(obj.tainted?) #=> true p(obj.frozen?) #=> true p(obj.respond_to?(:fuga)) #=> true obj_c = obj.clone p(obj.equal?(obj_c)) #=> false p(obj == obj_c) #=> true p(obj_c.tainted?) #=> true p(obj_c.frozen?) #=> true p(obj_c.respond_to?(:fuga)) #=> true obj_d = obj.dup p(obj.equal?(obj_d)) #=> false p(obj == obj_d) #=> true p(obj_d.tainted?) #=> true p(obj_d.frozen?) #=> false p(obj_d.respond_to?(:fuga)) #=> false
[SEE_ALSO] Object#initialize_copy
深いコピーと浅いコピー
clone や dup はオブジェクト自身を複製するだけで、オブジェクトの指し ている先(たとえば配列の要素など)までは複製しません。これを浅いコピー(shallow copy)といいます。
深い(deep)コピーが必要な場合には、 Marshalモジュールを利用して
Marshal.load(Marshal.dump(obj))
このように複製を作成する方法があります。ただしMarshal出来ないオブジェクトが 含まれている場合には使えません。
obj = ["a","b","c"] obj_d = obj.dup obj_d[0] << "PLUS" p obj #=> ["aPLUS", "b", "c"] p obj_d #=> ["aPLUS", "b", "c"] obj_m = Marshal.load(Marshal.dump(obj)) obj_m[1] << "PLUS" p obj #=> ["aPLUS", "b", "c"] p obj_m #=> ["aPLUS", "bPLUS", "c"]
close -> nil
-
入出力ポートをクローズします。
以後このポートに対して入出力を行うと例外 IOError が発生しま す。ガーベージコレクトの際にはクローズされていない IO ポートはクロー ズされます。 self がパイプでプロセスにつながっていれば、そのプロセスの終 了を待ち合わせます。
- [EXCEPTION] Errno::EXXX:
- close に失敗した場合に発生します。
- [EXCEPTION] IOError:
- 既に close されていた場合に発生します。
close_read -> nil
-
読み込み用の IO を close します。主にパイプや読み書き両用に作成し た IO オブジェクトで使用します。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- close に失敗した場合に発生します。
close_write -> nil
-
書き込み用の IO を close します。
- [EXCEPTION] IOError:
- 自身が書き込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- close に失敗した場合に発生します。
closed? -> bool
-
ポートがクローズされている時に真を返します。
collect {|item| ... } -> [object]
map {|item| ... } -> [object]
-
各要素に対してブロックを評価した結果を全て含む配列を返します。
ブロックを省略した場合、 obj.collect {|item| item } を実行します。 これは Enumerable#to_a と同じです。
例:
# すべて 3 倍にする p [1, 2, 3].map {|n| n * 3 } # => [3, 6, 9]
connect(server_sockaddr) -> 0
-
connect(2) でソケットを接続します。
server_sockaddr は、 socket/ソケットアドレス構造体を pack した文字列 です。
0 を返します。
- [PARAM] server_sockaddr:
- 接続先アドレス
- [EXCEPTION] Errno::EXXX:
- connect(2) がエラーを報告した場合に発生します。詳しくは man を参照してください。
たとえば IPv4 の TCP ソケットを生成し、connect で www.ruby-lang.org:80 に接続するには以下のようにします。
例:
s = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0) sockaddr = Socket.sockaddr_in(80, "www.ruby-lang.org") s.connect(sockaddr) s.write "GET / HTTP/1.0\r\n\r\n" print s.read
connect_nonblock(server_sockaddr) -> 0
-
ソケットをノンブロッキングモードに設定した後、 connect(2) を呼び出します。
引数、返り値は Socket#connect と同じです。
- [PARAM] server_sockaddr:
- 接続先アドレス
- [EXCEPTION] Errno::EXXX:
- connect(2) がエラーを報告した場合に発生します。詳しくは man を参照してください。
count -> Integer
count(item) -> Integer
count {|obj| ... } -> Integer
-
レシーバの要素数を返します。
引数を指定しない場合は、レシーバの要素数を返します。 このとき、レシーバが size メソッドを持っていればそちらを使用します。 レシーバが size メソッドを持っていない場合は、要素数を一つずつカウントします。
引数を一つ指定した場合は、レシーバの要素のうち引数に一致するものの 個数をカウントして返します(一致は == で判定します)。
ブロックを指定した場合は、ブロックを評価して真になった要素の個数を カウントして返します。
- [PARAM] item:
- カウント対象となる値。
例:
ary = [1, 2, 4, 2] ary.count # => 4 ary.count(2) # => 2 ary.count{|x|x%2==0} # => 3
cycle(n=nil) -> Enumerable::Enumerator
cycle(n=nil) {|obj| ... } -> object | nil
-
Enumerable オブジェクトの各要素を n 回 or 無限回(n=nil)繰り返し ブロックを呼びだします。
n に 0 もしくは負の値を渡した場合は何もしません。 繰り返しが最後まで終了した場合(つまりbreakなどで中断しなかった場合) は nil を返します。 このメソッドは内部の配列に各要素を保存しておくため、 一度 Enumerable の終端に到達した後に自分自身を変更しても このメソッドの動作に影響を与えません。
a = ["a", "b", "c"] a.cycle {|x| puts x } # print, a, b, c, a, b, c,.. forever. a.cycle(2) {|x| puts x } # print, a, b, c, a, b, c.
- [RETURN]
- ブロックを指定しなかった場合は、Enumerable::Enumerator を返します。 レシーバが空の場合は nil を返します。
find(ifnone = nil) -> Enumerable::Enumerator
detect(ifnone = nil) -> Enumerable::Enumerator
find(ifnone = nil) {|item| ... } -> object
detect(ifnone = nil) {|item| ... } -> object
-
要素に対してブロックを評価した値が真になった最初の要素を返します。
真になる要素が見つからず、ifnone も指定されていないときは nil を返します。 真になる要素が見つからず、ifnone が指定されているときは ifnone を call した結果を返します。
- [PARAM] ifnone:
- call メソッドを持つオブジェクト (例えば Proc) を指定します。
例:
# 最初の 3 の倍数を探す p [1, 2, 3, 4, 5].find {|i| i % 3 == 0 } # => 3 p [2, 2, 2, 2, 2].find {|i| i % 3 == 0 } # => nil # ifnone の使用例 ifnone = proc { raise ArgumentError, "item not found" } p [1, 2, 3, 4, 5].find(ifnone) {|i| i % 7 == 0 } # ArgumentError: item not found
display(out = $stdout) -> nil
-
オブジェクトを out に出力します。
以下のように定義されています。
class Object def display(out = $stdout) out.print self.to_s nil end end
- [PARAM] out:
- 出力先のIOオブジェクトです。指定しない場合は標準出力に出力されます。
- [RETURN]
- nil を返します。
Object.new.display #=> #<Object:0xbb0210>
[SEE_ALSO] $stdout
drop(n) -> Array
-
Enumerable オブジェクトの先頭の n 要素を捨てて、 残りの要素を配列として返します。
- [PARAM] n:
- 捨てる要素数。
a = [1, 2, 3, 4, 5, 0] a.drop(3) # => [4, 5, 0]
drop_while -> Enumerable::Enumerator
drop_while {|element| ... } -> Array
-
ブロックを評価して最初に偽となった要素の手前の要素まで捨て、 残りの要素を配列として返します。
ブロックを指定しなかった場合は、Enumerable::Enumerator を返します。
a = [1, 2, 3, 4, 5, 0] a.drop_while {|i| i < 3 } # => [3, 4, 5, 0]
each(rs = $/) {|line| ... } -> self
each(rs = $/) -> Enumerable::Enumerator
each_line(rs = $/) {|line| ... } -> self
each_line(rs = $/) -> Enumerable::Enumerator
-
IO の現在位置から 1 行ずつ文字列として読み込み、それを引数として 与えられたブロックを実行します。
ブロックが与えられなかった場合は、自身から生成した Enumerable::Enumerator オブジェクトを返します。
- [PARAM] rs:
- 行の区切りを文字列で指定します。rs に nil を指定すると行区切りなしとみなします。 空文字列 "" を指定すると連続する改行を行の区切りとみなします(パラグラフモード)。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
each_byte {|ch| ... } -> self
each_byte -> Enumerable::Enumerator
-
IO の現在位置から 1 バイトずつ読み込み、それを整数として与え、ブロックを実行します。
ブロックが与えられなかった場合は、自身から生成した Enumerable::Enumerator オブジェクトを返します。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
each_cons(n) -> Enumerable::Enumerator
enum_cons(n) -> Enumerable::Enumerator
each_cons(n) {|list| ... } -> nil
enum_cons(n) {|list| ... } -> nil
-
要素を重複ありで n 要素ずつに区切り、 ブロックに渡して繰り返します。
enum_cons は 1.9.1 以降ではなくなっています。 代わりに each_cons を使ってください。
- [PARAM] n:
- ブロックに渡す要素の数です。正の整数を与えます。 要素数より大きな数を与えると、ブロックは一度も実行されません。
例:
(1..10).each_cons(3){|v| p v } # => [1, 2, 3] # [2, 3, 4] # [3, 4, 5] # [4, 5, 6] # [5, 6, 7] # [6, 7, 8] # [7, 8, 9] # [8, 9, 10]
[SEE_ALSO] Enumerable#each_slice
each_slice(n) -> Enumerable::Enumerator
enum_slice(n) -> Enumerable::Enumerator
each_slice(n) {|list| ... } -> nil
enum_slice(n) {|list| ... } -> nil
-
n 要素ずつブロックに渡して繰り返します。
要素数が n で割り切れないときは、最後の回だけ要素数が減ります。
enum_slice は 1.9.1 以降ではなくなっています。 代わりに each_slice を使ってください。
- [PARAM] n:
- 区切る要素数を示す整数です。
例:
(1..10).each_slice(3) {|a| p a} # => [1, 2, 3] # [4, 5, 6] # [7, 8, 9] # [10]
[SEE_ALSO] Enumerable#each_cons
each_with_index -> Enumerable::Enumerator
enum_with_index -> Enumerable::Enumerator
each_with_index {|item, index| ... } -> self
-
要素とそのインデックスをブロックに渡して繰り返します。
self を返します。
例:
[5, 10, 15].each_with_index do |n, idx| p [n, idx] end # => [5, 0] # [10, 1] # [15, 2]
to_a -> [object]
entries -> [object]
-
全ての要素を含む配列を返します。
to_enum(method = :each, *args) -> Enumerable::Enumerator
enum_for(method = :each, *args) -> Enumerable::Enumerator
-
Enumerable::Enumerator.new(self, method, *args) を返します。
- [PARAM] method:
- メソッド名の文字列かシンボルです。
- [PARAM] args:
- 呼び出すメソッドに渡される引数です。
- [EXCEPTION] NameError:
- 存在しないメソッド名を指定すると発生します。
str = "xyz" enum = str.enum_for(:each_byte) p(a = enum.map{|b| '%02x' % b }) #=> ["78", "79", "7a"] # protects an array from being modified a = [1, 2, 3] p(a.to_enum) #=> #<Enumerable::Enumerator:0xbaf7ac>
[SEE_ALSO] Enumerable::Enumerator
eof -> bool
eof? -> bool
-
ストリームがファイルの終端に達した場合、true を返します。そうでない場合、false を返します。
f = File.new("testfile") dummy = f.readlines f.eof #=> true
自身がパイプやソケットなどのストリームであった場合、相手がデータを送るか close するまでブロックします。
r, w = IO.pipe Thread.new { sleep 10; w.close } r.eof? #=> 10秒ブロックしてから true を返す。 r, w = IO.pipe Thread.new { sleep 10; w.puts "a" } r.eof? #=> 10秒ブロックしてから false を返す。 r, w = IO.pipe r.eof? # 永久にブロックします。
eof, eof? は入力バッファにデータを読み込むので、IO#sysread と同時に使うと正常に 動作しません。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
eql?(other) -> bool
-
オブジェクトと other が等しければ真を返します。Hash で二つのキー が等しいかどうかを判定するのに使われます。
このメソッドは各クラスの性質に合わせて再定義すべきです。 多くの場合、 == と同様に同値性の判定をするように再定義されていますが、 適切にキー判定ができるようにより厳しくなっている場合もあります。
デフォルトでは equal? と同じオブジェクト の同一性判定になっています。
このメソッドを再定義した時には Object#hash メソッ ドも再定義しなければなりません。
- [PARAM] other:
- 比較するオブジェクトです。
p("foo".eql?("bar")) #=> false p("foo".eql?("foo")) #=> true p(4.eql?(4)) #=> true p(4.eql?(4.0)) #=> false
[SEE_ALSO] Object#hash,Object#equal?,Object#==
equal?(other) -> bool
-
other が self 自身の時、真を返します。
二つのオブジェクトが同一のものかどうか調べる時に使用します。 このメソッドを再定義してはいけません。
お互いのObject#object_idが一致する かどうかを調べます。
- [PARAM] other:
- 比較するオブジェクトです。
p("foo".equal?("bar")) #=> false p("foo".equal?("foo")) #=> false p(4.equal?(4)) #=> true p(4.equal?(4.0)) #=> false p(:foo.equal? :foo) #=> true
[SEE_ALSO] Object#object_id,Object#==,Object#eql?,Symbol
extend(*modules) -> self
-
引数で指定したモジュールのインスタンスメソッドを self の特異 メソッドとして追加します。
Module#include は、クラス(のインスタンス)に機能を追加します が、extend は、ある特定のオブジェクトだけにモジュールの機能を追加 したいときに使用します。
引数に複数のモジュールを指定した場合、最後 の引数から逆順に extend を行います。
- [PARAM] modules:
- モジュールを任意個指定します(クラスは不可)。
- [RETURN]
- self を返します。
module Foo def a 'ok Foo' end end module Bar def b 'ok Bar' end end obj = Object.new obj.extend Foo, Bar p obj.a #=> "ok Foo" p obj.b #=> "ok Bar" class Klass include Foo extend Bar end p Klass.new.a #=> "ok Foo" p Klass.b #=> "ok Bar"
extend の機能は、「特異クラスに対する Module#include」 と言い替えることもできます。 ただしその場合、フック用のメソッド が Module#extended ではなく Module#included になるという違いがあります。
# obj.extend Foo, Bar とほぼ同じ class << obj include Foo, Bar end
[SEE_ALSO] Module#extend_object,Module#include,Module#extended
fcntl(cmd, arg = 0) -> Integer
-
IOに対してシステムコール fcntl を実行します。 機能の詳細は fcntl(2) を参照してください。 fcntl(2) が返した整数を返します。
- [PARAM] cmd:
- IO に対するコマンドを、添付ライブラリ fcntl が提供している定数で指定します。
- [PARAM] arg:
- cmd に対する引数を整数、文字列、booleanのいずれかで指定します。 整数の時にはその値を fcntl(2) に渡します。 文字列の場合には Array#pack した構造体だとみなして渡します。 arg が nil か false の場合には 0を、true の場合には 1 を渡します。
- [EXCEPTION] Errno::EXXX:
- fcntl の実行に失敗した場合に発生します。
- [EXCEPTION] IOError:
- 既に close されている場合に発生します。
fileno -> Integer
to_i -> Integer
-
ファイル記述子を表す整数を返します。
- [EXCEPTION] IOError:
- 既に close されている場合に発生します。
find_all -> Enumerable::Enumerator
select -> Enumerable::Enumerator
find_all {|item| ... } -> [object]
select {|item| ... } -> [object]
-
各要素に対してブロックを評価した値が真であった要素を全て含む配列を 返します。真になる要素がひとつもなかった場合は空の配列を返します。
find_index -> Enumerable::Enumerator
find_index {|obj| ... } -> Integer | nil
-
要素を先頭から順にブロックに渡して評価し、最初に真になった要素のインデックスを返します。 一つも真にならなければ nil を返します。
(1..10).find_index {|i| i % 5 == 0 and i % 7 == 0 } #=> nil (1..100).find_index {|i| i % 5 == 0 and i % 7 == 0 } #=> 34
ブロックを指定しなかった場合は、Enumerable::Enumerator を返します。
first -> object | nil
first(n) -> Array
-
Enumerable オブジェクトの最初の要素、もしくは最初の n 要素を返します。
Enumerable オブジェクトが空の場合、引数を指定しない形式では nil を返します。 引数を指定する形式では、空の配列を返します。
- [PARAM] n:
- 取得する要素数。
e = "abcd".each_byte e.first #=> 97 e.first(2) #=> [97,98] e = "".each_byte e.first #=> nil e.first(2) #=> []
flush -> self
-
IO ポートの内部バッファをフラッシュします。
- [EXCEPTION] IOError:
- 自身が書き込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- fflush(3) が失敗した場合に発生します。
freeze -> self
-
オブジェクトを凍結(内容の変更を禁止)します。
凍結されたオブジェクトの変更は 例外 TypeError を発生させます。 いったん凍結されたオブジェクトを元に戻す方法はありません。
凍結されるのはオブジェクトであり、変数ではありません。代入などで変数の指す オブジェクトが変化してしまうことは freeze では防げません。 freeze が防ぐのは、 `破壊的な操作' と呼ばれるもの一般です。変数への参照自体を凍結したい 場合は、グローバル変数なら Kernel.#trace_var が使えます。
- [RETURN]
- self を返します。
a1 = "foo".freeze a1 = "bar" p a1 #=> "bar" a2 = "foo".freeze a2.replace("bar")# can't modify frozen string (TypeError)
凍結を解除することはできませんが、Object#dup を使えばほぼ同じ内容の凍結されていない オブジェクトを得ることはできます。
a = [1].freeze p a.frozen? #=> true a[0] = "foo" p a # can't modify frozen array (TypeError) b = a.dup p b #=> [1] p b.frozen? #=> false b[0] = "foo" p b #=> ["foo"]
[SEE_ALSO] Object#frozen?,Object#dup,Kernel.#trace_var
frozen? -> bool
-
オブジェクトが凍結(内容の変更を禁止)されているときに真を返します。
obj = "someone" p obj.frozen? #=> false obj.freeze p obj.frozen? #=> true
[SEE_ALSO] Object#freeze
fsync -> 0 | nil
-
書き込み用の IO に対して、システムコール fsync(2) を実行します。IO#flush を行ったあと、(OSレベルで)まだディスクに 書き込まれていないメモリ上にあるデータをディスクに書き出します。
成功すれば 0 を返します。 fsync(2) がサポートされていない場合は nil を返します。
- [EXCEPTION] Errno::EXXX:
- 失敗した場合に発生します。
- [EXCEPTION] IOError:
- 既に close されている場合に発生します。
getbyte -> Integer | nil
-
IO から1バイトを読み込み整数として返します。 既に EOF に達していれば nil を返します。
f = File.new("testfile") f.getbyte #=> 84 f.getbyte #=> 104
getc -> Integer | nil
-
IO ポートから 1 文字読み込んで、その文字に対応する Fixnum を 返します。EOF に到達した時には nil を返します。
IO#readchar との違いは EOF での振る舞いのみです。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
f = File.new("testfile") f.getc #=> 84 f.getc #=> 104 f.read f.getc #=> nil
[SEE_ALSO] IO#readchar
getpeername -> String
-
接続の相手先のソケットの情報を取得します。sockaddr 構造体をパッ クした文字列を返します。getpeername(2) を参照してください。
例:
serv = TCPServer.open("", 0) c = TCPSocket.open(*Socket.unpack_sockaddr_in(serv.getsockname).reverse) s = serv.accept addr = c.getpeername p addr #=> "\002\000\267\214\177\000\000\001\000\000\000\000\000\000\000\000" p Socket.unpack_sockaddr_in(addr) #=> [46988, "127.0.0.1"] p addr == s.getsockname #=> true
gets(rs = $/) -> String | nil
-
一行読み込んで、読み込みに成功した時にはその文字列を返します。 EOF に到達した時には nil を返します。
読み込んだ文字列を変数 $_ にセットします。 IO#readline との違いは EOF での振る舞いのみです。
- [PARAM] rs:
- 行の区切りを文字列で指定します。rs に nil を指定すると行区切りなしとみなします。 空文字列 "" を指定すると連続する改行を行の区切りとみなします(パラグラフモード)。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
f = File.new("oneline_file") f.gets #=> "This is line one\n" $_ #=> "This is line one\n" f.gets #=> nil $_ #=> nil
[SEE_ALSO] $/, IO#readline
getsockname -> String
-
ソケットの情報を取得します。sockaddr 構造体をパックした 文字列を返します。getsockname(2) を参照してください。
例:
serv = TCPServer.open("", 0) p serv.getsockname #=> "\002\000\236C\000\000\000\000\000\000\000\000\000\000\000\000" p Socket.unpack_sockaddr_in(serv.getsockname) #=> [40515, "0.0.0.0"] c = TCPSocket.open(*Socket.unpack_sockaddr_in(serv.getsockname).reverse) s = serv.accept
getsockopt(level, optname) -> String
-
ソケットのオプションを取得します。getsockopt(2) を参照してください。 取得したオプションのデータをパックした文字列を 返します。
- [PARAM] level:
- getsockopt(2) の 第二引数のlevel
- [PARAM] optname:
- getsockopt(2) の 第三引数のoption_name
[SEE_ALSO] BasicSocket#setsockopt
例:
serv = TCPServer.open("", 0) c = TCPSocket.open(*Socket.unpack_sockaddr_in(serv.getsockname).reverse) s = serv.accept opt = c.getsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY) p opt #=> "\000\000\000\000" p opt.unpack("i")[0] #=> 0 (Nagle アルゴリズム有効)
grep(pattern) -> [object]
grep(pattern) {|item| ... } -> [object]
-
pattern === item が成立する要素を全て含んだ配列を返します。
ブロックとともに呼び出された時には条件の成立した要素に対して それぞれブロックを評価し、その結果の配列を返します。 マッチする要素がひとつもなかった場合は空の配列を返します。
- [PARAM] pattern:
- 「===」メソッドを持つオブジェクトを指定します。
例:
['aa', 'bb', 'cc', 'dd', 'ee'].grep(/[bc]/) # => ["bb", "cc"] Array.instance_methods.grep(/gr/) # => ["group_by", "grep"]
group_by -> Enumerable::Enumerator
group_by {|obj| ... } -> Hash
-
ブロックを評価した結果をキー、対応する要素の配列を値とするハッシュを返します。
(1..6).group_by {|i| i%3} #=> {0=>[3, 6], 1=>[1, 4], 2=>[2, 5]}
hash -> Fixnum
-
オブジェクトのハッシュ値を返します。Hash クラスでオブジェク トを格納するのに用いられています。
メソッド hash は Object#eql? と組み合わせて Hash クラスで利用されます。その際
A.eql?(B) ならば A.hash == B.hash
の関係を必ず満たしていなければいけません。eql? を再定義した時には必ずこちらも合わせ て再定義してください。
デフォルトでは、Object#object_id と同じ値を返します。 ただし、Fixnum, Symbol, String だけは組込みのハッ シュ関数が使用されます(これを変えることはできません)。
hash を再定義する場合は、一様に分布する任意の整数を返すようにします。
- [RETURN]
- ハッシュ値を返します。Fixnumに収まらない場合は切り捨てられます。
p self.hash #=> 21658870 p 0.hash #=> 1 p 0.0.hash #=> 0 p nil.hash #=> 4 p "ruby".hash #=> -241670986 p "ruby".hash #=> -241670986 p :ruby.hash #=> 103538 p :ruby.hash #=> 103538
[SEE_ALSO] Object#eql?,Object#__id__
member?(val) -> bool
include?(val) -> bool
-
val と == の関係にある要素を含むとき真を返します。
- [PARAM] val:
- 任意のオブジェクト
inject(init = self.first) {|result, item| ... } -> object
inject(sym) -> object
inject(init, sym) -> object
reduce(init = self.first) {|result, item| ... } -> object
reduce(sym) -> object
reduce(init, sym) -> object
-
リストのたたみこみ演算を行います。
最初に初期値 init と self の最初の要素を引数にブロックを実行します。 2 回目以降のループでは、前のブロックの実行結果と self の次の要素を引数に順次ブロックを実行します。 そうして最後の要素まで繰り返し、最後のブロックの実行結果を返します。
要素が存在しない場合は init を返します。
初期値 init を省略した場合は、 最初に先頭の要素と 2 番目の要素をブロックに渡します。 また要素が 1 つしかなければブロックを実行せずに最初の要素を返します。 要素がなければブロックを実行せずに nil を返します。
- [PARAM] init:
- 最初の result の値です。任意のオブジェクトが渡せます。
- [PARAM] sym:
- ブロックの代わりに使われるメソッド名を表す Symbol オブジェクトを指定します。 実行結果に対して sym という名前のメソッドが呼ばれます。
例:
# 合計を計算する。 p [2, 3, 4, 5].inject {|result, item| result + item } #=> 14 # 自乗和を計算する。初期値をセットする必要がある。 p [2, 3, 4, 5].inject(0) {|result, item| result + item**2 } #=> 54
この式は以下のように書いても同じ結果が得られます。
result = 0 [1, 2, 3, 4, 5].each {|v| result += v } p result # => 15 p [1, 2, 3, 4, 5].inject(:+) #=> 15 p ["b", "c", "d"].inject("abbccddde", :squeeze) #=> "abcde"
inspect -> String
-
オブジェクトを人間が読める形式に変換した文字列を返します。
組み込み関数 Kernel.#p は、このメソッドの結果を使用して オブジェクトを表示します。
puts Class.new.inspect #=> #<Class:0xbafd88> puts Time.now.inspect #=> 2007-10-15 21:01:37 +0900
[SEE_ALSO] Kernel.#p
instance_eval(expr, filename = "(eval)", lineno = 1) -> object
instance_eval {|obj| ... } -> object
-
オブジェクトのコンテキストで文字列 expr またはオブジェクト自身をブロックパラメータとするブロックを 評価してその結果を返します。
オブジェクトのコンテキストで評価するとは評価中の self をそのオブジェクトにして実行するということです。 また、文字列 expr やブロック中でメソッドを定義すればそのオブジェクトの特異メソッドが定義されます。
ただし、ローカル変数だけは、文字列 expr の評価では instance_eval の外側のスコープと、ブロックの評価ではそのブロックの外側のスコープと、共有します。
メソッド定義の中で instance_eval でメソッドを定義した場合は、囲むメソッドが実行されたときに 初めて instance_eval 内のメソッドが定義されます。これはメソッド定義のネストと同じです。 クラス/メソッドの定義/メソッド定義のネスト を参照してください。
- [PARAM] expr:
- 評価する文字列です。
- [PARAM] filename:
- 文字列を指定します。ファイル filename に文字列 expr が 書かれているかのように実行されます。スタックトレースの 表示などを差し替えることができます。
- [PARAM] lineno:
- 文字列を指定します。行番号 lineno から文字列 expr が書かれているかのように実行されます。 スタックトレースの表示などを差し替えることができます。
例:
class Foo def initialize data @key = data end private def do_fuga p 'secret' end end some = Foo.new 'XXX' some.instance_eval{p @key} #=> "XXX" some.instance_eval{do_fuga } #=> "secret" # private メソッドも呼び出せる some.instance_eval 'raise' # ..:10: (eval):1: (RuntimeError) messg = 'unknown' some.instance_eval 'raise messg','file.rb',999 # file.rb:999: unknown (RuntimeError)
[SEE_ALSO] Module#module_eval, Kernel.#eval
instance_exec(*args) {|*vars| ... } -> object
-
与えられたブロックをレシーバのコンテキストで実行します。
ブロック実行中は、 self がレシーバのコンテキストになるので レシーバの持つインスタンス変数にアクセスすることができます。
- [PARAM] args:
- ブロックパラメータに渡す値です。
class KlassWithSecret def initialize @secret = 99 end end k = KlassWithSecret.new # 以下で x には 5 が渡される k.instance_exec(5) {|x| @secret + x } #=> 104
[SEE_ALSO] Module#class_exec, Module#module_exec, Object#instance_eval
instance_of?(klass) -> bool
-
オブジェクトがクラス klass の直接のインスタンスである時真を返します。
obj.instance_of?(c) が成立する時には、常に obj.kind_of?(c) も成立します。
- [PARAM] klass:
- Classかそのサブクラスのインスタンスです。
class C < Object end class S < C end obj = S.new p obj.instance_of?(S) # true p obj.instance_of?(C) # false
[SEE_ALSO] Object#kind_of?,Object#class
instance_variable_defined?(var) -> bool
-
インスタンス変数 var が定義されていたら真を返します。
- [PARAM] var:
- インスタンス変数名を文字列か Symbol で指定します。
class Fred def initialize(p1, p2) @a, @b = p1, p2 end end fred = Fred.new('cat', 99) p fred.instance_variable_defined?(:@a) #=> true p fred.instance_variable_defined?("@b") #=> true p fred.instance_variable_defined?("@c") #=> false
[SEE_ALSO] Object#instance_variable_get,Object#instance_variable_set,Object#instance_variables
instance_variable_get(var) -> object|nil
-
オブジェクトのインスタンス変数の値を取得して返します。
インスタンス変数が定義されていなければ nil を返します。
- [PARAM] var:
- インスタンス変数名を文字列か Symbol で指定します。
class Foo def initialize @foo = 1 end end obj = Foo.new p obj.instance_variable_get("@foo") #=> 1 p obj.instance_variable_get(:@foo) #=> 1 p obj.instance_variable_get(:@bar) #=> nil
[SEE_ALSO] Object#instance_variable_set,Object#instance_variables,Object#instance_variable_defined?
instance_variable_set(var, value) -> object
-
オブジェクトのインスタンス変数 var に値 value を設定します。
インスタンス変数が定義されていなければ新たに定義されます。
- [PARAM] var:
- インスタンス変数名を文字列か Symbol で指定します。
- [PARAM] value:
- 設定する値です。
- [RETURN]
- value を返します。
obj = Object.new p obj.instance_variable_set("@foo", 1) #=> 1 p obj.instance_variable_set(:@foo, 2) #=> 2 p obj.instance_variable_get(:@foo) #=> 2
[SEE_ALSO] Object#instance_variable_get,Object#instance_variables,Object#instance_variable_defined?
instance_variables -> [String]
-
オブジェクトのインスタンス変数名を文字列の配列として返します。
obj = Object.new obj.instance_eval { @foo, @bar = nil } p obj.instance_variables #=> ["@foo", "@bar"]
[SEE_ALSO] Object#instance_variable_get,Kernel.#local_variables,Kernel.#global_variables,Module.constants,Module#constants,Module#class_variables
ioctl(cmd, arg = 0) -> Integer
-
IO に対してシステムコール ioctl を実行し、その結果を返します。 機能の詳細は ioctl(2) を参照してください。
- [PARAM] cmd:
- IO に対するコマンドを整数で指定します。どのようなコマンドが使えるかはプラットフォームに依存します。
- [PARAM] arg:
- cmd に対する引数を指定します。整数の時にはその値を ioctl に渡します。 文字列の場合には Array#pack した構造体だとみなして渡します。 arg が nil か false の場合には 0を、true の場合には 1 を渡します。
- [EXCEPTION] IOError:
- 既に close されている場合に発生します。
is_a?(mod) -> bool
kind_of?(mod) -> bool
-
オブジェクトが指定されたクラス mod かそのサブクラスのインスタンスであるとき真を返します。
また、オブジェクトがモジュール mod をインクルードしたクラスかそのサブクラス のインスタンスである場合にも真を返します。 上記のいずれでもない場合に false を返します。
- [PARAM] mod:
- クラスやモジュールなど、Moduleかそのサブクラスのインスタンスです。
module M end class C < Object include M end class S < C end obj = S.new p obj.is_a?(S) # true p obj.is_a?(C) # true p obj.is_a?(Object) # true p obj.is_a?(M) # true p obj.is_a?(Hash) # false
[SEE_ALSO] Object#instance_of?,Module#===,Object#class
isatty -> bool
tty? -> bool
-
入出力ポートがttyに結合している時、真を返します。そうでない場合 false を返します。
- [EXCEPTION] IOError:
- 既に close されている場合に発生します。
lineno -> Integer
-
現在の行番号を整数で返します。実際には IO#gets が呼ばれた回数です。 改行以外のセパレータで gets が呼ばれた場合など、実際の行番号と異なる場合があります。
- [EXCEPTION] IOError:
- 読み込み用にオープンされていなければ発生します。
f = File.new("testfile") f.lineno #=> 0 f.gets #=> "This is line one\n" f.lineno #=> 1 f.gets #=> "This is line two\n" f.lineno #=> 2
[SEE_ALSO] $.
lineno=(number)
-
現在の行番号を number にセットします。 $. は次回の読み込みの時に更新されます。
- [PARAM] number:
- 行番号を整数で指定します。
- [EXCEPTION] IOError:
- 読み込み用にオープンされていなければ発生します。
f = File.new("testfile") f.gets #=> "This is line one\n" $. #=> 1 f.lineno = 1000 f.lineno #=> 1000 $. #=> 1 f.gets #=> "This is line two\n" $. #=> 1001
[SEE_ALSO] $.
lines(rs = $/) -> Enumerable::Enumerator
-
自身を 1 行ずつイテレートするような Enumerable::Enumerator オブジェクトを生成して返します。
テキスト読み込みメソッドとして動作します。
- [PARAM] rs:
- 行の区切りを文字列で指定します。rs に nil を指定すると行区切りなしとみなします。 空文字列 "" を指定すると連続する改行を行の区切りとみなします(パラグラフモード)。
"foo\nbar\n".lines.to_a #=> ["foo\n", "bar\n"] "foo\nb ar".lines.sort #=> ["b ar", "foo\n"]
[SEE_ALSO] $/
listen(backlog) -> 0
-
listen(2) と同じ働きをします。
0 を返します。
- [PARAM] backlog:
- 接続を保留できる最大数
- [RETURN]
- 0 を返します。
marshal_dump -> object
-
Marshal.#dump を制御するメソッドです。
Marshal.dump(some) において、出力するオブジェクト some がメソッド marshal_dump を 持つ場合には、その返り値がダンプされたものが Marshal.dump(some) の返り値となります。
marshal_dump/marshal_load の仕組みは Ruby 1.8.0 から導入されました。 これから書くプログラムでは _dump/_load ではなく marshal_dump/marshal_load を使うべきです。
- [RETURN]
- 任意のオブジェクトで marshal_load の引数に利用できます。
class Foo def initialize(arg) @foo = arg end def marshal_dump @foo end def marshal_load(obj) p obj @foo = obj end end foo = Foo.new(['foo', 'bar']) p foo #=> #<Foo:0xbaf3b0 @foo=["foo", "bar"]> dms = Marshal.dump(foo) p dms #=> "\004\bU:\bFoo[\a\"\bfoo\"\bbar" result = Marshal.load(dms) #=> ["foo", "bar"] # marshal_load の引数 p result #=> #<Foo:0xbaf2ac @foo=["foo", "bar"]>
インスタンス変数の情報は普通マーシャルデータに含まれるので、 上例のように marshal_dump を定義する必要はありません (ただし marshal_dump を定義するとインスタンス変数の情報は ダンプされなくなるので、marshal_dump/marshal_load で扱う必要があります)。 marshal_dump/marshal_load はより高度な制御を行いたい場合や 拡張ライブラリで定義したクラスのインスタンスがインスタンス変数以外 に情報を保持する場合に利用します。
特に、marshal_dump/marshal_load を定義したオブジェクトは 特異メソッドが定義されていてもマーシャルできるようになります (特異メソッドの情報が自動的に dump されるようになるわけではなく、 marshal_dump/marshal_load によりそれを実現する余地があるということです)。
[SEE_ALSO] Object#marshal_load, Marshal
marshal_load(obj) -> object
-
Marshal.#load を制御するメソッドです。
some のダンプ結果(Marshal.dump(some)) をロードする(Marshal.load(Marshal.dump(some)))に は some がメソッド marshal_load を持っていなければなりません。 このとき、marshal_dump の返り値が marshal_load の引数に利用されます。 marshal_load 時の self は、生成されたばかり(Class#allocate されたばかり) の状態です。
marshal_dump/marshal_load の仕組みは Ruby 1.8.0 から導入されました。 これから書くプログラムでは _dump/_load ではなく marshal_dump/marshal_load を使うべきです。
- [PARAM] obj:
- marshal_dump の返り値のコピーです。
- [RETURN]
- 返り値は無視されます。
[SEE_ALSO] Object#marshal_dump, Marshal
max -> object
-
最大の要素を返します。 全要素が互いに <=> メソッドで比較できることを仮定しています。
要素が存在しなければ nil を返します。 該当する要素が複数存在する場合、どの要素を返すかは不定です。
max {|a, b| ... } -> object
-
ブロックの評価結果で各要素の大小判定を行い、最大の要素を返します。 要素が存在しなければ nil を返します。
ブロックの値は、a > b のとき正、 a == b のとき 0、a < b のとき負の整数を、期待しています。
該当する要素が複数存在する場合、どの要素を返すかは不定です。
- [EXCEPTION] TypeError:
- ブロックが整数以外を返したときに発生します。
max_by -> Enumerable::Enumerator
max_by {|item| ... } -> object
-
各要素を順番にブロックに渡して実行し、 その評価結果を <=> で比較して、 最大であった値に対応する元の要素を返します。
要素が存在しないときは nil を返します。 該当する要素が複数存在する場合、どの要素を返すかは不定です。
Enumerable#max と Enumerable#max_by の 違いは Enumerable#sort と Enumerable#sort_by の違いと同じです。
[SEE_ALSO] Enumerable#sort_by
method(name) -> Method
-
オブジェクトのメソッド name をオブジェクト化した Method オブジェクトを返します。
me = -365.method(:abs) p me #=> #<Method: Fixnum#abs> p me.call #=> 365
[SEE_ALSO] Module#instance_method,Method,Object#__send__,Kernel.#eval
method_missing(name, *args) -> object
-
呼びだされたメソッドが定義されていなかった時、Rubyインタプリタがこのメソッド を呼び出します。
呼び出しに失敗したメソッドの名前 (Symbol) が name に その時の引数が第二引数以降に渡されます。
デフォルトではこのメソッドは例外 NameError を発生させます。
- [PARAM] name:
- 未定義メソッドの名前(シンボル)です。
- [PARAM] args:
- 未定義メソッドに渡された引数です。
- [RETURN]
- ユーザー定義の method_missing メソッドの返り値が未定義メソッドの返り値で あるかのように見えます。
class Foo def initialize(data) @data = data end def method_missing(name, lang) if name.to_s =~ /\Afind_(\d+)_in\z/ if @data[lang] p @data[lang][$1.to_i] else raise "#{lang} unknown" end else super end end end dic = Foo.new({:English => %w(zero one two), :Esperanto => %w(nulo unu du)}) dic.find_2_in :Esperanto #=> "du"
methods(include_inherited = true) -> [String]
-
そのオブジェクトに対して呼び出せるメソッド名の一覧を返します。 このメソッドは public メソッドおよび protected メソッドの名前を返します。
ただし特別に、引数が偽の時は Object#singleton_methods(false) と同じになっています。
- [PARAM] include_inherited:
- 引数が偽の時は Object#singleton_methods(false) と同じになります。
#例1: class Parent private; def private_parent() end protected; def protected_parent() end public; def public_parent() end end class Foo < Parent private; def private_foo() end protected; def protected_foo() end public; def public_foo() end end obj = Foo.new class <<obj private; def private_singleton() end protected; def protected_singleton() end public; def public_singleton() end end # あるオブジェクトの応答できるメソッドの一覧を得る。 p obj.methods(false) p obj.public_methods(false) p obj.private_methods(false) p obj.protected_methods(false) #実行結果 ["public_singleton", "protected_singleton"] ["public_foo", "public_singleton"] ["private_foo", "private_singleton"] ["protected_foo", "protected_singleton"] #例2: # あるオブジェクトの応答できるメソッドの一覧を得る。 # 自身のクラスの親クラスのインスタンスメソッドも含めるために true を指定して # いるが、Object のインスタンスメソッドは一覧から排除している。 p obj.methods(true) - Object.instance_methods(true) p obj.public_methods(true) - Object.public_instance_methods(true) p obj.private_methods(true) - Object.private_instance_methods(true) p obj.protected_methods(true) - Object.protected_instance_methods(true) #実行結果 ["public_foo", "public_parent", "protected_singleton", "public_singleton", "protected_foo", "protected_parent"] ["public_foo", "public_parent", "public_singleton"] ["private_singleton", "private_foo", "private_parent"] ["protected_singleton", "protected_foo", "protected_parent"]
[SEE_ALSO] Module#instance_methods,Object#singleton_methods
min -> object
-
最小の要素を返します。 全要素が互いに <=> メソッドで比較できることを仮定しています。
要素が存在しなければ nil を返します。 該当する要素が複数存在する場合、どの要素を返すかは不定です。
min {|a, b| ... } -> object
-
ブロックの評価結果で各要素の大小判定を行い、最小の要素を返します。 要素が存在しなければ nil を返します。
ブロックの値は、a > b のとき正、a == b のとき 0、 a < b のとき負の整数を、期待しています。
該当する要素が複数存在する場合、どの要素を返すかは不定です。
- [EXCEPTION] TypeError:
- ブロックが整数以外を返したときに発生します。
min_by -> Enumerable::Enumerator
min_by {|item| ... } -> object
-
各要素を順番にブロックに渡して評価し、 その評価結果を <=> で比較して、 最小であった値に対応する元の要素を返します。
要素が存在しないときは nil を返します。
該当する要素が複数存在する場合、どの要素を返すかは不定です。
Enumerable#min と Enumerable#min_by の 違いは Enumerable#sort と Enumerable#sort_by の違いと同じです。
[SEE_ALSO] Enumerable#sort_by
minmax -> [object, object]
minmax {|a, b| ... } -> [object, object]
-
Enumerable オブジェクトの各要素のうち最小の要素と最大の要素を 要素とするサイズ 2 の配列を返します。
該当する要素が複数存在する場合、どの要素を返すかは不定です。
一つ目の形式は、Enumerable オブジェクトのすべての要素が Comparable を 実装していることを仮定しています。二つ目の形式では、要素同士の比較を ブロックを用いて行います。
a = %w(albatross dog horse) a.minmax #=> ["albatross", "horse"] a.minmax{|a,b| a.length <=> b.length } #=> ["dog", "albatross"] [].minmax # => [nil, nil]
[SEE_ALSO] Enumerable#sort
minmax_by -> Enumerable::Enumerator
minmax_by {|obj| ... } -> [object, object]
-
Enumerable オブジェクトの各要素をブロックに渡して評価し、その結果を <=> で比較して 最小の要素と最大の要素を要素とするサイズ 2 の配列を返します。
該当する要素が複数存在する場合、どの要素を返すかは不定です。
Enumerable#minmax と Enumerable#minmax_by の 違いは sort と sort_by の違いと同じです。 詳細は Enumerable#sort_by を参照してください。
a = %w(albatross dog horse) a.minmax_by {|x| x.length } #=> ["dog", "albatross"] [].minmax_by{} # => [nil, nil]
[SEE_ALSO] Enumerable#sort_by
nil? -> bool
-
レシーバが nil であれば真を返します。
p false.nil? #=> false p nil.nil? #=> true
[SEE_ALSO] NilClass
none? -> bool
none? {|obj| ... } -> bool
-
ブロックを指定しない場合は、 Enumerable オブジェクトのすべての 要素が偽であれば真を返します。そうでなければ偽を返します。
ブロックを指定した場合は、Enumerable オブジェクトのすべての要素を ブロックで評価した結果が、すべて偽であれば真を返します。 そうでなければ偽を返します。
%w{ant bear cat}.none? {|word| word.length == 5} #=> true %w{ant bear cat}.none? {|word| word.length >= 4} #=> false [].none? #=> true [nil].none? #=> true [nil,false].none? #=> true
one? -> bool
one? {|obj| ... } -> bool
-
ブロックを指定しない場合は、 Enumerable オブジェクトの要素のうち ちょうど一つだけが真であれば、真を返します。 そうでなければ偽を返します。
ブロックを指定した場合は、Enumerable オブジェクトの要素を ブロックで評価した結果、一つの要素だけが真であれば真を返します。 そうでなければ偽を返します。
%w{ant bear cat}.one? {|word| word.length == 4} #=> true %w{ant bear cat}.one? {|word| word.length >= 4} #=> false [ nil, true, 99 ].one? #=> false [ nil, true, false ].one? #=> true
partition -> Enumerable::Enumerator
partition {|item| ... } -> [[object], [object]]
-
各要素を、ブロックの条件を満たす要素と満たさない要素に分割します。 各要素に対してブロックを評価して、その値が真であった要素の配列と、 偽であった要素の配列の 2 つを配列に入れて返します。
例:
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0].partition {|i| i % 3 == 0 } #=> [[9, 6, 3, 0], [10, 8, 7, 5, 4, 2, 1]]
pid -> Integer | nil
-
自身が IO.popen で作られたIOポートなら、子プロセスのプロセス ID を 返します。それ以外は nil を返します。
- [EXCEPTION] IOError:
- 既に close されている場合に発生します。
pos -> Integer
tell -> Integer
-
ファイルポインタの現在の位置を整数で返します。
- [EXCEPTION] IOError:
- 既に close されている場合に発生します。
pos=(n)
-
ファイルポインタを指定位置に移動します。 IO#seek(n, IO::SEEK_SET) と同じです。
- [PARAM] n:
- 先頭からのオフセットを整数で指定します。
- [EXCEPTION] IOError:
- 既に close されている場合に発生します。
print(*arg) -> nil
-
引数を IO ポートに順に出力します。引数を省略した場合は、$_ を出力します。
- [PARAM] arg:
- Kernel.#print と同じです。
- [EXCEPTION] IOError:
- 自身が書き込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- 出力に失敗した場合に発生します。
printf(format, *arg) -> nil
-
C 言語の printf と同じように、format に従い引数 を文字列に変換して、self に出力します。
第一引数に IO を指定できないこと、引数を省略できないことを除けば Kernel.#printf と同じです。
- [PARAM] format:
- Kernel.#printf と同じです。sprintf フォーマット を参照してください。
- [PARAM] arg:
- Kernel.#printf と同じです。
- [EXCEPTION] IOError:
- 自身が書き込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- 出力に失敗した場合に発生します。
[SEE_ALSO] Kernel.#printf
private_methods(include_inherited = true) -> [String]
-
そのオブジェクトが理解できる private メソッド名の一覧を返します。
- [PARAM] include_inherited:
- 偽となる値を指定すると自身のクラスのスーパークラスで定義されたメソッドを除きます。
[SEE_ALSO] Module#private_instance_methods,Object#methods,Object#singleton_methods
protected_methods(include_inherited = true) -> [String]
-
そのオブジェクトが理解できる protected メソッド名の一覧を返します。
- [PARAM] include_inherited:
- 偽となる値を指定すると自身のクラスのスーパークラスで定義されたメソッドを除きます。
[SEE_ALSO] Module#protected_instance_methods,Object#methods,Object#singleton_methods
public_methods(include_inherited = true) -> [String]
-
そのオブジェクトが理解できる public メソッド名の一覧を返します。
- [PARAM] include_inherited:
- 偽となる値を指定すると自身のクラスのスーパークラスで定義されたメソッドを除きます。
[SEE_ALSO] Module#public_instance_methods,Object#methods,Object#singleton_methods
putc(ch) -> object
-
文字 ch を self に出力します。 引数の扱いは Kernel.#putc と同じです。詳細はこちらを参照し てください。ch を返します。
- [PARAM] ch:
- 出力したい文字を、文字列か文字コード(整数)で与えます。
- [EXCEPTION] IOError:
- 自身が書き込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- 出力に失敗した場合に発生します。
[SEE_ALSO] Kernel.#putc
puts(*obj) -> nil
-
各 obj を self に出力し、それぞれの後に改行を出力します。 引数の扱いは Kernel.#puts と同じです。詳細はこちらを参照し てください。
- [PARAM] obj:
- 出力したいオブジェクトを指定します。Kernel.#puts と同じです。
- [EXCEPTION] IOError:
- 自身が書き込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- 出力に失敗した場合に発生します。
$stdout.puts("this", "is", "a", "test", [1, [nil, 3]]) #=> this is a test 1 nil 3
[SEE_ALSO] Kernel.#puts
read(length = nil, outbuf = "") -> String | nil
-
length バイト読み込んで、その文字列を返します。
既に EOF に達していれば nil を返します。 ただし、length に nil が指定されている場合は、空文字列 "" を返します。 例えば、open(空ファイル) {|f| f.read } は "" となります。
- [PARAM] length:
- 読み込むサイズを整数で指定します。 nil が指定された場合、EOF までの全てのデータを読み込んで、その文字列を返します。
- [PARAM] outbuf:
- 出力用のバッファを文字列で指定します。IO#read は読み込んだ データをその文字列オブジェクトに上書きして返します。指定し た文字列オブジェクトがあらかじめ length 長の領域であれば、 余計なメモリの割当てが行われません。指定した文字列の長さが length と異なる場合、その文字列は一旦 length 長に拡張(ある いは縮小)されたあと、実際に読み込んだデータのサイズになります。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- データの読み込みに失敗した場合に発生します。
- [EXCEPTION] ArgumentError:
- length が負の場合に発生します。
第二引数を指定した read の呼び出しでデータが空であった場合 (read が nil を返す場合)、outbuf は空文字列になります。
outbuf = "x" * 20; io = File.open("/dev/null") p io.read(10,outbuf) p outbuf => nil ""
read_nonblock(maxlen, outbuf = "") -> String
-
IO をノンブロッキングモードに設定し、 その後で read(2) システムコールにより 長さ maxlen を上限として読み込み、文字列として返します。 EAGAIN, EINTR などは Errno::EXXX 例外として呼出元に報告されます。
なお、バッファが空でない場合は、read_nonblock はバッファから読み込みます。この場合、read(2) システムコールは呼ばれません。
このメソッドはノンブロッキングモードにする点を除いて IO#readpartial と 同じであることに注意してください。
既に EOF に達していれば EOFError が発生します。ただし、maxlen に 0 が指定されている場合は、空文字列 "" を返します。
- [PARAM] maxlen:
- 読み込む長さの上限を整数で指定します。
- [PARAM] outbuf:
- 文字列で指定します。IO#read_nonblock は読み込んだデータを outbuf に破壊的に格納し、 返り値は outbuf となります。outbuf は一旦 maxlen 長に拡張(あるいは縮小)されたあと、 実際に読み込んだデータのサイズになります。read(2) システムコールが 0 を返した場合は、空文字列になります。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- read(2) システムコールの結果としてエラーが起きた場合に発生します。
- [EXCEPTION] EOFError:
- read(2) システムコールが 0 を返した場合に発生します。これは、IO が既に EOF に達していることを意味します。
readbyte -> Integer
-
IO から1バイトを読み込み整数として返します。 既に EOF に達していれば EOFError が発生します。
- [EXCEPTION] EOFError:
- 既に EOF に達している場合に発生します。
readchar -> Integer
-
IO ポートから 1 文字読み込んで、その文字に対応する Fixnum を 返します。 EOF に到達した時には EOFError が発生します。
IO#getc との違いは EOF での振る舞いのみです。
- [EXCEPTION] EOFError:
- EOF に到達した時に発生します。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
f = File.new("testfile") f.readchar #=> 84 f.readchar #=> 104 f.read f.readchar #=> EOFError
[SEE_ALSO] IO#getc
readline(rs = $/) -> String
-
一行読み込んで、読み込みに成功した時にはその文字列を返します。 EOF に到達した時には EOFError が発生します。
読み込んだ文字列を変数 $_ にセットします。IO#gets との違いは EOF での振る舞いのみです。
- [PARAM] rs:
- 行の区切りを文字列で指定します。rs に nil を指定すると行区切りなしとみなします。空文字列 "" を指定すると連続する改行を行の区切りとみなします(パラグラフモード)。
- [EXCEPTION] EOFError:
- EOF に到達した時に発生します。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
f = File.new("oneline_file") f.readline #=> "This is line one\n" $_ #=> "This is line one\n" f.readline #=> EOFError $_ #=> nil
readlines(rs = $/) -> [String]
-
データを全て読み込んで、その各行を要素としてもつ配列を返します。 既に EOF に達していれば空配列 [] を返します。
- [PARAM] rs:
- 行の区切りを文字列で指定します。rs に nil を指定すると行区切りなしとみなします。 空文字列 "" を指定すると連続する改行を行の区切りとみなします(パラグラフモード)。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
readpartial(maxlen, outbuf = "") -> String
-
IO から長さ maxlen を上限として読み込み、文字列として返します。 即座に得られるデータが存在しないときにはブロックしてデータの到着を待ちます。 即座に得られるデータが 1byte でも存在すればブロックしません。
既に EOF に達していれば EOFError が発生します。 ただし、maxlen に 0 が指定されている場合は、空文字列 "" を返します。
readpartial はブロックを最小限に抑えることによって、 パイプ、ソケット、端末などのストリームに対して適切に動作するよう設計されています。 readpartial がブロックするのは次の全ての条件が満たされたときだけです。
- IO オブジェクト内のバッファが空
- ストリームにデータが到着していない
- ストリームが EOF になっていない
これらの条件が満たされる場合、何らかのデータが到着するか EOF になるまで readpartial はブロックします。
readpartial の結果は以下のようになります。
- バッファが空でなければ、そのバッファのデータを読み込んで返します。
- ストリームにデータがあれば、ストリームからデータを読み込んで返します。
- ストリームが EOF になっていれば、例外 EOFError を発生させます。
例えば、パイプに対しては次のように動作します。
r, w = IO.pipe # buffer pipe content w << "abc" # "" "abc". r.readpartial(4096) #=> "abc" "" "" r.readpartial(4096) # バッファにもパイプにもデータがないのでブロックする r, w = IO.pipe # buffer pipe content w << "abc" # "" "abc" w.close # "" "abc" EOF r.readpartial(4096) #=> "abc" "" EOF r.readpartial(4096) # 例外 EOFError 発生 r, w = IO.pipe # buffer pipe content w << "abc\ndef\n" # "" "abc\ndef\n" r.gets #=> "abc\n" "def\n" "" w << "ghi\n" # "def\n" "ghi\n" r.readpartial(4096) #=> "def\n" "" "ghi\n" r.readpartial(4096) #=> "ghi\n" "" ""
なお、readpartial は nonblock フラグに影響されません。 つまり、nonblock フラグが設定されていて sysread であれば Errno::EAGAIN になる場合でもブロックします。
また、readpartial の挙動は sysread によく似ています。 とくに、バッファが空の場合には同じ挙動を示します。 ただし、EAGAIN および EINTR エラーは内部で発生したとしても通知されず、データが到着するまでブロックし続けます。
- [PARAM] maxlen:
- 読み込む長さの上限を整数で指定します。
- [PARAM] outbuf:
- 文字列で指定します。IO#readpartial は読み込んだデータを outbuf に破壊的に格納し、 返り値は outbuf となります。outbuf は一旦 maxlen 長に拡張(あるいは縮小)されたあと、 実際に読み込んだデータのサイズになります。IO が既に EOF に達していれば、空文字列になります。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
- [EXCEPTION] EOFError:
- IO が既に EOF に達していれば発生します。
recv(maxlen, flags = 0) -> String
-
ソケットからデータを受け取り、文字列として返します。 maxlen は受け取る最大の長さを指定します。 flags については recv(2) を参照してください。flags の デフォルト値は 0 です。flags の指定に必要な定数は Socket クラスで定義されています。(例: Socket::MSG_PEEK)
内部で呼び出す recv(2) が 0 を返した場合、このメソッドは "" を返します。 この意味はソケットによって異なります。 たとえば TCP では EOF を意味しますし、 UDP では空のパケットを読み込んだことを意味します。
- [PARAM] maxlen:
- 受け取る文字列の最大の長さを指定します。
- [PARAM] flags:
- recv(2) を参照してください。
- [EXCEPTION] IOError:
- [EXCEPTION] Errno::EXXX:
- recvfrom(2) がエラーになった場合などに発生します。
例:
s1, s2 = UNIXSocket.pair s1.write "a" s1.close p s2.recv(10, Socket::MSG_PEEK) #=> "a" p s2.recv(10) #=> "a" p s2.recv(10) #=> ""
recv_nonblock(maxlen, flags = 0) -> String
-
ソケットをノンブロッキングモードに設定した後、 recvfrom(2) でソケットからデータを受け取ります。
引数、返り値は BasicSocket#recv と同じです。
recvfrom(2) がエラーになった場合、 EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。
- [PARAM] maxlen:
- 受け取る文字列の最大の長さを指定します。
- [PARAM] flags:
- recv(2) を参照してください。
- [EXCEPTION] IOError:
- [EXCEPTION] Errno::EXXX:
- recvfrom(2) がエラーになった場合などに発生します。
recvfrom(maxlen, flags=0) -> [String, String]
-
ソケットからデータを受け取ります。
Socket#recv と同様ですが、返り値として データ文字列と相手ソケットのアドレスのペアが返されます。
flags には Socket::MSG_* という定数の bitwise OR を渡します。 詳しくは recvfrom(2) を参照してください。
- [PARAM] maxlen:
- ソケットから受けとるデータの最大値
- [PARAM] flags:
- フラグ
- [EXCEPTION] Errno::EXXX:
- recvfrom(2) がエラーを報告した場合に発生します。詳しくは Errno と man を見てください。
例:
s1 = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0) s2 = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0) s1.bind(Socket.sockaddr_in(0, "0.0.0.0")) s2.send("foo", 0, s1.getsockname) mesg, sockaddr = s1.recvfrom(10) p mesg #=> "foo" p sockaddr #=> "\002\000\200r\177\000\000\001\000\000\000\000\000\000\000\000" p Socket.unpack_sockaddr_in(sockaddr) #=> [32882, "127.0.0.1"]
recvfrom_nonblock(maxlen, flags=0) -> [String, String]
-
ソケットをノンブロッキングモードに設定した後、 recvfrom(2) を呼び出します。
引数、返り値は Socket#recvfrom と同じです。
recvfrom(2) がエラーになった場合、 EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。
- [PARAM] maxlen:
- ソケットから受けとるデータの最大値
- [PARAM] flags:
- フラグ
- [EXCEPTION] Errno::EXXX:
- recvfrom(2) がエラーを報告した場合に発生します。詳しくは man を参照してください
reject -> Enumerable::Enumerator
reject {|item| ... } -> [object]
-
各要素に対してブロックを評価し、 その値が偽であった要素を集めた新しい配列を返します。 条件を反転させた select です。
例:
# 偶数を除外する (奇数を集める) [1, 2, 3, 4, 5, 6].reject {|i| i % 2 == 0 } # => [1, 3, 5]
[SEE_ALSO] Enumerable#select
reopen(io) -> self
-
自身を指定された io に繋ぎ換えます。
クラスも io に等しくなることに注意してください。 IO#pos, IO#lineno などは指定された io と等しくなります。
- [PARAM] io:
- 自身を繋ぎ換えたい IO オブジェクトを指定します。
- [EXCEPTION] IOError:
- 指定された io が close されている場合に発生します。
reopen(path) -> self
reopen(path, mode) -> self
-
path で指定されたファイルにストリームを繋ぎ換えます。
第二引数を省略したとき self のモードをそのまま引き継ぎます。 IO#pos, IO#lineno などはリセットされます。
- [PARAM] path:
- パスを表す文字列を指定します。
- [PARAM] mode:
- パスを開く際のモードを文字列で指定します。
- [EXCEPTION] Errno::EXXX:
- 失敗した場合に発生します。
[SEE_ALSO] Kernel.#open
respond_to?(name, include_private = false) -> bool
-
オブジェクトがメソッド name を持つとき真を返します。
オブジェクトが メソッド name を持つというのは、 オブジェクトが メソッド name に応答することができることをいいます。
- [PARAM] name:
- Symbol または文字列で指定するメソッド名です。
- [PARAM] include_private:
- private メソッドを確認の対象に含めるかを true か false で指定します。省略した場合は false(含めな い) を指定した事になります。
class F def hello "Bonjour" end end class D private def hello "Guten Tag" end end list = [F.new,D.new] list.each{|it| puts it.hello if it.respond_to?(:hello)} #=> Bonjour list.each{|it| it.instance_eval("puts hello if it.respond_to?(:hello, true)")} #=> Bonjour # Guten Tag
[SEE_ALSO] Module#method_defined?
reverse_each -> Enumerable::Enumerator
reverse_each {|element| ... } -> self
-
逆順に各要素に対してブロックを評価します。
内部で各要素を保持した配列を作ります。
rewind -> 0
-
ファイルポインタを先頭に移動します。IO#lineno は 0 になります。
- [EXCEPTION] IOError:
- 既に close されている場合に発生します。
f = File.new("testfile") f.readline #=> "This is line one\n" f.rewind #=> 0 f.lineno #=> 0 f.readline #=> "This is line one\n"
seek(offset, whence = IO::SEEK_SET) -> 0
-
ファイルポインタを whence の位置から offset だけ移動させます。 offset 位置への移動が成功すれば 0 を返します。
- [PARAM] offset:
- ファイルポインタを移動させるオフセットを整数で指定します。
- [PARAM] whence:
- 値は以下のいずれかです。
- IO::SEEK_SET: ファイルの先頭から (デフォルト)
- IO::SEEK_CUR: 現在のファイルポインタから
- IO::SEEK_END: ファイルの末尾から
- [EXCEPTION] Errno::EXXX:
- ファイルポインタの移動に失敗した場合に発生します。
- [EXCEPTION] IOError:
- 既に close されていた場合に発生します。
f = File.new("testfile") f.seek(-13, IO::SEEK_END) #=> 0 f.readline #=> "And so on...\n"
[SEE_ALSO] IO#sysseek
send(mesg, flags, dest_sockaddr = nil) -> Fixnum
-
ソケットを介してデータを送ります。flags に関しては send(2) を参照してください。connect していないソケット に対しては送り先である dest_sockaddr を指定する必要があります。実際に送っ たデータの長さを返します。
dest_sockaddr には「ソケットアドレス構造体を pack した文字列」 を指定します。
データの送信に失敗した場合は例外 Errno::EXXX が発生します。
- [PARAM] mesg:
- 送信するデータを文字列で指定します。
- [PARAM] flags:
- send(2) の flags を参照してください。
- [PARAM] dest_sockaddr:
- 「ソケットアドレス構造体を pack した文字列」を指定します。
- [EXCEPTION] Errno::EXXX:
- データの送信に失敗した場合に発生します。
例:
s = UDPSocket.new sockaddr = Socket.sockaddr_in("discard", "localhost") s.send("The king has donkey ears!", 0, sockaddr)
setsockopt(level, optname, optval) -> 0
-
ソケットのオプションを設定します。setsockopt(2) を参照してください。
level, optname には Socket::SOL_SOCKET や Socket::SO_REUSEADDR といった整数値を用います。
optval には文字列、整数、真偽値(true or false)を渡すことができます。 文字列の場合には setsockopt(2) にはその文字列と 長さが渡されます。整数の場合はintへのポインタが渡されます。 true/falseの場合は0/1という整数と解釈され、そのメモリ領域の intポインタを渡します。
- [PARAM] level:
- setsockopt(2) の level を参照してください。
- [PARAM] optname:
- setsockopt(2) の option_name を参照してください。
- [PARAM] optval:
- 設定値
- [EXCEPTION] Errno::EXXX:
- オプションの設定に失敗した場合発生します。
[SEE_ALSO] BasicSocket#getsockopt
shutdown(how = Socket::SHUT_RDWR) -> 0
-
ソケットの以降の接続を終了させます。
how の値によって以下のように接続が終了します。
- Socket::SHUT_RD: それ以降の受信が拒否されます
- Socket::SHUT_WR: それ以降の送信が拒否されます
- Socket::SHUT_RDWR: それ以降の送信、受信ともに拒否されます
how を省略すると Socket::SHUT_RDWR を指定したことになります。 shutdown(2) を参照してください。
- [PARAM] how:
- 接続の終了の仕方を Socket::SHUT_RD, Socket::SHUT_WR, Socket::SHUT_RDWR などで指定します。
- [EXCEPTION] Errno::EXXX:
- ソケットの以降の接続を終了操作が失敗した場合に発生します。
- [EXCEPTION] ArgumentError:
- how に範囲外の整数を入力した場合に発生します。
- [EXCEPTION] SecurityError:
- セーフレベルが 4 以上で、ソケットに汚染マークがついていない場合発生します。
singleton_methods(inherited_too = true) -> [String]
-
そのオブジェクトに対して定義されている特異メソッド名 (public あるいは protected メソッド) の一覧を返します。
クラスメソッド(Classのインスタンスの特異メソッド)に関しては 引数が真のとき、スーパークラスのクラスメソッドも対象になります。
singleton_methods(false) は、Object#methods(false) と同じです。
- [PARAM] inherited_too:
- 引数が真のとき、スーパークラスのクラスメソッドも対象になります。これが意味を持つのは self がクラスオブジェクトであるときだけです。
#例1: Parent = Class.new class <<Parent private; def private_class_parent() end protected; def protected_class_parent() end public; def public_class_parent() end end Foo = Class.new(Parent) class <<Foo private; def private_class_foo() end protected; def protected_class_foo() end public; def public_class_foo() end end module Bar private; def private_bar() end protected; def protected_bar() end public; def public_bar() end end obj = Foo.new class <<obj include Bar private; def private_self() end protected; def protected_self() end public; def public_self() end end # あるオブジェクトの特異メソッドの一覧を得る。 p obj.singleton_methods(false) p obj.methods(false) p Foo.singleton_methods(false) #実行結果 ["public_self", "protected_self"] ["public_self", "protected_self"] ["public_class_foo", "protected_class_foo"] #例2: # あるオブジェクトの特異メソッドの一覧を得る。 # 親クラスのクラスメソッドも含まれるよう true を指定したが、 # Object のクラスメソッドは一覧から排除している。 p obj.singleton_methods(true) p Foo.singleton_methods(true) - Object.singleton_methods(true) #実行結果 ["public_bar", "public_self", "protected_bar", "protected_self"] ["public_class_foo", "public_class_parent", "protected_class_foo", "protected_class_parent"]
[SEE_ALSO] Object#methods,Object#extend
sort -> [object]
sort {|a, b| ... } -> [object]
-
全ての要素を昇順にソートした配列を生成して返します。
ブロックなしのときは <=> メソッドを要素に対して呼び、 その結果をもとにソートします。
<=> 以外でソートしたい場合は、ブロックを指定します。 この場合、ブロックの評価結果を元にソートします。 ブロックの値は、a > b のとき正、a == b のとき 0、 a < b のとき負の整数を、期待しています。 ブロックが整数以外を返したときは例外 TypeError が発生します。
Enumerable#sort は安定ではありません (unstable sort)。 安定なソートが必要な場合は Enumerable#sort_by を使って工夫する必要があります。 詳しくは Enumerable#sort_by の項目を参照してください。
※ 比較結果が同じ要素は元の順序通りに並ぶソートを 「安定なソート (stable sort)」と言います。
[SEE_ALSO] Enumerable#sort_by
sort_by -> Enumerable::Enumerator
sort_by {|item| ... } -> [object]
-
ブロックの評価結果を <=> メソッドで比較することで、self を昇 順にソートします。ソートされた配列を新たに生成して返します。
つまり、以下とほぼ同じ動作をします。
class Array def sort_by self.map {|i| [yield(i), i] }. sort {|a, b| a[0] <=> b[0] }. map {|i| i[1]} end end
Enumerable#sort と比較して sort_by が優れている点として、 比較条件が複雑な場合の速度が挙げられます。 sort_by を使わない以下の例では比較を行う度に downcase が実行されます。 従って downcase の実行速度が遅ければ sort の速度が致命的に低下します。
p ["BAR", "FOO", "bar", "foo"].sort {|a, b| a.downcase <=> b.downcase }
一方、次のように sort_by を使うと downcase の実行回数は要素数と同じです。 つまり、その部分の実行時間は O(n) のオーダーです。
p ["BAR", "FOO", "bar", "foo"].sort_by {|v| v.downcase }
以下の、実行回数の検証結果を参照してみてください。
class Integer def count $n += 1 self end end ary = [] 1.upto(1000) {|v| ary << rand(v) } $n = 0 ary.sort {|a,b| a.count <=> b.count } p $n # => 18200 $n = 0 ary.sort_by {|v| v.count } p $n # => 1000
Enumerable#sort_by は安定ではありません (unstable sort)。 ただし、sort_by を以下のように使うと安定なソートを実装できます。
i = 0 ary.sort_by {|v| [v, i += 1] }
※ 比較結果が同じ要素は元の順序通りに並ぶソートを 「安定なソート (stable sort)」と言います。
[SEE_ALSO] Enumerable#sort
stat -> File::Stat
-
ファイルのステータスを含む File::Stat オブジェクトを生成して 返します。
- [EXCEPTION] Errno::EXXX:
- ステータスの読み込みに失敗した場合に発生します。
- [EXCEPTION] IOError:
- 既に close されていた場合に発生します。
[SEE_ALSO] File#lstat, File.stat, File.lstat
sync -> bool
-
現在の出力が同期モードならば true を返します。そうでない場合は false を返します。
- [EXCEPTION] IOError:
- 既に close されていた場合に発生します。
sync=(newstate)
-
自身を同期モードに設定すると、出力関数の呼出毎にバッファがフラッシュされます。
- [PARAM] newstate:
- 自身を同期モードに設定するかを boolean で指定します。
- [EXCEPTION] IOError:
- 既に close されていた場合に発生します。
sysaccept -> Array
-
接続したクライアントのファイル記述子とアドレスのペアを返すことを除 けば Socket#accept と同じです。
sysread(maxlen, outbuf = "") -> String
-
read(2) を用いて入力を行ない、入力されたデータを 含む文字列を返します。stdio を経由しないので gets や getc や eof? などと混用すると思わぬ動作 をすることがあります。
既に EOF に達していれば EOFError が発生します。ただし、maxlen に 0 が指定されている場合は、空文字列 "" を返します。
- [PARAM] maxlen:
- 入力のサイズを整数で指定します。
- [PARAM] outbuf:
- 出力用のバッファを文字列で指定します。IO#sysread は読み込んだデータを その文字列オブジェクトに上書きして返します。指定した文字列オブジェクト があらかじめ maxlen 長の領域であれば、余計なメモリの割当てが行われません。 指定した文字列の長さが maxlen と異なる場合、その文字列は一旦 maxlen 長に 拡張(あるいは縮小)されたあと、実際に読み込んだデータのサイズになります。
- [EXCEPTION] IOError:
- 自身が読み込み用にオープンされていなければ発生します。
- [EXCEPTION] EOFError:
- IO が既に EOF に達していれば発生します。
- [EXCEPTION] Errno::EXXX:
- データの読み込みに失敗した場合に発生します。
第二引数を指定した sysread の呼び出しでデータが空であった場 合(sysread が例外 EOFError を発生させる場合)、 outbuf は空文字列になります。
outbuf = "x" * 20; io = File.open("/dev/null") p((io.sysread(10,outbuf) rescue nil)) p outbuf => nil ""
sysseek(offset, whence = IO::SEEK_SET) -> Integer
-
lseek(2) と同じです。IO#seek では、 IO#sysread, IO#syswrite と併用すると正しく動作しないので代わりにこのメソッドを使います。 位置 offset への移動が成功すれば移動した位置(ファイル先頭からのオフセット)を返します。
書き込み用にバッファリングされた IO に対して実行すると警告が出ます。
File.open("/dev/zero") {|f| buf = f.read(3) f.sysseek(0) } # => -:3:in `sysseek': sysseek for buffered IO (IOError) File.open("/dev/null", "w") {|f| f.print "foo" f.sysseek(0) } # => -:3: warning: sysseek for buffered IO
- [PARAM] offset:
- ファイルポインタを移動させるオフセットを整数で指定します。
- [PARAM] whence:
- 値は以下のいずれかです。
- IO::SEEK_SET: ファイルの先頭から (デフォルト)
- IO::SEEK_CUR: 現在のファイルポインタから
- IO::SEEK_END: ファイルの末尾から
- [EXCEPTION] IOError:
- 読み込み用にバッファリングされた IO に対して実行すると発生します。 既に close されていた場合にも発生します。
- [EXCEPTION] Errno::EXXX:
- 移動に失敗した場合に発生します。
[SEE_ALSO] IO#seek
syswrite(string) -> Integer
-
write(2) を用いて string を出力します。 string が文字列でなければ to_s による文字列化を試みます。 実際に出力できたバイト数を返します。
stdio を経由しないので他の出力メソッドと混用すると思わぬ動作 をすることがあります。
- [PARAM] string:
- 自身に書き込みたい文字列を指定します。
- [EXCEPTION] IOError:
- 自身が書き込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- 出力に失敗した場合に発生します。
taint -> self
-
オブジェクトの「汚染マーク」をセットします。
環境変数(ENVで得られる文字列)など一部のオブジェクトは最初から汚染されています。 オブジェクトの汚染に関してはセキュリティモデルを参照してください。
$SAFE = 1 some = "puts '@&%&(#!'" p some.tainted? #=> false eval(some) #=> @&%&(#! some.taint p some.tainted? #=> true eval(some) # Insecure operation - eval (SecurityError) some.untaint p some.tainted? #=> false eval(some) #=> @&%&(#! p ENV['OS'].tainted? #=> true
[SEE_ALSO] Object#tainted?,Object#untaint,Object#freeze
tainted? -> bool
-
オブジェクトの「汚染マーク」がセットされている時真を返します。
オブジェクトの汚染に関してはセキュリティモデルを参照してください。
p String.new.tainted? #=> false p ENV['OS'].tainted? #=> true
[SEE_ALSO] Object#taint,Object#untaint
take(n) -> Array
-
Enumerable オブジェクトの先頭から n 要素を配列として返します。
- [PARAM] n:
- 要素数を指定します。
a = [1, 2, 3, 4, 5, 0] a.take(3) # => [1, 2, 3]
take_while -> Enumerable::Enumerator
take_while {|element| ... } -> Array
-
Enumerable オブジェクトの要素を順に偽になるまでブロックで評価します。 最初に偽になった要素の手前の要素までを配列として返します。
a = [1, 2, 3, 4, 5, 0] a.take_while {|i| i < 3 } # => [1, 2]
tap {|x| ... } -> self
-
self を引数としてブロックを評価し、self を返します。
メソッドチェインの途中で直ちに操作結果を表示するために メソッドチェインに "入り込む" ことが、このメソッドの主目的です。
(1..10) .tap {|x| puts "original: #{x.inspect}"}. to_a .tap {|x| puts "array: #{x.inspect}"}. select {|x| x % 2 == 0} .tap {|x| puts "evens: #{x.inspect}"}. map { |x| x * x } .tap {|x| puts "squares: #{x.inspect}"}
to_a -> Array
-
オブジェクトを配列に変換した結果を返します。
配列に変換できない(to_ary を持たない)オブジェクトは、自身のみを含む長さ 1 の配 列に変換されます。 このメソッドは、将来 Object のメソッドからは取り除かれます。 なので to_a を使用する場合、
- すべてのオブジェクトに to_a が定義されているという期待はしない。
- ユーザー定義のクラスには必要に応じて自分で定義する
などということが必要です。
p( {'a'=>1}.to_a ) # [["a", 1]] p ['array'].to_a # ["array"] p 1.to_a # [1] (warning: default `to_a' will be obsolete) p nil.to_a # []
[SEE_ALSO] Object#to_ary,Kernel.#Array
to_ary -> Array
-
オブジェクトの Array への暗黙の変換が必要なときに内部で呼ばれます。 デフォルトでは定義されていません。
説明のためここに記載してありますが、 このメソッドは実際には Object クラスには定義されていません。 必要に応じてサブクラスで定義すべきものです。
このメソッドを定義する条件は、
- 配列が使われるすべての場面で代置可能であるような、
- 配列そのものとみなせるようなもの
という厳しいものになっています。
class Foo def to_ary [3,4] end end it = Foo.new p([1,2] + it) #=> [1, 2, 3, 4]
[SEE_ALSO] Object#to_a,Kernel.#Array
to_hash -> Hash
-
オブジェクトの Hash への暗黙の変換が必要なときに内部で呼ばれます。 デフォルトでは定義されていません。
説明のためここに記載してありますが、 このメソッドは実際には Object クラスには定義されていません。 必要に応じてサブクラスで定義すべきものです。
このメソッドを定義する条件は、
- ハッシュが使われるすべての場面で代置可能であるような、
- ハッシュそのものとみなせるようなもの
という厳しいものになっています。
class Foo def to_hash {'as' => 24} end end it = Foo.new p({:as => 12}.merge(it)) #=> {"as"=>24, :as=>12}
to_int -> Integer
-
オブジェクトの Integer への暗黙の変換が必要なときに内部で呼ばれます。 デフォルトでは定義されていません。
説明のためここに記載してありますが、 このメソッドは実際には Object クラスには定義されていません。 必要に応じてサブクラスで定義すべきものです。
このメソッドを定義する条件は、
- 整数が使われるすべての場面で代置可能であるような、
- 整数そのものとみなせるようなもの
という厳しいものになっています。
class Foo def to_int 666 end end it = Foo.new p(9**9 & it) #=> 8
[SEE_ALSO] Kernel.#Integer
to_io -> self
-
self を返します。
to_io -> IO
-
オブジェクトの IO への暗黙の変換が必要なときに内部で呼ばれます。 デフォルトでは定義されていません。
説明のためここに記載してありますが、 このメソッドは実際には Object クラスには定義されていません。 必要に応じてサブクラスで定義すべきものです。
このメソッドを定義する条件は、
- IOオブジェクトが使われるすべての場面で代置可能であるような、
- IOオブジェクトそのものとみなせるようなもの
という厳しいものになっています。
to_proc -> Proc
-
オブジェクトの Proc への暗黙の変換が必要なときに内部で呼ばれます。 デフォルトでは定義されていません。
説明のためここに記載してありますが、 このメソッドは実際には Object クラスには定義されていません。 必要に応じてサブクラスで定義すべきものです。
def doing yield end class Foo def to_proc Proc.new{p 'ok'} end end it = Foo.new doing(&it) #=> "ok"
to_regexp -> Regexp
-
オブジェクトの Regexp への暗黙の変換が必要なときに内部で呼ばれます。 デフォルトでは定義されていません。
説明のためここに記載してありますが、 このメソッドは実際には Object クラスには定義されていません。 必要に応じてサブクラスで定義すべきものです。
このメソッドを定義する条件は、
- 正規表現が使われるすべての場面で代置可能であるような、
- 正規表現そのものとみなせるようなもの
という厳しいものになっています。
class Foo def to_regexp /[\d]+/ end end it = Foo.new p Regexp.union(/^at/, it) #=> /(?-mix:^at)|(?-mix:[\d]+)/
to_s -> String
-
オブジェクトの文字列表現を返します。
Kernel.#print や Kernel.#sprintf は文字列以外の オブジェクトが引数に渡された場合このメソッドを使って文字列に変換し ます。
class Foo def initialize num @num = num end end it = Foo.new(40) puts it #=> #<Foo:0x2b69110> class Foo def to_s "Class:Foo Number:#{@num}" end end puts it #=> Class:Foo Number:40
[SEE_ALSO] Object#to_str,Kernel.#String
to_str -> String
-
オブジェクトの String への暗黙の変換が必要なときに内部で呼ばれます。 デフォルトでは定義されていません。
説明のためここに記載してありますが、 このメソッドは実際には Object クラスには定義されていません。 必要に応じてサブクラスで定義すべきものです。
このメソッドを定義する条件は、
- 文字列が使われるすべての場面で代置可能であるような、
- 文字列そのものとみなせるようなもの
という厳しいものになっています。
class Foo def to_str 'Edition' end end it = Foo.new p('Second' + it) #=> "SecondEdition"
[SEE_ALSO] Object#to_s,Kernel.#String
ungetc(char) -> nil
-
指定された char を読み戻します。 2バイト以上の読み戻しは保証されません。
- [PARAM] char:
- 読み戻したい1バイト文字に対応する Fixnum を指定します。
- [EXCEPTION] IOError:
- 読み戻しに失敗した場合に発生します。また、自身が読み込み用にオープンされていない時、 自身がまだ一度も read されていない時に発生します。
f = File.new("testfile") #=> #<File:testfile> c = f.getc #=> 84 f.ungetc(c) #=> nil f.getc #=> 84
untaint -> self
-
オブジェクトの「汚染マーク」を取り除きます。
汚染マークを取り除くことによる危険性はプログラマが責任を負う必要が あります。
オブジェクトの汚染に関してはセキュリティモデルを参照してください。
- [EXCEPTION] SecurityError:
- セキュリティレベルが3以上の時にこのメソッドを使用すると発生します。
[SEE_ALSO] Object#taint,Object#tainted?
write(str) -> Integer
-
IOポートに対して str を出力します。str が文字列でなけ れば to_s による文字列化を試みます。 実際に出力できたバイト数を返します。
IO#syswrite を除く全ての出力メソッドは、最終的に "write" という名のメソッドを呼び出すので、このメソッドを置き換える ことで出力関数の挙動を変更することができます。
- [PARAM] str:
- 自身に書き込みたい文字列を指定します。
- [EXCEPTION] IOError:
- 自身が書き込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- 出力に失敗した場合に発生します。
write_nonblock(string) -> Integer
-
IO をノンブロッキングモードに設定し、string を write(2) システムコールで書き出します。
write(2) が成功した場合、書き込んだ長さを返します。 EAGAIN, EINTR などは例外 Errno::EXXX として呼出元に報告されます。 書き込んだバイト数(つまり返り値)は String#bytesize の 値より小さい可能性があります。
- [PARAM] string:
- 自身に書き込みたい文字列を指定します。
- [EXCEPTION] IOError:
- 自身が書き込み用にオープンされていなければ発生します。
- [EXCEPTION] Errno::EXXX:
- write(2) が失敗した場合に発生します。
zip(*lists) -> [[object]]
zip(*lists) {|v1, v2, ...| ...} -> nil
-
self と引数に渡した配列の各要素からなる配列の配列を生成して返します。 生成される配列の要素数は self の要素数と同じです。
ブロック付きで呼び出した場合は、 self と引数に渡した配列の各要素を順番にブロックに渡します。
- [PARAM] lists:
- 配列を指定します。配列でない場合は to_a メソッドにより配列に変換します。
例:
p (1..3).zip([4,5,6], [7,8,9]) # => [[1, 4, 7], [2, 5, 8], [3, 6, 9]] p (1..2).zip([:a,:b,:c], [:A,:B,:C,:D]) # => [[1, :a, :A], [2, :b, :B]] p (1..5).zip([:a,:b,:c], [:A,:B,:C,:D]) # => [[1, :a, :A], [2, :b, :B], # [3, :c, :C], [4, nil, :D], [5, nil, nil]]
例:
p [1,2,3].zip([4,5,6], [7,8,9]) {|ary| p ary } # => [1, 4, 7] # [2, 5, 8] # [3, 6, 9] # nil
privateメソッド
initialize(*args, &block) -> object
-
ユーザ定義クラスのオブジェクト初期化メソッド。
このメソッドは Class#new から新しく生成されたオブ ジェクトの初期化のために呼び出されます。他の言語のコンストラクタに相当します。 デフォルトの動作ではなにもしません。
initialize には Class#new に与えられた引数がそのまま渡されます。
サブクラスではこのメソッドを必要に応じて再定義されること が期待されています。
initialize という名前のメソッドは自動的に private に設定され ます。
- [PARAM] args:
- 初期化時の引数です。
- [PARAM] block:
- 初期化時のブロック引数です。必須ではありません。
class Foo def initialize name puts "initialize Foo" @name = name end end class Bar < Foo def initialize name, pass puts "initialize Bar" super name @pass = pass end end it = Bar.new('myname','0500') p it #=> initialize Bar # initialize Foo # #<Bar:0x2b68f08 @name="myname", @pass="0500">
[SEE_ALSO] Class#new
initialize_copy(obj) -> object
-
(拡張ライブラリによる) ユーザ定義クラスのオブジェクトコピーの初期化メソッド。
このメソッドは self を obj の内容で置き換えます。ただ し、self のインスタンス変数や特異メソッドは変化しません。 Object#clone, Object#dupの内部で使われています。
initialize_copy は、Ruby インタプリタが知り得ない情報をコピーするた めに使用(定義)されます。例えば C 言語でクラスを実装する場合、情報 をインスタンス変数に保持させない場合がありますが、そういった内部情 報を initialize_copy でコピーするよう定義しておくことで、dup や clone を再定義する必要がなくなります。
デフォルトの Object#initialize_copy は、 freeze チェックおよび型のチェックを行い self を返すだけのメソッドです。
initialize_copy という名前のメソッドは 自動的に private に設定されます。
- [EXCEPTION] TypeError:
- レシーバが freeze されているか、obj のクラスがレシーバ のクラスと異なる場合に発生します。
[SEE_ALSO] Object#clone,Object#dup
以下に例として、dup や clone がこのメソッドをどのように利用しているかを示します。
obj.dup は、新たに生成したオブジェクトに対して initialize_copy を呼び
obj2 = obj.class.allocate obj2.initialize_copy(obj)
obj2 に対してさらに obj の汚染状態、インスタンス変数、ファイナライ ザをコピーすることで複製を作ります。 obj.clone は、さらに 特異メソッドのコピーも行います。
obj = Object.new class <<obj attr_accessor :foo def bar :bar end end def check(obj) puts "instance variables: #{obj.inspect}" puts "tainted?: #{obj.tainted?}" print "singleton methods: " begin p obj.bar rescue NameError p $! end end obj.foo = 1 obj.taint check Object.new.send(:initialize_copy, obj) #=> instance variables: #<Object:0x4019c9d4> # tainted?: false # singleton methods: #<NoMethodError: ...> check obj.dup #=> instance variables: #<Object:0x4019c9c0 @foo=1> # tainted?: true # singleton methods: #<NoMethodError: ...> check obj.clone #=> instance variables: #<Object:0x4019c880 @foo=1> # tainted?: true # singleton methods: :bar
remove_instance_variable(name) -> object
-
オブジェクトからインスタンス変数 name を取り除き、そのインス タンス変数に設定されていた値を返します。
- [PARAM] name:
- 削除するインスタンス変数の名前をシンボルか文字列で指定します。
- [EXCEPTION] NameError:
- オブジェクトがインスタンス変数 name を持たない場合に発生します。
class Foo def foo @foo = 1 p remove_instance_variable(:@foo) #=> 1 p remove_instance_variable(:@foo) # instance variable @foo not defined (NameError) end end Foo.new.foo
[SEE_ALSO] Module#remove_class_variable,Module#remove_const
singleton_method_added(name) -> object
-
特異メソッドが追加された時にインタプリタから呼び出されます。
通常のメソッドの追加に対するフックには Module#method_addedを使います。
- [PARAM] name:
- 追加されたメソッド名が Symbol で渡されます。
class Foo def singleton_method_added(name) puts "singleton method \"#{name}\" was added" end end obj = Foo.new def obj.foo end #=> singleton method "foo" was added
[SEE_ALSO] Module#method_added,Object#singleton_method_removed,Object#singleton_method_undefined
singleton_method_removed(name) -> object
-
特異メソッドが Module#remove_method に より削除された時にインタプリタから呼び出されます。
通常のメソッドの削除に対するフックには Module#method_removedを使います。
- [PARAM] name:
- 削除されたメソッド名が Symbol で渡されます。
class Foo def singleton_method_removed(name) puts "singleton method \"#{name}\" was removed" end end obj = Foo.new def obj.foo end class << obj remove_method :foo end #=> singleton method "foo" was removed
[SEE_ALSO] Module#method_removed,Object#singleton_method_added,Object#singleton_method_undefined
singleton_method_undefined(name) -> object
-
特異メソッドが Module#undef_method または undef により未定義にされた時にインタプリタから呼び出されます。
通常のメソッドの未定義に対するフックには Module#method_undefined を使います。
- [PARAM] name:
- 未定義にされたメソッド名が Symbol で渡されます。
class Foo def singleton_method_undefined(name) puts "singleton method \"#{name}\" was undefined" end end obj = Foo.new def obj.foo end def obj.bar end class << obj undef_method :foo end obj.instance_eval {undef bar} #=> singleton method "foo" was undefined # singleton method "bar" was undefined
[SEE_ALSO] Module#method_undefined,Object#singleton_method_added,Object#singleton_method_removed , クラス/メソッドの定義/undef
定数
AF_APPLETALK -> Integer
PF_APPLETALK -> Integer
-
Apple talk。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] socket(2linux), socket(2freebsd), ddp(7linux)
AF_ATM -> Integer
PF_ATM -> Integer
-
ATM。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] socket(2freebsd)
AF_AX25 -> Integer
PF_AX25 -> Integer
-
ITU-T X.25 / ISO-8208。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] socket(2linux)
AF_CCITT -> Integer
PF_CCITT -> Integer
-
[TODO]
CCITT プロトコル。 Socket.open の第一引数 domain に使用します。
AF_CHAOS -> Integer
PF_CHAOS -> Integer
-
[TODO]
MIT CHAOS プロトコル。 Socket.open の第一引数 domain に使用します。
AF_CNT -> Integer
PF_CNT -> Integer
-
[TODO]
Computer Network Technology。 Socket.open の第一引数 domain に使用します。
AF_COIP -> Integer
PF_COIP -> Integer
-
[TODO]
connection-oriented IP。 Socket.open の第一引数 domain に使用します。
AF_DATAKIT -> Integer
PF_DATAKIT -> Integer
-
[TODO]
datakit protocol。 Socket.open の第一引数 domain に使用します。
AF_DEC -> Integer
PF_DEC -> Integer
-
[TODO]
DECnet protocol。 Socket.open の第一引数 domain に使用します。
AF_DLI -> Integer
PF_DLI -> Integer
-
[TODO]
DEC Direct data link interface。 Socket.open の第一引数 domain に使用します。
AF_E164 -> Integer
-
[TODO]
CCITT E.164 recommendation。 Socket.open の第一引数 domain に使用します。
AF_ECMA -> Integer
PF_ECMA -> Integer
-
[TODO]
European computer manufacturers。 Socket.open の第一引数 domain に使用します。
AF_HYLINK -> Integer
PF_HYLINK -> Integer
-
[TODO]
NSC Hyperchannel。 Socket.open の第一引数 domain に使用します。
AF_IMPLINK -> Integer
PF_IMPLINK -> Integer
-
[TODO]
ARPANET IMP。 Socket.open の第一引数 domain に使用します。
AF_INET -> Integer
PF_INET -> Integer
-
IPv4。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] sys/socket.h(header), socket(2freebsd), ip(7linux)
AF_INET6 -> Integer
PF_INET6 -> Integer
-
IPv6。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] sys/socket.h(header), socket(2freebsd), ipv6(7linux)
AF_IPX -> Integer
PF_IPX -> Integer
-
IPX(Novell Internet Packet eXchange protocol)。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] socket(3linux)
AF_ISDN -> Integer
PF_ISDN -> Integer
-
[TODO]
Integrated Services Digital Network。 Socket.open の第一引数 domain に使用します。
AF_ISO -> Integer
AF_OSI -> Integer
PF_ISO -> Integer
PF_OSI -> Integer
-
[TODO]
ISO Open Systems Interconnection protocols。 Socket.open の第一引数 domain に使用します。
AF_LAT -> Integer
PF_LAT -> Integer
-
[TODO]
Local Area Transport protocol。 Socket.open の第一引数 domain に使用します。
AF_LINK -> Integer
PF_LINK -> Integer
-
[TODO]
Link layer interface。 Socket.open の第一引数 domain に使用します。
AF_LOCAL -> Integer
AF_UNIX -> Integer
PF_LOCAL -> Integer
PF_UNIX -> Integer
-
Unix domain socket。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] sys/socket.h(header), unix(7linux)
AF_MAX -> Integer
-
対象のプラットフォーム上でのアドレスファミリーの最大の数値。
[SEE_ALSO] Socket::Constants::PF_MAX
AF_NATM -> Integer
PF_NATM -> Integer
-
[TODO]
Native ATM access。 Socket.open の第一引数 domain に使用します。
AF_NDRV -> Integer
PF_NDRV -> Integer
-
[TODO]
Network driver raw access。 Socket.open の第一引数 domain に使用します。
AF_NETBIOS -> Integer
PF_NETBIOS -> Integer
-
[TODO]
NetBIOS。 Socket.open の第一引数 domain に使用します。
AF_NETGRAPH -> Integer
PF_NETGRAPH -> Integer
-
Netgraph sockets。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] socket(2freebsd)
AF_NS -> Integer
PF_NS -> Integer
-
[TODO]
XEROX NS protocol。 Socket.open の第一引数 domain に使用します。
AF_PPP -> Integer
PF_PPP -> Integer
-
[TODO]
Point-to-Point Protocol。 Socket.open の第一引数 domain に使用します。
AF_PUP -> Integer
PF_PUP -> Integer
-
PUP(PARC Universal Packet)。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] socket(2freebsd)
AF_ROUTE -> Integer
PF_ROUTE -> Integer
-
[TODO]
Internal Routing protocol。 Socket.open の第一引数 domain に使用します。
[TODO]
AF_SIP -> Integer
PF_SIP -> Integer
-
[TODO]
Simple Internet Protocol。 Socket.open の第一引数 domain に使用します。
AF_SNA -> Integer
PF_SNA -> Integer
-
[TODO]
IBM SNA protocol。 Socket.open の第一引数 domain に使用します。
AF_SYSTEM -> Integer
PF_SYSTEM -> Integer
-
[TODO]
Socket.open の第一引数 domain に使用します。
AF_UNSPEC -> Integer
-
アドレスファミリー不定。
[SEE_ALSO] Socket.open, sys/socket.h(header)
AI_ADDRCONFIG -> Integer
-
Accept only if any address is assigned。
Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getaddrinfo(3)
AI_ALL -> Integer
-
Allow all addresses。
Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getaddrinfo(3)
AI_CANONNAME -> Integer
-
Fill in the canonical name。
Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getaddrinfo(3)
AI_DEFAULT -> Integer
-
Default flags for getaddrinfo。
Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getipnodebyname(3freebsd)
AI_MASK -> Integer
-
[TODO]
AI_NUMERICHOST -> Integer
-
Prevent host name resolution。
Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getaddrinfo(3)
AI_PASSIVE -> Integer
-
Get address to use with bind。
Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getaddrinfo(3)
AI_V4MAPPED -> Integer
-
Accept IPv4-mapped IPv6 addresses。
Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getaddrinfo(3)
AI_V4MAPPED_CFG -> Integer
-
Accept IPv4 mapped addresses if the kernel supports it。
Socket.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getipnodebyname(3freebsd)
APPEND -> Integer
-
追記モードでファイルを開くときに指定します。 File.openで使用します。
CREAT -> Integer
-
ファイルがなければ作成するよう指定します。 File.openで使用します。
EAI_ADDRFAMILY -> Integer
-
Address family for hostname not supported
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EAI_AGAIN -> Integer
-
Temporary failure in name resolution
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EAI_BADFLAGS -> Integer
-
Invalid flags
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EAI_BADHINTS -> Integer
-
Invalid value for hints
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
EAI_FAIL -> Integer
-
Non-recoverable failure in name resolution
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EAI_FAMILY -> Integer
-
Address family not supported
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EAI_MAX -> Integer
-
EAI_* 定数の最大値。
EAI_MEMORY -> Integer
-
Memory allocation failure
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EAI_NODATA -> Integer
-
No address associated with hostname
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux)
EAI_NONAME -> Integer
-
Hostname nor servname, or not known
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EAI_PROTOCOL -> Integer
-
Resolved protocol is unknown
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EAI_SERVICE -> Integer
-
Servname not supported for socket type
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EAI_SOCKTYPE -> Integer
-
Socket type not supported
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを SocketError に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EAI_SYSTEM -> Integer
-
System error returned in errno
getaddrinfo(3), getnameinfo(3) などの エラーコードです。 対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは エラーを適当な例外に変換するため、この定数は直接は利用しません。
[SEE_ALSO] getaddrinfo(3linux), gai_strerror(3freebsd)
EXCL -> Integer
-
CREATと併用し、もしファイルが既にある場合には失敗します。 File.openで使用します。
FNM_CASEFOLD -> Integer
-
アルファベットの大小文字を区別せずにパターンマッチを行います。 File.fnmatch, Dir.globで使用します。
FNM_DOTMATCH -> Integer
-
ワイルドカード `*', `?', `[]' が先頭の `.' にマッチするようになります。 File.fnmatch, Dir.globで使用します。
1.8.0以前では、FNM_DOTMATCHという名前でした。
FNM_NOESCAPE -> Integer
-
エスケープ文字 `\' を普通の文字とみなします。 File.fnmatch, Dir.globで使用します。
FNM_PATHNAME -> Integer
-
ワイルドカード `*', `?', `[]' が `/' にマッチしなくなります。 シェルのパターンマッチにはこのフラグが使用されています。 File.fnmatch, Dir.globで使用します。
FNM_SYSCASE -> Integer
-
case hold なファイルシステムの場合、FNM_CASEFOLD の値になり、そうでなければゼロの値になります。 File.fnmatch, Dir.globで使用します。
INADDR_ALLHOSTS_GROUP -> Integer
-
Multicast group for all systems on this subset。 IPv4の 244.0.0.1 に対応する整数です。
[SEE_ALSO] http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml, [RFC5771]
INADDR_ANY -> Integer
-
A socket bound to INADDR_ANY receives packets from all interfaces and sends from the default IP address。 IPv4アドレスの 0.0.0.0 に対応する整数です。
[SEE_ALSO] netinet/in.h(header), ip(7linux), ip(4freebsd)
INADDR_BROADCAST -> Integer
-
The network broadcast address。 IPv4のブロードキャストアドレス 255.255.255.255 に対応する整数です。
[SEE_ALSO] netinet/in.h(header), ip(7linux), ip(4freebsd)
INADDR_LOOPBACK -> Integer
-
The loopback address。 IPv4のループバックアドレス 127.0.0.1 に対応する整数です。
[SEE_ALSO] ip(7linux), ip(4freebsd)
INADDR_MAX_LOCAL_GROUP -> Integer
-
The last local network multicast group。 IPv4の 244.0.0.255 に対応する整数です。
[SEE_ALSO] http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml, [RFC5771]
INADDR_NONE -> Integer
-
A bitmask for matching no valid IP address。 エラーを表すアドレス値です。
INADDR_UNSPEC_GROUP -> Integer
-
The reserved multicast group。 IPv4の 244.0.0.0 に対応する整数です。
[SEE_ALSO] http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml, [RFC5771]
IPPORT_RESERVED -> Integer
-
利用法が予約されているポート番号の最大値。
IPPORT_USERRESERVED -> Integer
-
ユーザが自由に利用して良いポート番号の最小値。
IPPROTO_BIP -> Integer
-
[TODO]
BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IPPROTO_EGP -> Integer
-
[TODO]
Exterior Gateway Protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IPPROTO_EON -> Integer
-
[TODO]
ISO cnlp。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IPPROTO_GGP -> Integer
-
[TODO]
Gateway to Gateway Protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IPPROTO_HELLO -> Integer
-
[TODO]
"hello" routing protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IPPROTO_ICMP -> Integer
-
Control message protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
[SEE_ALSO] netinet/in.h(header) icmp(4freebsd), icmp(7linux)
IPPROTO_IDP -> Integer
-
[TODO]
XNS IDP。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IPPROTO_IGMP -> Integer
-
[TODO]
Group Management Protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IPPROTO_IP -> Integer
-
Internet protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
[SEE_ALSO] netinet/in.h(header) ip(4freebsd), ip(7linux)
IPPROTO_MAX -> Integer
-
IPPROTO 定数の最大値。
IPPROTO_ND -> Integer
-
[TODO]
Sun net disk protocol BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IPPROTO_PUP -> Integer
-
[TODO]
PARC Universal Packet protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IPPROTO_RAW -> Integer
-
Raw IP packets protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
[SEE_ALSO] netinet/in.h(header) ip(4freebsd), raw(7linux)
IPPROTO_TCP -> Integer
-
Transmission control protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
[SEE_ALSO] netinet/in.h(header) tcp(4freebsd), tcp(7linux)
IPPROTO_TP -> Integer
-
[TODO]
ISO transport protocol class 4。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IPPROTO_UDP -> Integer
-
User Datagram Protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
[SEE_ALSO] netinet/in.h(header) udp(4freebsd), udp(7linux)
IPPROTO_XTP -> Integer
-
[TODO]
Xpress Transport Protocol。 BasicSocket#getsockopt, BasicSocket#setsockopt の level 引数に使用します。
また、Socket.open の protocol 引数に渡す利用法もあります。
IP_ADD_MEMBERSHIP -> Integer
-
Add a multicast group membership
BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd), ip(7linux)
IP_DEFAULT_MULTICAST_LOOP -> Integer
-
[TODO]
Default multicast loopback
IP_DEFAULT_MULTICAST_TTL -> Integer
-
[TODO]
Default multicast TTL
IP_DROP_MEMBERSHIP -> Integer
-
Drop a multicast group membership。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd), ip(7linux)
IP_HDRINCL -> Integer
-
Header is included with data。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd)
IP_MAX_MEMBERSHIPS -> Integer
-
Maximum number multicast groups a socket can join。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd)
IP_MULTICAST_IF -> Integer
-
IP multicast interface。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd), ip(7linux)
IP_MULTICAST_LOOP -> Integer
-
IP multicast loopback。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd), ip(7linux)
IP_MULTICAST_TTL -> Integer
-
IP multicast TTL。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd), ip(7linux)
IP_OPTIONS -> Integer
-
IP options to be included in packets。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd), ip(7linux)
IP_RECVDSTADDR -> Integer
-
Receive IP destination address with datagram。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd)
IP_RECVOPTS -> Integer
-
Receive IP destination address with datagram。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(7linux)
IP_RECVRETOPTS -> Integer
-
[TODO]
Receive all IP options for response
IP_RETOPTS -> Integer
-
IP options to be included in datagrams。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(7linux)
IP_TOS -> Integer
-
IP type-of-service。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd), ip(7linux)
IP_TTL -> Integer
-
IP time-to-live。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_IP, ip(4freebsd), ip(7linux)
LOCK_EX -> Integer
-
排他ロック。同時にはただひとつのプロセスだけがロックを保持できます。 File#flock で使用します。
LOCK_NB -> Integer
-
ロックの際にブロックしない。他の指定と or することで指定します。 File#flock で使用します。
LOCK_SH -> Integer
-
共有ロック。複数のプロセスが同時にロックを共有できます。 File#flock で使用します。
LOCK_UN -> Integer
-
アンロック。File#flock で使用します。
MSG_COMPAT -> Integer
-
[TODO]
End of record
MSG_CTRUNC -> Integer
-
Control data lost before delivery。
BasicSocket#send, BasicSocket#sendmsg, BasicSocket#recv, BasicSocket#recvmsg の flags 引数に用います。
[SEE_ALSO] sys/socket.h(header), send(2linux), recv(2linux), send(2freebsd), recv(2freebsd),
MSG_DONTROUTE -> Integer
-
Send without using the routing tables。
BasicSocket#send, BasicSocket#sendmsg の flags 引数に用います。
[SEE_ALSO] sys/socket.h(header), send(2linux) send(2freebsd)
MSG_DONTWAIT -> Integer
-
This message should be non-blocking。
BasicSocket#send, BasicSocket#sendmsg, BasicSocket#recv, BasicSocket#recvmsg の flags 引数に用います。
[SEE_ALSO] send(2linux), recv(2linux), recv(2freebsd),
MSG_EOF -> Integer
-
Data completes connection。
BasicSocket#send, BasicSocket#sendmsg, BasicSocket#recv, BasicSocket#recvmsg の flags 引数に用います。
[SEE_ALSO] send(2freebsd)
MSG_EOR -> Integer
-
Data completes record。
BasicSocket#send, BasicSocket#sendmsg, BasicSocket#recv, BasicSocket#recvmsg の flags 引数に用います。
[SEE_ALSO] sys/socket.h(header), send(2), sendto(2), sendmsg(2), recv(2), recvfrom(2), recvmsg(2), send(2linux), recv(2linux), send(2freebsd), recv(2freebsd),
MSG_FLUSH -> Integer
-
[TODO]
Start of a hold sequence. Dumps to so_temp
MSG_HAVEMORE -> Integer
-
[TODO]
Data ready to be read
MSG_HOLD -> Integer
-
[TODO]
Hold fragment in so_temp
MSG_OOB -> Integer
-
Process out-of-band data。
BasicSocket#send, BasicSocket#sendmsg, BasicSocket#recv, BasicSocket#recvmsg の flags 引数に用います。
[SEE_ALSO] sys/socket.h(header), send(2), sendto(2), sendmsg(2), recv(2), recvfrom(2), recvmsg(2), send(2linux), recv(2linux), send(2freebsd), recv(2freebsd),
MSG_PEEK -> Integer
-
Peek at incoming message。
BasicSocket#send, BasicSocket#sendmsg, BasicSocket#recv, BasicSocket#recvmsg の flags 引数に用います。
[SEE_ALSO] sys/socket.h(header), send(2), sendto(2), sendmsg(2), recv(2), recvfrom(2), recvmsg(2), send(2linux), recv(2linux), send(2freebsd), recv(2freebsd),
MSG_RCVMORE -> Integer
-
[TODO]
Data remains in the current packet
MSG_SEND -> Integer
-
[TODO]
Send the packet in so_temp
MSG_TRUNC -> Integer
-
Data discarded before delivery。
BasicSocket#send, BasicSocket#sendmsg, BasicSocket#recv, BasicSocket#recvmsg の flags 引数に用います。
[SEE_ALSO] sys/socket.h(header), send(2linux), recv(2linux), send(2freebsd), recv(2freebsd),
MSG_WAITALL -> Integer
-
Wait for full request or error
BasicSocket#recv, BasicSocket#recvmsg の flags 引数に用います。
[SEE_ALSO] sys/socket.h(header), recv(2), recvfrom(2), recvmsg(2), recv(2linux), recv(2freebsd),
NI_DGRAM -> Integer
-
The service specified is a datagram service (looks up UDP ports)。
Socket.getnameinfo, Addrinfo#getnameinfo の引数 flags に渡す 定数です。
Socket.getnameinfo([ Socket::AF_INET, 514, "127.0.0.1"], Socket::NI_DGRAM) # => ["localhost", "syslog"] Socket.getnameinfo([ Socket::AF_INET, 514, "127.0.0.1"]) # => ["localhost", "shell"]
[SEE_ALSO] getnameinfo(3)
NI_MAXHOST -> Integer
-
getnameinfo(3) で用いるホスト名文字列の最大長さ。
[SEE_ALSO] getnameinfo(3linux)
NI_MAXSERV -> Integer
-
getnameinfo(3) で用いるサービス名文字列の最大長さ。
[SEE_ALSO] getnameinfo(3linux)
NI_NAMEREQD -> Integer
-
A name is required。名前解決できなかった場合にエラーを返すことを意味します。
Socket.getnameinfo, Addrinfo#getnameinfo の引数 flags に渡す 定数です。
# ここでは 192.0.2.18 は名前解決できないアドレス Addrinfo.tcp("192.0.2.18", 514).getnameinfo() # =>["192.0.2.18", "shell"] Addrinfo.tcp("192.0.2.18", 514).getnameinfo(Socket::NI_NAMEREQD) # SocketError が発生する
[SEE_ALSO] getnameinfo(3)
NI_NOFQDN -> Integer
-
An FQDN is not required for local hosts, return only the local part.
Socket.getnameinfo, Addrinfo#getnameinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getnameinfo(3)
NI_NUMERICHOST -> Integer
-
Return a numeric address.
Socket.getnameinfo, Addrinfo#getnameinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getnameinfo(3)
NI_NUMERICSERV -> Integer
-
Return the service name as a digit string
Socket.getnameinfo, Addrinfo#getnameinfo の引数 flags に渡す 定数です。
[SEE_ALSO] getnameinfo(3)
NOCTTY -> Integer
-
自身がTTY制御しないようにTTYを開きます。 File.openで使用します。
NONBLOCK -> Integer
-
ファイルが利用可能じゃなくてもブロックしません。 File.openで使用します。
PF_KEY -> Integer
-
Internal key-management function。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] socket(2freebsd)
PF_MAX -> Integer
-
プロトコルファミリーの最大数。
[SEE_ALSO] Socket::Constants::AF_MAX
PF_PIP -> Integer
-
Help Identify PIP packets。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] socket(2freebsd)
PF_RTIP -> Integer
-
Help Identify RTIP packets。 Socket.open の第一引数 domain に使用します。
[SEE_ALSO] socket(2freebsd)
PF_UNSPEC -> Integer
-
プロトコルファミリー不定。
[SEE_ALSO] Socket::Constants::AF_UNSPEC, Socket.open
PF_XTP -> Integer
-
[TODO]
eXpress Transfer Protocol。
RDONLY -> Integer
-
読み込みのみのモードでファイルを開くときに指定します。 File.openで使用します。
RDWR -> Integer
-
読み書き両方のモードでファイルを開くときに指定します。 File.openで使用します。
SEEK_CUR -> Fixnum
-
IO#seek を参照してください。
SEEK_END -> Fixnum
-
IO#seek を参照してください。
SEEK_SET -> Fixnum
-
IO#seek を参照してください。
SHUT_RD -> Integer
-
BasicSocket#shutdown の how 引数に使用します。
SHUT_RDWR -> Integer
-
BasicSocket#shutdown の how 引数に使用します。
SHUT_WR -> Integer
-
BasicSocket#shutdown の how 引数に使用します。
SOCK_DGRAM -> Integer
-
データグラム通信。 Socket.open の第二引数 type に使用します。
[SEE_ALSO] socket(2), Socket.open
SOCK_PACKET -> Integer
-
デバイスレベルインターフェース。Obsoleteであり使うべきではない。 Socket.open の第二引数 type に使用します。
[SEE_ALSO] packet(7linux), Socket.open
SOCK_RAW -> Integer
-
RAW ソケット。 Socket.open の第二引数 type に使用します。
[SEE_ALSO] sys/socket.h(header), socket(2linux), raw(7linux), Socket.open
SOCK_RDM -> Integer
-
信頼性のあるデータグラム通信。 Socket.open の第二引数 type に使用します。
[SEE_ALSO] socket(2linux), Socket.open
SOCK_SEQPACKET -> Integer
-
固定最大長を持つストリーム通信。 Socket.open の第二引数 type に使用します。
[SEE_ALSO] Socket.open, socket(2), socket(2linux), socket(2freebsd)
SOCK_STREAM -> Integer
-
ストリーム通信。 Socket.open の第二引数 type に使用します。
[SEE_ALSO] Socket.open, socket(2), socket(2linux), socket(2freebsd)
SOL_ATALK -> Integer
-
[TODO]
AppleTalk socket options。 BasicSocket#getsockopt, BasicSocket#setsockopt の第一引数(level)に使用します。
SOL_AX25 -> Integer
-
[TODO]
AX.25 socket options。 BasicSocket#getsockopt, BasicSocket#setsockopt の第一引数(level)に使用します。
SOL_IP -> Integer
-
IP socket options。 BasicSocket#getsockopt, BasicSocket#setsockopt の第一引数(level)に使用します。
SOL_IP はポータブルではありません。 IPPROTO_IP のほうがよりポータブルです。
[SEE_ALSO] getsockopt(2), setsockopt(2), ip(7linux) Socket::Constants::IPPROTO_IP
SOL_IPX -> Integer
-
[TODO]
IPX socket options。 BasicSocket#getsockopt, BasicSocket#setsockopt の第一引数(level)に使用します。
SOL_SOCKET -> Integer
-
Socket level options。 BasicSocket#getsockopt, BasicSocket#setsockopt の第一引数(level)に使用します。
[SEE_ALSO] getsockopt(2), setsockopt(2), sys/socket.h(header), socket(7linux) getsockopt(2freebsd)
SOL_TCP -> Integer
-
TCP socket options。 BasicSocket#getsockopt, BasicSocket#setsockopt の第一引数(level)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_TCP
SOL_UDP -> Integer
-
UDP socket options。 BasicSocket#getsockopt, BasicSocket#setsockopt の第一引数(level)に使用します。
[SEE_ALSO] Socket::Constants::IPPROTO_UDP
SOPRI_BACKGROUND -> Integer
-
[TODO]
Background socket priority
SOPRI_INTERACTIVE -> Integer
-
[TODO]
Interactive socket priority
SOPRI_NORMAL -> Integer
-
Normal socket priority
[TODO]
SO_ACCEPTCONN -> Integer
-
Socket has had listen() called on it。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_ACCEPTFILTER -> Integer
-
set accept filter on listening socket。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] getsockopt(2freebsd), Socket::Constants::SOL_SOCKET
SO_ATTACH_FILTER -> Integer
-
Attach socket filter。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] socket(7linux), http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/networking/filter.txt;hb=HEAD, Socket::Constants::SOL_SOCKET
SO_BINDTODEVICE -> Integer
-
Bind this socket to a particular device。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] socket(7linux), Socket::Constants::SOL_SOCKET
SO_BROADCAST -> Integer
-
Permit sending of broadcast messages。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_DEBUG -> Integer
-
Debug info recording。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_DETACH_FILTER -> Integer
-
Detach socket filter。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] socket(7linux), http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=Documentation/networking/filter.txt;hb=HEAD, Socket::Constants::SOL_SOCKET
SO_DONTROUTE -> Integer
-
Send without using the routing tables。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_DONTTRUNC -> Integer
-
[TODO]
Retain unread data
SO_ERROR -> Integer
-
Get socket error status。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_KEEPALIVE -> Integer
-
Keep connections alive。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_LINGER -> Integer
-
Linger on close if data is present。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux),Socket::Constants::SOL_SOCKET
SO_NKE -> Integer
-
[TODO]
socket-level Network Kernel Extension。
SO_NOSIGPIPE -> Integer
-
Don't SIGPIPE on EPIPE。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] getsockopt(2freebsd), Socket::Constants::SOL_SOCKET
SO_NO_CHECK -> Integer
-
[TODO]
Disable checksums。
SO_NREAD -> Integer
-
[TODO]
Get first packet byte count。
SO_OOBINLINE -> Integer
-
Leave received out-of-band data in-line。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_PASSCRED -> Integer
-
Receive SCM_CREDENTIALS messages。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] socket(7linux), unix(7linux), Socket::Constants::SOL_SOCKET
SO_PEERCRED -> Integer
-
The credentials of the foreign process connected to this socket。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] socket(7linux), unix(7linux), socketpair(2linux), Socket::Constants::SOL_SOCKET
SO_PEERNAME -> Integer
-
[TODO]
Name of the connecting user。
SO_PRIORITY -> Integer
-
The protocol-defined priority for all packets on this socket。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] socket(7linux), ip(7linux)
SO_RCVBUF -> Integer
-
Receive buffer size。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_RCVLOWAT -> Integer
-
Receive low-water mark。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_RCVTIMEO -> Integer
-
Receive timeout。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux)
SO_REUSEADDR -> Integer
-
Allow local address reuse。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), bind(2), Socket::Constants::SOL_SOCKET
SO_REUSEPORT -> Integer
-
Allow local address and port reuse。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] getsockopt(2freebsd), Socket::Constants::SOL_SOCKET
SO_SECURITY_AUTHENTICATION -> Integer
-
[TODO]
SO_SECURITY_ENCRYPTION_NETWORK -> Integer
-
[TODO]
SO_SECURITY_ENCRYPTION_TRANSPORT -> Integer
-
[TODO]
SO_SNDBUF -> Integer
-
Send buffer size。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_SNDLOWAT -> Integer
-
Receive low-water mark。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_SNDTIMEO -> Integer
-
Send timeout。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_TIMESTAMP -> Integer
-
Receive timestamp with datagrams (timeval)。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET Socket::AncillaryData#timestamp
SO_TYPE -> Integer
-
Get the socket type。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] sys/socket.h(header), getsockopt(2freebsd), socket(7linux), Socket::Constants::SOL_SOCKET
SO_USELOOPBACK -> Integer
-
[TODO]
Bypass hardware when possible。
SO_WANTMORE -> Integer
-
[TODO]
Give a hint when more data is ready。
SO_WANTOOBFLAG -> Integer
-
[TODO]
OOB data is wanted in MSG_FLAG on receive。
SYNC -> Integer
-
ファイルを同期モードで開きます。 open(2) で O_SYNCが指定できる場合に使えます。 File.openで使用します。
TCP_MAXSEG -> Integer
-
Set maximum segment size。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] tcp(4freebsd), tcp(7linux)
TCP_NODELAY -> Integer
-
Don't delay sending to coalesce packets。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
[SEE_ALSO] tcp(4freebsd), tcp(7linux), netinet/tcp.h(header)
TRUNC -> Integer
-
もしファイルが存在するなら、中身を抹消してサイズをゼロにします。 File.openで使用します。
WRONLY -> Integer
-
書き込みのみのモードでファイルを開くときに指定します。 File.openで使用します。