清除或删除 Ruby PStore
Clearing or Deleting a Ruby PStore
我一直在尝试使用 PStore 来保存相对大量的哈希值:
require "pstore"
store = PStore.new("data.pstore")
由于它存储在一个充满现在无用数据的文件中,我该如何以编程方式清除或删除 "store"?显然我可以只删除 store.pstore
文件,但我正在寻找的是 PStore 等价于:
DELETE FROM store WHERE 1=1;
您要找的是delete
:
store.transaction { store.delete(key) }
store = PStore.new("data.pstore")
#=> #<PStore:0x007fd67f35a040 @abort=false, @filename="data.pstore", @lock=#<Thread::Mutex:0x007fd67f359f28>, @thread_safe=false, @ultra_safe=false>
store.transaction { store[:foo] = :bar }
# => #<PStore:0x007fd67f35a040 @abort=false, @filename="data.pstore", @lock=#<Thread::Mutex:0x007fd67f359f28>, @rdonly=false, @table={:foo=>:bar}, @thread_safe=false, @ultra_safe=false>
store.transaction { store.delete(:foo) }
#=> :bar
store
#=> #<PStore:0x007fd67f35a040 @abort=false, @filename="data.pstore", @lock=#<Thread::Mutex:0x007fd67f359f28>, @thread_safe=false, @ultra_safe=false
如果您想截断 store
,您可以遍历 roots
并在事务中删除它们:
store.transaction do
store.roots.each do |root|
store.delete(root)
end
end
我一直在尝试使用 PStore 来保存相对大量的哈希值:
require "pstore"
store = PStore.new("data.pstore")
由于它存储在一个充满现在无用数据的文件中,我该如何以编程方式清除或删除 "store"?显然我可以只删除 store.pstore
文件,但我正在寻找的是 PStore 等价于:
DELETE FROM store WHERE 1=1;
您要找的是delete
:
store.transaction { store.delete(key) }
store = PStore.new("data.pstore")
#=> #<PStore:0x007fd67f35a040 @abort=false, @filename="data.pstore", @lock=#<Thread::Mutex:0x007fd67f359f28>, @thread_safe=false, @ultra_safe=false>
store.transaction { store[:foo] = :bar }
# => #<PStore:0x007fd67f35a040 @abort=false, @filename="data.pstore", @lock=#<Thread::Mutex:0x007fd67f359f28>, @rdonly=false, @table={:foo=>:bar}, @thread_safe=false, @ultra_safe=false>
store.transaction { store.delete(:foo) }
#=> :bar
store
#=> #<PStore:0x007fd67f35a040 @abort=false, @filename="data.pstore", @lock=#<Thread::Mutex:0x007fd67f359f28>, @thread_safe=false, @ultra_safe=false
如果您想截断 store
,您可以遍历 roots
并在事务中删除它们:
store.transaction do
store.roots.each do |root|
store.delete(root)
end
end