class Hieraviz::Store
Public Class Methods
new(storedir)
click to toggle source
# File lib/hieraviz/store.rb, line 4 def initialize(storedir) @tmpdir = init_tmpdir(storedir) end
Public Instance Methods
clear_data()
click to toggle source
# File lib/hieraviz/store.rb, line 12 def clear_data @_data = {} data end
data()
click to toggle source
# File lib/hieraviz/store.rb, line 8 def data @_data ||= {} end
dump()
click to toggle source
# File lib/hieraviz/store.rb, line 38 def dump data end
expired?(file, duration)
click to toggle source
# File lib/hieraviz/store.rb, line 56 def expired?(file, duration) Time.now - duration > File.mtime(file) end
get(key, expiration)
click to toggle source
# File lib/hieraviz/store.rb, line 24 def get(key, expiration) file = tmpfile(key) if File.exist?(file) if expiration && expired?(file, expiration) File.unlink(file) clear_data else data[key] ||= Marshal.load(File.read(file).chomp) end else clear_data end end
init_tmpdir(storedir)
click to toggle source
# File lib/hieraviz/store.rb, line 46 def init_tmpdir(storedir) tmp = storedir || '/tmp' begin FileUtils.mkdir_p(tmp) unless Dir.exist?(tmp) rescue tmp = '/tmp' end tmp end
set(key, value)
click to toggle source
# File lib/hieraviz/store.rb, line 17 def set(key, value) File.open(tmpfile(key), 'w') do |file| file.print Marshal.dump(value) end data[key] = value end
tmpfile(name)
click to toggle source
# File lib/hieraviz/store.rb, line 42 def tmpfile(name) File.join @tmpdir, name.gsub(/[^a-z0-9]/, '') end