Class: Kennel::FileCache

Inherits:
Object
  • Object
show all
Defined in:
lib/kennel/file_cache.rb

Instance Method Summary collapse

Constructor Details

#initialize(file, cache_version) ⇒ FileCache

Returns a new instance of FileCache.



10
11
12
13
14
15
# File 'lib/kennel/file_cache.rb', line 10

def initialize(file, cache_version)
  @file = file
  @cache_version = cache_version
  @now = Time.now.to_i
  @expires = @now + (30 * 24 * 60 * 60) # 1 month
end

Instance Method Details

#fetch(key, key_version) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/kennel/file_cache.rb', line 27

def fetch(key, key_version)
  old_value, old_version = @data[key]
  expected_version = [key_version, @cache_version]
  return old_value if old_version == expected_version

  new_value = yield
  @data[key] = [new_value, expected_version, @expires]
  new_value
end

#openObject



17
18
19
20
21
22
23
24
25
# File 'lib/kennel/file_cache.rb', line 17

def open
  @data = load_data || {}
  begin
    expire_old_data
    yield self
  ensure
    persist
  end
end