Class: Sprockets::Cache::MemoryStore
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/sprockets/cache/memory_store.rb |
Overview
Constant Summary
-
DEFAULT_MAX_SIZE =
Internal: Default key limit for store.
1000
Class Method Summary
-
.new(max_size = DEFAULT_MAX_SIZE) ⇒ MemoryStore
constructor
Public: Initialize the cache store.
Instance Method Summary
-
#clear(options = nil)
Public: Clear the cache.
-
#get(key)
Public: Retrieve value from cache.
-
#inspect
Public: Pretty inspect.
-
#set(key, value)
Public: Set a key and value in the cache.
Constructor Details
.new(max_size = DEFAULT_MAX_SIZE) ⇒ MemoryStore
Public: Initialize the cache store.
max_size - A Integer of the maximum number of keys the store will hold.
(default: 1000).
# File 'lib/sprockets/cache/memory_store.rb', line 22
def initialize(max_size = DEFAULT_MAX_SIZE) @max_size = max_size @cache = {} @mutex = Mutex.new end
Instance Method Details
#clear(options = nil)
Public: Clear the cache
Returns true
# File 'lib/sprockets/cache/memory_store.rb', line 76
def clear(=nil) @mutex.synchronize do @cache.clear end true end
#get(key)
Public: Retrieve value from cache.
This API should not be used directly, but via the Cache
wrapper API.
key - String cache key.
Returns Object or nil or the value is not set.
# File 'lib/sprockets/cache/memory_store.rb', line 35
def get(key) @mutex.synchronize do exists = true value = @cache.delete(key) { exists = false } if exists @cache[key] = value else nil end end end
#inspect
Public: Pretty inspect
Returns String.
# File 'lib/sprockets/cache/memory_store.rb', line 67
def inspect @mutex.synchronize do "#<#{self.class} size=#{@cache.size}/#{@max_size}>" end end
#set(key, value)
Public: Set a key and value in the cache.
This API should not be used directly, but via the Cache
wrapper API.
key - String cache key. value - Object value.
Returns Object value.
# File 'lib/sprockets/cache/memory_store.rb', line 55
def set(key, value) @mutex.synchronize do @cache.delete(key) @cache[key] = value @cache.shift if @cache.size > @max_size end value end