Class: Hieraviz::Store
- Inherits:
-
Object
- Object
- Hieraviz::Store
- Defined in:
- lib/hieraviz/store.rb
Instance Method Summary collapse
- #clear_data ⇒ Object
- #data ⇒ Object
- #dump ⇒ Object
- #expired?(file, duration) ⇒ Boolean
- #get(key, expiration) ⇒ Object
- #init_tmpdir(storedir) ⇒ Object
-
#initialize(storedir) ⇒ Store
constructor
A new instance of Store.
- #set(key, value) ⇒ Object
- #tmpfile(name) ⇒ Object
Constructor Details
#initialize(storedir) ⇒ Store
Returns a new instance of Store.
4 5 6 |
# File 'lib/hieraviz/store.rb', line 4 def initialize(storedir) @tmpdir = init_tmpdir(storedir) end |
Instance Method Details
#clear_data ⇒ Object
12 13 14 15 |
# File 'lib/hieraviz/store.rb', line 12 def clear_data @_data = {} data end |
#data ⇒ Object
8 9 10 |
# File 'lib/hieraviz/store.rb', line 8 def data @_data ||= {} end |
#dump ⇒ Object
38 39 40 |
# File 'lib/hieraviz/store.rb', line 38 def dump data end |
#expired?(file, duration) ⇒ Boolean
56 57 58 |
# File 'lib/hieraviz/store.rb', line 56 def expired?(file, duration) Time.now - duration > File.mtime(file) end |
#get(key, expiration) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# 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) ⇒ Object
46 47 48 49 50 51 52 53 54 |
# 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) ⇒ Object
17 18 19 20 21 22 |
# 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) ⇒ Object
42 43 44 |
# File 'lib/hieraviz/store.rb', line 42 def tmpfile(name) File.join @tmpdir, name.gsub(/[^a-z0-9]/, '') end |