GDBM

GDBMファイルをアクセスするクラス。キー、データともに文字列でなければな らないという制限と、データがファイルに保存されるという点を除いては Hashクラスと全く同様に扱うことがでます。

スーパークラス:

インクルードしているモジュール:

クラスメソッド:

new(dbname[, mode[, flags]])
open(dbname[, mode[, flags]])
open(dbname[, mode[, flags]]) {|db| ...}

dbnameで指定したデータベースをモードを modeに設定してオープンします。modeの省 略値は0666です。modeとしてnilを指定 するとデータベースが存在しない時には新たなデータベースを作らず nilを返します。

flags には、GDBM::FAST, GDBM::SYNC, GDBM::NOLOCK を の論理和を指定します。デフォルト値は指定なし(つまり0)です。

ブロックを指定した場合、オープンしたGDBMオブジェクトを 引数にブロックを実行します。実行後GDBMオブジェクトをクローズ し、openメソッドはブロックの結果を返します。これはちょうど 以下と同じです。

dbm = GDBM.open(file)
begin
  yield dbm
ensure
  dbm.close
end

メソッド:

self[key]

keyをキーとする値を返します。

self[key]=value

keyをキーとして、valueを格納します。

cachesize = size
clear

DBMファイルを空にします。

close

DBMファイルをクローズします。以後の操作は例外を発生させます。

delete(key)
delete(key) {|key| ... }

keyをキーとする項目を削除します。

指定したキーが存在しなければnilを返します、このとき ブロックを指定していれば、ブロックを評価します。

delete_if { |key, value| ... }
reject! { |key, value| ... }

ブロックを評価した値が真であれば該当する項目を削除します。

each {|key, value| ... }
each_pair {|key, value| ... }

各要素に対するイテレータ。

each_key {|key| ... }

全てのkeyに対して繰り返すイテレータ。

each_value {|value| ... }

全てのvalueに対して繰り返すイテレータ。

empty?

データベースが空の時、真を返します。

fastmode = bool
syncmode = bool

オープンしているGDBMオブジェクトのモードを変更します。下記の定数 GDBM::FAST、GDBM::SYNC を参照してください。

fetch(key[,ifnone])
fetch(key) {|key| ... }

ハッシュと同じ

has_key?(key)
key?(key)
include?(key)
member?(key)

keyがデータベース中に存在する時、真を返します。

has_value?(key)
value?(value)

valueを値とする組がデータベース中に存在する時、真を返します。

index(val)

ハッシュと同じ

indexes(key_1, ... )
indices(key_1, ... )

各引数の値をキーとする要素を含む配列を返します。

invert

値からキーへのハッシュを返します。

keys

データベース中に存在するキー全てを含む配列を返します。

length
size

データベース中の要素の数を返します。(注意:現在の実現では要素数を数 えるためにデータベースを全部検索します)

reject {|key, value| ... }

self.to_hash.reject と同じです。ハッシュを返します。

reorganize

GDBMでは、要素の削除を行ってもDBファイルのサイズは減少しません(削 除によって空いた領域は次の格納のために取っておかれます、)。このメ ソッドを呼び出すことでDBMファイルを新規に作り直し無駄な領域をなく すことができます。

大量の削除を行ったときに、ディスクスペースの節約のために使用します。

replace(other)

DBMの内容を other の内容で置き換えます。 other は each_pair メソッドを持つオブジェクトで なければなりません。

shift

データベース中の要素を一つ取り出し、データベースから削除します。

store(key, val)

self[key]=val と同じです。keyに対してvalを格納します。

sync

要素の変更をファイルに反映します。FASTモード (GDBM#open() の第3引数にGDBM::FAST を指定)のときだけ意味があります。

注) GNU gdbm version 1.8 以降よりFASTモードがデフォルトになりました。

to_a

DBMの各要素を格納した配列を返します。返される配列の1つの要素は [key, val] です。(つまり配列の配列を返します)。

to_hash

DBMの各要素を格納したハッシュを返します。

update(other)

DBMとotherの内容をマージします。重複するキーに対応する値は otherの内容で上書きされます。

otherは each_pair メソッドを持つオブジェクトでなければなりま せん。

values

データベース中に存在する値全てを含む配列を返します。

定数

GDBM::VERSION

libgdbm のバージョン情報の文字列です。

以下の定数は open の第3引数に指定します。

GDBM::FAST

書き込みの結果が、ディスク上のファイルにすぐに反映しなくなります。 このモードのときに結果を明示的にファイルに反映させるには GDBM#sync メソッドを呼びます。libgdbm version 1.8.0 以降ではこのモードがデフォルト です。

GDBM::SYNC

書き込みの結果が、ディスク上のファイルにすぐに反映されます。 libgdbm version 1.8.0 以前のデフォルトモードです。

この定数は libgdbm version 1.8.0 以降より有効です

GDBM::NOLOCK

通常、他のプロセスがDBをオープンしている最中にオープンを行うと Errno::EWOULDBLOCK(またはErrno::EAGAIN)例外が発生します。このフラグを 指定していれば、他のプロセスがオープンしている最中でも同時オープンする ことができます。

この定数は libgdbm version 1.8.0 以降より有効です。