Module: CacheVersion
- Defined in:
- lib/cache_version.rb
Class Method Summary collapse
- .cache ⇒ Object
- .clear_cache(force = false) ⇒ Object
- .db ⇒ Object
- .get(key) ⇒ Object
- .increment(key) ⇒ Object
- .invalidate_cache(key) ⇒ Object
- .set(key, value) ⇒ Object
Class Method Details
.cache ⇒ Object
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 |
.db ⇒ Object
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 |