Module: Innate::Cache::FileBased
Overview
Used by caches that serialize their contents to the filesystem. Right now we do not lock around write access to the file outside of the process, that means that all FileBased caches are not safe for use if you need more than one instance of your application.
Instance Attribute Summary collapse
-
#filename ⇒ Object
readonly
Returns the value of attribute filename.
Instance Method Summary collapse
- #cache_clear ⇒ Object
- #cache_delete(*args) ⇒ Object
- #cache_fetch(*args) ⇒ Object
- #cache_setup(*args) ⇒ Object
- #cache_store(*args) ⇒ Object
- #transaction(&block) ⇒ Object
Instance Attribute Details
#filename ⇒ Object (readonly)
Returns the value of attribute filename.
9 10 11 |
# File 'lib/innate/cache/file_based.rb', line 9 def filename @filename end |
Instance Method Details
#cache_clear ⇒ Object
21 22 23 24 25 |
# File 'lib/innate/cache/file_based.rb', line 21 def cache_clear FileUtils.mkdir_p(@dir) FileUtils.rm_f(@filename) @store = self.class::STORE.new(@filename) end |
#cache_delete(*args) ⇒ Object
35 36 37 |
# File 'lib/innate/cache/file_based.rb', line 35 def cache_delete(*args) super{|key| transaction{|store| store.delete(key) } } end |
#cache_fetch(*args) ⇒ Object
31 32 33 |
# File 'lib/innate/cache/file_based.rb', line 31 def cache_fetch(*args) super{|key| transaction{|store| store[key] } } end |
#cache_setup(*args) ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/innate/cache/file_based.rb', line 11 def cache_setup(*args) @prefix = args.compact.join('-') @dir = File.join(Dir.tmpdir, self.class::DIR) FileUtils.mkdir_p(@dir) @filename = File.join(@dir, @prefix + self.class::EXT) @store = self.class::STORE.new(@filename) end |
#cache_store(*args) ⇒ Object
27 28 29 |
# File 'lib/innate/cache/file_based.rb', line 27 def cache_store(*args) super{|key, value| transaction{|store| store[key] = value } } end |