正在清除或删除Ruby PStore

正在清除或删除Ruby PStore,ruby,flat-file,Ruby,Flat File,我一直在尝试使用PStore来保存相对大量的哈希值,方法是: require "pstore" store = PStore.new("data.pstore") 鉴于这是存储在一个充满无用数据的文件中,如何通过编程清除或删除“存储”?显然,我可以删除store.pstore文件,但我要查找的是与以下内容等效的pstore: DELETE FROM store WHERE 1=1; 您需要的是: 我认为ObjectSpace的胡言乱语与此无关。你认为他有成百上千的PStore对象随机存在

我一直在尝试使用PStore来保存相对大量的哈希值,方法是:

 require "pstore"
 store = PStore.new("data.pstore")
鉴于这是存储在一个充满无用数据的文件中,如何通过编程清除或删除“存储”?显然,我可以删除
store.pstore
文件,但我要查找的是与以下内容等效的pstore:

DELETE FROM store WHERE 1=1;

您需要的是:


我认为ObjectSpace的胡言乱语与此无关。你认为他有成百上千的PStore对象随机存在吗?还有,问题是:如何截断存储?还有,当有ruby api用于删除文件时,不需要进行炮轰:)@SergioTulentsev要截断存储(如果我理解正确的话),只需迭代表的键(
store.root
)然后删除它们,除非有更有效的一次性方法。是的,这就是我的意思
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.transaction do
  store.roots.each do |root|
    store.delete(root)
  end
end