class ActiveSupport::Cache::MemoryStore
def prune(target_size, max_time = nil)
To ensure entries fit within the specified memory prune the cache by removing the least
def prune(target_size, max_time = nil) return if pruning? @pruning = true begin start_time = Time.now cleanup instrument(:prune, target_size, :from => @cache_size) do keys = synchronize{ @key_access.keys.sort{|a,b| @key_access[a].to_f <=> @key_access[b].to_f} } keys.each do |key| delete_entry(key, options) return if @cache_size <= target_size || (max_time && Time.now - start_time > max_time) end end ensure @pruning = false end end