Class: ActiveSupport::Cache::Strategy::LocalCache::LocalStore

Inherits:
ActiveSupport::Cache::Store show all
Defined in:
activesupport/lib/active_support/cache/strategy/local_cache.rb

Overview

Simple memory backed cache. This cache is not thread safe and is intended only for serving as a temporary memory cache for a single thread.

Instance Attribute Summary

Attributes inherited from ActiveSupport::Cache::Store

#options, #silence

Instance Method Summary collapse

Methods inherited from ActiveSupport::Cache::Store

#cleanup, #decrement, #delete, #delete_matched, #delete_multi, #exist?, #fetch, #fetch_multi, #increment, #mute, #read, #read_multi, #silence!, #write, #write_multi

Constructor Details

#initializeLocalStore


38
39
40
41
# File 'activesupport/lib/active_support/cache/strategy/local_cache.rb', line 38

def initialize
  super
  @data = {}
end

Instance Method Details

#clear(options = nil) ⇒ Object


48
49
50
# File 'activesupport/lib/active_support/cache/strategy/local_cache.rb', line 48

def clear(options = nil)
  @data.clear
end

#delete_entry(key, **options) ⇒ Object


73
74
75
# File 'activesupport/lib/active_support/cache/strategy/local_cache.rb', line 73

def delete_entry(key, **options)
  !!@data.delete(key)
end

#fetch_entry(key, options = nil) ⇒ Object

:nodoc:


77
78
79
80
81
82
# File 'activesupport/lib/active_support/cache/strategy/local_cache.rb', line 77

def fetch_entry(key, options = nil) # :nodoc:
  entry = @data.fetch(key) { @data[key] = yield }
  dup_entry = entry.dup
  dup_entry&.dup_value!
  dup_entry
end

#read_entry(key, **options) ⇒ Object


52
53
54
# File 'activesupport/lib/active_support/cache/strategy/local_cache.rb', line 52

def read_entry(key, **options)
  @data[key]
end

#read_multi_entries(keys, **options) ⇒ Object


56
57
58
59
60
61
62
63
64
65
# File 'activesupport/lib/active_support/cache/strategy/local_cache.rb', line 56

def read_multi_entries(keys, **options)
  values = {}

  keys.each do |name|
    entry = read_entry(name, **options)
    values[name] = entry.value if entry
  end

  values
end

#synchronizeObject

Don't allow synchronizing since it isn't thread safe.


44
45
46
# File 'activesupport/lib/active_support/cache/strategy/local_cache.rb', line 44

def synchronize # :nodoc:
  yield
end

#write_entry(key, entry, **options) ⇒ Object


67
68
69
70
71
# File 'activesupport/lib/active_support/cache/strategy/local_cache.rb', line 67

def write_entry(key, entry, **options)
  entry.dup_value!
  @data[key] = entry
  true
end