将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
若非处于处理过程块内部的话,就引发异常。