Path: blob/master/lib/anemone/storage/pstore.rb
19535 views
require 'pstore'1require 'forwardable'23module Anemone4module Storage5class PStore6extend Forwardable78def_delegators :@keys, :has_key?, :keys, :size910def initialize(file)11File.delete(file) if File.exist?(file)12@store = ::PStore.new(file)13@keys = {}14end1516def [](key)17@store.transaction { |s| s[key] }18end1920def []=(key,value)21@keys[key] = nil22@store.transaction { |s| s[key] = value }23end2425def delete(key)26@keys.delete(key)27@store.transaction { |s| s.delete key}28end2930def each31@keys.each_key do |key|32value = nil33@store.transaction { |s| value = s[key] }34yield key, value35end36end3738def merge!(hash)39@store.transaction do |s|40hash.each { |key, value| s[key] = value; @keys[key] = nil }41end42self43end4445def close; end4647end48end49end505152