Sha256: 308677901aa6c95c01f4247cfcd5578e61b19337010b3638342cb5a0687bf451
Contents?: true
Size: 1.36 KB
Versions: 11
Compression:
Stored size: 1.36 KB
Contents
module VPNMaker class KeyDB def initialize(path) @path = path @db = File.exists?(path) ? YAML.load_file(path) : {} @touched = false end def [](k); @db[k]; end def []=(k, v) @db[k] = v @db[:modified] = Time.now @touched = true end def touched! @touched = true @db[:modified] = Time.now end def datadir; self[:datadir]; end def data_path(k) File.join(File.dirname(@path), self.datadir, k) end def dump(k, v, overwrite=false) p = data_path(k) raise "#{k} already exists" if File.exists?(p) && !overwrite File.open(p, 'w') {|f| f.write(v)} @touched = true end def data(k) File.exists?(data_path(k)) ? File.read(data_path(k)) : nil end def disk_version File.exists?(@path) ? YAML.load_file(@path)[:version] : 0 end def sync if disk_version == @db[:version] if @touched FileUtils.mkdir_p(File.dirname(@path) + "/" + self.datadir) @db[:version] += 1 File.open(@path, 'w') {|f| f.write(@db.to_yaml)} true else false end else raise "Disk version of #{@path} (#{disk_version}) != loaded version (#{@db[:version]}). " + \ "Try reloading and making your changes again." end end def version; @db[:version]; end end end
Version data entries
11 entries across 11 versions & 1 rubygems