Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > gdbmライブラリ > GDBMクラス
class GDBM
クラスの継承リスト: GDBM < Enumerable < Object < Kernel < BasicObject
Abstract
GDBM ファイルをアクセスするクラス。
キー、データともに文字列でなければならないという制限と、 データがファイルに保存されるという点を除いては Hash クラスと 全く同様に扱うことができます。
特異メソッド
new(dbname, mode = 0666, flags = 0) -> GDBM
open(dbname, mode = 0666, flags = 0) -> GDBM
open(dbname, mode = 0666, flags = 0) {|db| ... } -> ()
-
dbname で指定したデータベースをモードを mode に設定してオープンします。
mode の省略値は 0666 です。mode として nil を指定 するとデータベースが存在しない時には新たなデータベースを作らず nil を返します。
flags には、GDBM::FAST, GDBM::SYNC, GDBM::NOLOCK の論理和を指定します。デフォルト値は指定なし(つまり0)です。
flags に GDBM::READER, GDBM::WRITER, GDBM::WRCREAT, GDBM::NEWDB のどれかを与えて読み書きのモードを指定できます。 これらをどれも指定しなかった場合には、 GDBM::WRCREAT, GDBM::WRITER, GDBM::READER の順で試します。
ブロックを指定した場合、オープンした GDBM オブジェクトを 引数にブロックを実行します。実行後 GDBM オブジェクトをクローズ し、open メソッドはブロックの結果を返します。これはちょうど 以下と同じです。
dbm = GDBM.open(file) begin yield dbm ensure dbm.close end
インスタンスメソッド
self[key] -> String
-
key をキーとする値を返します。
- [PARAM] key:
- キー。
self[key] = value
-
key をキーとして、value を格納します。
- [PARAM] key:
- キー。
- [PARAM] value:
- 格納する値。
cachesize=(size)
-
内部のキャッシュのサイズを指定します。
詳しくは gdbm の GDBM_CACHESIZE の項を参照ください。
- [PARAM] size:
- 新しい内部のキャッシュサイズ。
[SEE_ALSO] gdbm
clear -> self
-
DBM ファイルを空にします。
close -> nil
-
DBM ファイルをクローズします。
以後の操作は例外 RuntimeError を発生させます。
closed? -> bool
-
DBM ファイルが既に閉じられているかどうかを返します。
既に閉じられていれば true を返します。 そうでなければ false を返します。
delete(key) -> nil
delete(key) {|key| ... } -> ()
-
key をキーとする項目を削除します。
指定したキーが存在しなければ nil を返します。 このときブロックを指定していれば、ブロックを評価します。
delete_if { |key, value| ... } -> self
reject! { |key, value| ... } -> self
-
ブロックを評価した値が真であれば該当する項目を削除します。
このメソッドは self を破壊的に変更します。
each {|key, value| ... } -> self
each_pair {|key, value| ... } -> self
-
各要素に対するイテレータです。
each_key {|key| ... } -> self
-
全ての key に対して繰り返すイテレータです。
each_value {|value| ... } -> self
-
全ての value に対して繰り返すイテレータです。
empty? -> bool
-
データベースが空の時、真を返します。
fastmode=(bool) -> bool
-
オープンしている GDBM オブジェクトのモードを変更します。
このオプションはデフォルトで on です。 このオプションは obsolete です。
このオプションが on のときは、GDBM はディスクへの書き込みを待たずに 次の操作を続けます。
- [PARAM] bool:
- 新たにセットするモード。
[SEE_ALSO] GDBM::FAST, GDBM#syncmode=
fetch(key, ifnone = nil) {|key| ... } -> object
-
データベースから対応するキーを探してその要素の値を返します。
- [PARAM] key:
- 探索するキー。
- [PARAM] ifnone:
- 対応するキーが見つからなかった場合に返す値。
- [EXCEPTION] IndexError:
- ifnone が設定されていないときに、対応するキーが 見つからなかった場合に発生します。
require 'gdbm' db1 = GDBM.open('aaa.gdbm', 0666, GDBM::NEWDB) db1['a'] = 'aaa' db1['b'] = 'bbb' p db1.fetch('a') #=> 'aaa' p db1.fetch('z', 'zzz') #=> 'zzz' p db1.fetch('z'){|key| [:key, key] } #=> [:key, 'z'] p db1.fetch('z', 'zzz'){|key| [:key, key] } #=> 'zzz' p db1.fetch('z') #=> IndexError 発生
[SEE_ALSO] Hash#fetch
has_key?(key) -> bool
key?(key) -> bool
include?(key) -> bool
member?(key) -> bool
-
key がデータベース中に存在する時、真を返します。
has_value?(value) -> bool
value?(value) -> bool
-
value を値とする要素がデータベース中に存在する時、真を返します。
- [PARAM] value:
- 検索したい値。
index(val) -> String
-
値 val に対応するキーを返します。
対応する要素が存在しない時には nil を返します。 該当するキーが複数存在する場合、どのキーを返すかは不定です。
[SEE_ALSO] Hash#index
invert -> Hash
-
値からキーへのハッシュを返します。
require 'gdbm' db1 = GDBM.open('aaa.gdbm', 0666, GDBM::NEWDB) db1['a'] = 'aaa' db1['b'] = 'bbb' p db1.invert #=> {"aaa"=>"a", "bbb"=>"b"}
keys -> [String]
-
データベース中に存在するキー全てを含む配列を返します。
require 'gdbm' db1 = GDBM.open('aaa.gdbm', 0666, GDBM::NEWDB) db1['a'] = 'aaa' db1['b'] = 'bbb' p db1.keys #=> ["a", "b"]
length -> Integer
size -> Integer
-
データベース中の要素の数を返します。
現在の実現では要素数を数えるためにデータベースを全部検索します。
reject {|key, value| ... } -> Hash
-
ブロックを評価した値が真であれば該当する要素を削除します。
self.to_hash.reject{|key, value| ... }
と同じです。
[SEE_ALSO] Hash#reject
reorganize -> self
-
DB ファイルの再編成を行います。
GDBM では、要素の削除を行っても DB ファイルのサイズは減少しません(削 除によって空いた領域は次の格納のために取っておかれます)。 このメソッドを呼び出すことで DBM ファイルを新規に作り直し無駄な領域をなく すことができます。
大量の削除を行ったときに、ディスクスペースの節約のために使用します。
replace(other) -> self
-
self の内容を other の内容で置き換えます。
- [PARAM] other:
- each_pair メソッドを持つオブジェクトでなければなりません。
require 'gdbm' db1 = GDBM.open('aaa.gdbm', 0666, GDBM::NEWDB) db1['a'] = 'aaa' db1['b'] = 'bbb' db2 = GDBM.open('bbb.gdbm', 0666, GDBM::NEWDB) db2['c'] = 'ccc' db2['d'] = 'ddd' hash = { 'x' => 'xxx', 'y' => 'yyy'} p db1 #=> #<GDBM:0xb7d1c8a8> p db1.replace(db2) #=> #<GDBM:0xb7d1c8a8> p db1.replace(hash) #=> #<GDBM:0xb7d1c8a8>
select {|key, value| ... } -> [[String]]
-
ブロックを評価して真になった要素のみを配列に格納して返します。
require 'gdbm' db1 = GDBM.open('aaa.gdbm', 0666, GDBM::NEWDB) db1['a'] = 'aaa' db1['b'] = 'bbb' db1['c'] = 'ccc' p db1.select{ |key, value| key == 'a' } #=> [["a", "aaa"]] p db1.select{ |key, value| key != 'a' } #=> [["c", "ccc"], ["b", "bbb"]]
[SEE_ALSO] Hash#select
shift -> [String]
-
データベース中の要素を一つ取り出し、データベースから削除します。
require 'gdbm' db1 = GDBM.open('aaa.gdbm', 0666, GDBM::NEWDB) db1['a'] = 'aaa' db1['b'] = 'bbb' p db1.shift #=> ["a", "aaa"]
store(key, val) -> [String]
-
key に対して val を格納します。
[SEE_ALSO] [[m#GDBM#[]=]]
sync -> self
-
要素の変更をファイルに反映します。
FAST モード([[m#GDBM#open]] の第3引数に [[m#GDBM::FAST]] を指定)のときだけ意味があります。
注意
GNU gdbm version 1.8 以降より FAST モードがデフォルトになりました。
syncmode=(bool) -> bool
-
オープンしている GDBM オブジェクトのモードを変更します。
このオプションはデフォルトで off です。
このオプションが on のときは、GDBM はデータベースの変更操作ごとに データベースの状態を同期します。
- [PARAM] bool:
- 新たにセットするモード。
[SEE_ALSO] GDBM::SYNC, GDBM#fastmode=
to_a -> [[String]]
-
self の各要素を格納した配列を返します。
返される配列の1つの要素は [key, value] です。 つまり配列の配列を返します。
to_hash -> Hash
-
self の各要素を格納したハッシュを返します。
update(other) -> self
-
self と other の内容をマージします。
重複するキーに対応する値はother の内容で上書きされます。
- [PARAM] other:
- each_pair メソッドを持つオブジェクトでなければなりません。
values -> [String]
-
データベース中に存在する値全てを含む配列を返します。
values_at(*keys) -> [String]
-
keys に対応する値を配列に格納して返します。
- [UNKNOWN_META_INFO] @params:
- keys キー。複数指定可能です。
require 'gdbm' db1 = GDBM.open('aaa.gdbm', 0666, GDBM::NEWDB) db1['a'] = 'aaa' db1['b'] = 'bbb' db1['c'] = 'ccc' p db1.values_at('a', 'b') #=> ["aaa", "bbb"] p db1.values_at('x', 'y') #=> [nil, nil]
定数
FAST
-
GDBM.open の第3引数に指定します。
書き込みの結果が、ディスク上のファイルにすぐに反映しなくなります。 このモードのときに結果を明示的にファイルに反映させるには GDBM#sync メソッドを呼びます。libgdbm version 1.8.0 以降ではこのモードがデフォルト です。
NEWDB
-
GDBM.open の第3引数に指定します。
書き込みモードで、すでにファイルが存在したら削除してから作り直します。
NOLOCK
-
GDBM.open の第3引数に指定します。
通常、他のプロセスが DB をオープンしている最中にオープンを行うと [[m#Errno::EWOULDBLOCK]](または [[m#Errno::EAGAIN]]) 例外が発生します。 このフラグを指定していれば、他のプロセスがオープンしている最中でも同時 オープンすることができます。
この定数は libgdbm version 1.8.0 以降より有効です。
READER
-
GDBM.open の第3引数に指定します。
読み込みモードでオープンします。
SYNC
-
GDBM.open の第3引数に指定します。
書き込みの結果が、ディスク上のファイルにすぐに反映されます。 libgdbm version 1.8.0 以前のデフォルトモードです。
この定数は libgdbm version 1.8.0 以降より有効です。
VERSION
-
libgdbm のバージョン情報の文字列です。
WRCREAT
-
GDBM.open の第3引数に指定します。
書き込みモードで、すでにファイルが存在しなかったら作ります。
WRITER
-
GDBM.open の第3引数に指定します。
書き込みモードでオープンします。