Module: Innate::Cache::FileBased

Included in:
Marshal, YAML
Defined in:
lib/innate/cache/file_based.rb

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

Instance Method Summary collapse

Instance Attribute Details

#filenameObject (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_clearObject



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

#transaction(&block) ⇒ Object



39
40
41
# File 'lib/innate/cache/file_based.rb', line 39

def transaction(&block)
  Innate.sync{ @store.transaction(&block) }
end