class YAML::Store + PStore
クラスの継承リスト: YAML::Store < PStore < Object < Kernel < BasicObject
要約
PStore の YAML 版です。 Marshal.#dump したバイナリ形式の 代わりに YAML 形式でファイルに保存します。
使い方は PStore とほとんど同じです。 インターフェースは Hash に似ています。
特異メソッド
new(*options) -> YAML::Store
-
自身を初期化します。
YAML 形式のファイルを読み込ませたい場合は、最初の引数にファイル名を文字列で指定します。 最後の引数がハッシュであった場合は、YAML 出力時のオプションを変更します。
- [PARAM] options:
- 読み込ませたいファイルや、オプションを与えます。
[SEE_ALSO] Object#to_yaml
new(file, thread_safe = false) -> PStore
-
ファイル名 file に対してデータベースを読み書きします。
データベースを更新するときにバックアップファイルが作成されるため、 file のあるディレクトリは書き込み可能である必要があります。 データベースの更新が成功すると、バックアップファイルは削除されます。バックアップファイル名は ファイル名に ".tmp" および ".new" を付けたものです。
- [PARAM] file:
- データベースファイル名。
- [PARAM] thread_safe:
- 真を指定すると Mutex を用いてスレッドセーフになります。デフォルトは偽です。
インスタンスメソッド
self[name] -> object
-
ルートnameに対応する値を得ます。
- [PARAM] name:
- 探索するルート。
- [EXCEPTION] PStore::Error:
- トランザクション外でこのメソッドが呼び出された場合に発生します。
[SEE_ALSO] Hash#[]
self[name] = value
-
ルート name に対応する値 value をセットします。
- [PARAM] name:
- ルート。
- [PARAM] value:
- 格納する値。
- [EXCEPTION] PStore::Error:
- トランザクション外でこのメソッドが呼び出された場合に発生します。
[SEE_ALSO] Hash#[]=
abort -> ()
-
データベースの読み書きを終了します。
transaction ブロックから抜けますが、データベースの変更は反映されません。
- [EXCEPTION] PStore::Error:
- トランザクション外でこのメソッドが呼び出された場合に発生します。
例:
require 'pstore' db = PStore.new("/tmp/foo") db.transaction do p db.roots # => [] ary = db["root"] = [1,2,3,4] db.abort ary[0] = [1,1.5] # => ここは実行されない。 end db.transaction do |pstore| pstore["root"] # => nil end
commit -> ()
-
データベースの読み書きを終了します。
transaction ブロックから抜け、データベースの変更が反映されます。
- [EXCEPTION] PStore::Error:
- トランザクション外でこのメソッドが呼び出された場合に発生します。
例:
require 'pstore' db = PStore.new("/tmp/foo") db.transaction do p db.roots # => [] ary = db["root"] = [1,2,3,4] db.commit ary[0] = [1,1.5] # => ここは実行されない。 end db.transaction do |pstore| pstore["root"] # => [[1, 2, 3, 4] end
delete(name) -> object
-
ルートnameに対応する値を削除します。
- [PARAM] name:
- 探索するルート。
- [RETURN]
- 削除した値を返します。
- [EXCEPTION] PStore::Error:
- トランザクション外でこのメソッドが呼び出された場合に発生します。
例:
require 'pstore' db = PStore.new("/tmp/foo") db.transaction do p db.roots # => [] ary = db["root"] = [1,2,3,4] ary[0] = [1,1.5] end db.transaction do |pstore| pstore.delete("root") # => [[1, 1.5], 2, 3, 4] pstore.delete("root") # => nil end
[SEE_ALSO] Hash#delete
dump(table) -> String
-
YAML 形式の文字列を返します。
- [PARAM] table:
- 使用されません。
empty_marshal_checksum -> String
-
空のデータのチェックサムを返します。
empty_marshal_data -> String
-
空のデータを返します。
fetch(name, default = PStore::Error) -> object
-
ルートnameに対応する値を得ます。
該当するルートが登録されていない時には、 引数 default が与えられていればその値を返し、 与えられていなければ例外 PStore::Error が発生します。
- [PARAM] name:
- 探索するルート。
- [PARAM] default:
- name に対応するルートが登録されていない場合に返す値を指定する。
- [EXCEPTION] PStore::Error:
- name に対応するルートが登録されていないかつ、 default が与えられていない場合に発生します。 また、トランザクション外でこのメソッドが呼び出された場合に発生します。
例:
require 'pstore' db = PStore.new("/tmp/foo") db.transaction do p db.roots # => [] ary = db["root"] = [1,2,3,4] ary[0] = [1,1.5] end db.transaction(true) do |pstore| pstore.fetch("root") # => [[1, 1.5], 2, 3, 4] pstore.fetch("root", 'aaa') # => [[1, 1.5], 2, 3, 4] pstore.fetch("not_root") # => 例外発生 end
[SEE_ALSO] Hash#fetch, PStore#[]
load(content) -> object
-
YAML 形式の文字列からデータを読み込みます。
- [PARAM] content:
- YAML 形式の文字列を指定します。
marshal_dump_supports_canonical_option? -> false
-
YAML::Store では Marshal.#dump を使用しないので常に偽を返します。
path -> String
-
データベースのファイル名を得ます。
root?(name) -> bool
-
ルート name がデータベースに格納されている場合に真を返します。
- [PARAM] name:
- 探索するルート。
- [EXCEPTION] PStore::Error:
- トランザクション外でこのメソッドが呼び出された場合に発生します。
[SEE_ALSO] Hash#key?
roots -> Array
-
ルートの集合を配列で返します。
- [EXCEPTION] PStore::Error:
- トランザクション外でこのメソッドが呼び出された場合に発生します。
[SEE_ALSO] Hash#keys
transaction(read_only = false) {|pstore| ... } -> object
-
トランザクションに入ります。 このブロックの中でのみデータベースの読み書きができます。
読み込み専用のトランザクションが使用可能です。
- [PARAM] read_only:
- 真を指定すると、読み込み専用のトランザクションになります。
- [RETURN]
- ブロックで最後に評価した値を返します。
- [EXCEPTION] PStore::Error:
- read_only を真にしたときに、データベースを変更しようした場合に発生します。
例:
require 'pstore' db = PStore.new("/tmp/foo") db.transaction do p db.roots # => [] ary = db["root"] = [1,2,3,4] ary[0] = [1,1.5] end db.transaction(true) do |pstore| pstore["root"] = 'aaa' # => ここで例外発生 end
ultra_safe -> bool
-
真であれば、パフォーマンスと引き換えにファイル更新の衝突を避けることができます。 デフォルトは偽です。
このフラグの効果があるのは一部のプラットフォームだけです。 (e.g. all POSIX platforms: Linux, Mac OS X, FreeBSD, etc)
ultra_safe=(flag)
-
真をセットすると、パフォーマンスと引き換えにファイル更新の衝突を避けることができます。
このフラグの効果があるのは一部のプラットフォームだけです。 (e.g. all POSIX platforms: Linux, Mac OS X, FreeBSD, etc)
- [PARAM] flag:
- 真偽値を指定します。
privateメソッド
in_transaction -> ()
-
トランザクションの中でなければ例外を発生させます。
定数
EMPTY_MARSHAL_CHECKSUM -> String
-
内部で使用します。
EMPTY_MARSHAL_CHECKSUM -> String
-
内部で利用する定数です。
EMPTY_MARSHAL_DATA -> String
-
内部で使用します。
EMPTY_MARSHAL_DATA -> String
-
内部で利用する定数です。
EMPTY_STRING -> String
-
内部で利用する定数です。
RDWR_ACCESS -> Fixnum
-
内部で利用する定数です。
RD_ACCESS -> Fixnum
-
内部で利用する定数です。
WR_ACCESS -> Fixnum
-
内部で利用する定数です。