PStore

将Ruby对象存入外部文件时使用的类。该类内部使用了Marshal

用法

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
  p db["root"]
end

必须在transaction块内部访问数据库。其接口类似于Hash。

类方法

PStore.new(file)

file文件用作数据库来进行读写。file所在目录必须是可写入的。因为更新数据库时需要生成备份文件。备份文件名是由文件名+~

方法

PStore#transaction {|pstore| ... }
PStore#transaction(read_only=false) {|pstore| ... } ((<ruby 1.7 feature>))

进入处理过程块。 只能在该块中读写数据库。

ruby 1.7 特性: 在1.7中可使用读入专用处理过程。

PStore#[name]

取得与根name相对应的值。相当于Hash#[]

PStore#[name] = value

value赋值给与根name相对应的值。相当于Hash#[]=

PStore#fetch(name[, default])

取得与根name相对应的值。若尚未登记该根时,如果给出了参数default就返回它的值,如果没给出该参数就引发PStore::Error异常。相当于Hash#fetch

PStore#delete(name)

删除与根name相对应的值。相当于Hash#delete

PStore#roots

以数组形式返回根的集合。相当于Hash#keys

PStore#root?(name)

检测name是否是根。相当于Hash#key?

PStore#path

取得数据库的文件名。

PStore#commit

停止读写数据库。即脱离transaction块。同时,它会反映出数据库的更新。

PStore#abort

停止读写数据库。 虽然脱离了transaction块,但它不会反映出数据库的更新。

私有方法

PStore#in_transaction

若非处于处理过程块内部的话,就引发异常。