Method: ActiveSupport::Cache::MemoryStore#prune
- Defined in:
- activesupport/lib/active_support/cache/memory_store.rb
#prune(target_size, max_time = nil) ⇒ Object
To ensure entries fit within the specified memory prune the cache by removing the least recently accessed entries.
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'activesupport/lib/active_support/cache/memory_store.rb', line 114 def prune(target_size, max_time = nil) return if pruning? @pruning = true begin start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) cleanup instrument(:prune, target_size, from: @cache_size) do keys = synchronize { @data.keys } keys.each do |key| delete_entry(key, **) return if @cache_size <= target_size || (max_time && Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time > max_time) end end ensure @pruning = false end end |