123456789_123456789_123456789_123456789_123456789_

Class: ActiveSupport::Cache::FileStore

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, Store
Instance Chain:
Inherits: ActiveSupport::Cache::Store
Defined in: activesupport/lib/active_support/cache/file_store.rb

Overview

A cache store implementation which stores everything on the filesystem.

FileStore implements the Strategy::LocalCache strategy which implements an in-memory cache inside of a block.

Constant Summary

Store - Inherited

DEFAULT_CODER

Class Attribute Summary

Store - Inherited

Class Method Summary

Store - Inherited

.new

Creates a new cache.

Instance Attribute Summary

Store - Inherited

Instance Method Summary

Strategy::LocalCache - Included

#middleware

Middleware class can be inserted as a ::Rack handler to be local cache for the duration of request.

#with_local_cache

Use a local cache for the duration of block.

Store - Inherited

#cleanup

Cleanups the cache by removing expired entries.

#clear

Clears the entire cache.

#decrement

Decrements an integer value in the cache.

#delete

Deletes an entry in the cache.

#delete_matched

Deletes all entries with keys matching the pattern.

#delete_multi

Deletes multiple entries in the cache.

#exist?

Returns true if the cache contains an entry for the given key.

#fetch

Fetches data from the cache, using the given key.

#fetch_multi

Fetches data from the cache, using the given keys.

#increment

Increments an integer value in the cache.

#mute

Silences the logger within a block.

#read

Reads data from the cache, using the given key.

#read_multi

Reads multiple values at once from the cache.

#silence,
#silence!

Silences the logger.

#write

Writes the value to the cache, with the key.

#write_multi

::ActiveSupport::Cache Storage API to write multiple values at once.

#key_matcher

Adds the namespace defined in the options to a pattern designed to match keys.

Constructor Details

.new(cache_path, **options) ⇒ FileStore

[ GitHub ]

  
# File 'activesupport/lib/active_support/cache/file_store.rb', line 23

def initialize(cache_path, **options)
  super(options)
  @cache_path = cache_path.to_s
end

Class Attribute Details

.supports_cache_versioning?Boolean (readonly)

Advertise cache versioning support.

[ GitHub ]

  
# File 'activesupport/lib/active_support/cache/file_store.rb', line 29

def self.supports_cache_versioning?
  true
end

Instance Attribute Details

#cache_path (readonly)

[ GitHub ]

  
# File 'activesupport/lib/active_support/cache/file_store.rb', line 16

attr_reader :cache_path

Instance Method Details

#cleanup(options = nil)

Preemptively iterates through all stored keys and removes the ones which have expired.

[ GitHub ]

  
# File 'activesupport/lib/active_support/cache/file_store.rb', line 43

def cleanup(options = nil)
  options = merged_options(options)
  search_dir(cache_path) do |fname|
    entry = read_entry(fname, **options)
    delete_entry(fname, **options) if entry && entry.expired?
  end
end

#clear(options = nil)

Deletes all items from the cache. In this case it deletes all the entries in the specified file store directory except for .keep or .gitkeep. Be careful which directory is specified in your config file when using FileStore because everything in that directory will be deleted.

[ GitHub ]

  
# File 'activesupport/lib/active_support/cache/file_store.rb', line 36

def clear(options = nil)
  root_dirs = (Dir.children(cache_path) - GITKEEP_FILES)
  FileUtils.rm_r(root_dirs.collect { |f| File.join(cache_path, f) })
rescue Errno::ENOENT, Errno::ENOTEMPTY
end

#decrement(name, amount = 1, options = nil)

Decrements an already existing integer value that is stored in the cache. If the key is not found nothing is done.

[ GitHub ]

  
# File 'activesupport/lib/active_support/cache/file_store.rb', line 59

def decrement(name, amount = 1, options = nil)
  modify_value(name, -amount, options)
end

#delete_matched(matcher, options = nil)

[ GitHub ]

  
# File 'activesupport/lib/active_support/cache/file_store.rb', line 63

def delete_matched(matcher, options = nil)
  options = merged_options(options)
  instrument(:delete_matched, matcher.inspect) do
    matcher = key_matcher(matcher, options)
    search_dir(cache_path) do |path|
      key = file_path_key(path)
      delete_entry(path, **options) if key.match(matcher)
    end
  end
end

#increment(name, amount = 1, options = nil)

Increments an already existing integer value that is stored in the cache. If the key is not found nothing is done.

[ GitHub ]

  
# File 'activesupport/lib/active_support/cache/file_store.rb', line 53

def increment(name, amount = 1, options = nil)
  modify_value(name, amount, options)
end