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