Module: SecondLevelCache::Mixin::ClassMethods

Defined in:
lib/second_level_cache.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#second_level_cache_optionsObject (readonly)

Returns the value of attribute second_level_cache_options.



19
20
21
# File 'lib/second_level_cache.rb', line 19

def second_level_cache_options
  @second_level_cache_options
end

Instance Method Details

#acts_as_cached(options = {}) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/second_level_cache.rb', line 21

def acts_as_cached(options = {})
  @second_level_cache_enabled = true
  @second_level_cache_options = options
  @second_level_cache_options[:expires_in] ||= 1.week
  @second_level_cache_options[:version] ||= 0
  relation.class.send :include, SecondLevelCache::ActiveRecord::FinderMethods
  include SecondLevelCache::ActiveRecord::Core if /^4\.2\./.match(::ActiveRecord.version.version)
end

#cache_key_prefixObject



50
51
52
# File 'lib/second_level_cache.rb', line 50

def cache_key_prefix
  Config.cache_key_prefix
end

#cache_storeObject



42
43
44
# File 'lib/second_level_cache.rb', line 42

def cache_store
  Config.cache_store
end

#cache_versionObject



54
55
56
# File 'lib/second_level_cache.rb', line 54

def cache_version
  second_level_cache_options[:version]
end

#expire_second_level_cache(id) ⇒ Object



66
67
68
# File 'lib/second_level_cache.rb', line 66

def expire_second_level_cache(id)
  SecondLevelCache.cache_store.delete(second_level_cache_key(id)) if self.second_level_cache_enabled?
end

#loggerObject



46
47
48
# File 'lib/second_level_cache.rb', line 46

def logger
  Config.logger
end

#read_second_level_cache(id) ⇒ Object



62
63
64
# File 'lib/second_level_cache.rb', line 62

def read_second_level_cache(id)
  RecordMarshal.load(SecondLevelCache.cache_store.read(second_level_cache_key(id))) if self.second_level_cache_enabled?
end

#second_level_cache_enabled?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/second_level_cache.rb', line 30

def second_level_cache_enabled?
  !!@second_level_cache_enabled
end

#second_level_cache_key(id) ⇒ Object



58
59
60
# File 'lib/second_level_cache.rb', line 58

def second_level_cache_key(id)
  "#{cache_key_prefix}/#{table_name.downcase}/#{id}/#{cache_version}"
end

#without_second_level_cacheObject



34
35
36
37
38
39
40
# File 'lib/second_level_cache.rb', line 34

def without_second_level_cache
  old, @second_level_cache_enabled = @second_level_cache_enabled, false

  yield if block_given?
ensure
  @second_level_cache_enabled = old
end