Class: Hoodie::Stash::DiskStore
- Defined in:
- lib/hoodie/stash/disk_store.rb
Overview
Disk stashing method variable caching hash, string, array store.
Instance Attribute Summary collapse
-
#:store(: store) ⇒ Stash::DiskStore
readonly
Location of Stash::DiskStore store.
-
#store ⇒ Object
readonly
Returns the value of attribute store.
Instance Method Summary collapse
-
#[](key) ⇒ Hash
Retrieves the value for a given key, if nothing is set returns nil.
-
#[]=(key, value) ⇒ undefined
Store the given value with the given key, either an an argument or block.
-
#cache(key = nil) { ... } ⇒ Object
Retrieves a value from the cache, if available and not expired, or yields to a block that calculates the value to be stored in the cache.
-
#cache_file(key) ⇒ String
Returns path to cache file with ‘key’.
-
#clear!(key = nil) ⇒ Hash
Clear the whole stash or the value of a key.
-
#initialize(store = file_store) ⇒ DiskStore
constructor
Initializes a new disked backed stash hash cache store.
Constructor Details
#initialize(store = file_store) ⇒ DiskStore
Initializes a new disked backed stash hash cache store.
39 40 41 |
# File 'lib/hoodie/stash/disk_store.rb', line 39 def initialize(store = file_store) @store = store end |
Instance Attribute Details
#:store(: store) ⇒ Stash::DiskStore (readonly)
Returns location of Stash::DiskStore store.
30 |
# File 'lib/hoodie/stash/disk_store.rb', line 30 attr_reader :store |
#store ⇒ Object (readonly)
Returns the value of attribute store.
30 31 32 |
# File 'lib/hoodie/stash/disk_store.rb', line 30 def store @store end |
Instance Method Details
#[](key) ⇒ Hash
Retrieves the value for a given key, if nothing is set returns nil.
88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/hoodie/stash/disk_store.rb', line 88 def [](key) if key.is_a? Array hash = {} key.each do |k| hash[k] = Marshal.load(read_cache_file(k)) end hash unless hash.empty? else Marshal.load(read_cache_file(key)) end rescue Errno::ENOENT nil # key hasn't been created end |
#[]=(key, value) ⇒ undefined
Store the given value with the given key, either an an argument or block. If a previous value was set it will be overwritten with the new value.
117 118 119 |
# File 'lib/hoodie/stash/disk_store.rb', line 117 def []=(key, value) write_cache_file(key, Marshal.dump(value)) end |
#cache(key = nil) { ... } ⇒ Object
Retrieves a value from the cache, if available and not expired, or yields to a block that calculates the value to be stored in the cache.
57 58 59 60 |
# File 'lib/hoodie/stash/disk_store.rb', line 57 def cache(key = nil, &code) key ||= Stash.caller_name @store[key.to_sym] ||= code.call end |
#cache_file(key) ⇒ String
Returns path to cache file with ‘key’
126 127 128 |
# File 'lib/hoodie/stash/disk_store.rb', line 126 def cache_file(key) File.join(store, key.to_s + '.cache') end |
#clear!(key = nil) ⇒ Hash
Clear the whole stash or the value of a key.
70 71 72 73 74 75 76 77 78 |
# File 'lib/hoodie/stash/disk_store.rb', line 70 def clear!(key = nil) if key.nil? Dir[File.join(store, '*.cache')].each do |file| File.delete(file) end else File.delete(cache_file(key)) if File.exist?(cache_file(key)) end end |