Module: CacheVersion

Defined in:
lib/cache_version.rb

Class Method Summary collapse

Class Method Details

.cacheObject



12
13
14
# File 'lib/cache_version.rb', line 12

def self.cache
  CACHE
end

.clear_cache(force = false) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/cache_version.rb', line 37

def self.clear_cache(force = false)
  if v = cache.get(vkey)
    if force == true or @version.nil? or v > @version
      @version = v
      version_by_key.clear
    end
  else
    @version = cache.get_or_add(vkey, Time.now.to_i)
  end
end

.dbObject



6
7
8
9
10
# File 'lib/cache_version.rb', line 6

def self.db
  db = ActiveRecord::Base.connection
  db = db.send(:master) if defined?(DataFabric::ConnectionProxy) and db.kind_of?(DataFabric::ConnectionProxy)
  db
end

.get(key) ⇒ Object



16
17
18
19
20
21
# File 'lib/cache_version.rb', line 16

def self.get(key)
  key = key.to_s
  version_by_key[key] ||= CACHE.get_or_add(cache_key(key)) do
    db.select_value("SELECT version FROM cache_versions WHERE #{key_column} = '#{key}'").to_i
  end
end

.increment(key) ⇒ Object



23
24
25
# File 'lib/cache_version.rb', line 23

def self.increment(key)
  alter(key, 1, 'version + 1')
end

.invalidate_cache(key) ⇒ Object



31
32
33
34
35
# File 'lib/cache_version.rb', line 31

def self.invalidate_cache(key)
  key = key.to_s
  cache.delete(cache_key(key))
  version_by_key.delete(key)
end

.set(key, value) ⇒ Object



27
28
29
# File 'lib/cache_version.rb', line 27

def self.set(key, value)
  alter(key, value.to_i)
end