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.

Methods

Constants

DIR_FORMATTER = "%03X"
EXCLUDED_DIRS = [".", ".."].freeze
FILENAME_MAX_SIZE = 228
FILEPATH_MAX_SIZE = 900
GITKEEP_FILES = [".gitkeep", ".keep"].freeze

Attributes

[R] cache_path

Class Public methods

new(cache_path, options = nil)

📝 Source code
# File activesupport/lib/active_support/cache/file_store.rb, line 24
      def initialize(cache_path, options = nil)
        super(options)
        @cache_path = cache_path.to_s
      end
🔎 See on GitHub

Instance Public methods

cleanup(options = nil)

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

📝 Source code
# File activesupport/lib/active_support/cache/file_store.rb, line 39
      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
🔎 See on GitHub

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.

📝 Source code
# File activesupport/lib/active_support/cache/file_store.rb, line 32
      def clear(options = nil)
        root_dirs = exclude_from(cache_path, EXCLUDED_DIRS + GITKEEP_FILES)
        FileUtils.rm_r(root_dirs.collect { |f| File.join(cache_path, f) })
      rescue Errno::ENOENT
      end
🔎 See on GitHub

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.

📝 Source code
# File activesupport/lib/active_support/cache/file_store.rb, line 55
      def decrement(name, amount = 1, options = nil)
        modify_value(name, -amount, options)
      end
🔎 See on GitHub

delete_matched(matcher, options = nil)

📝 Source code
# File activesupport/lib/active_support/cache/file_store.rb, line 59
      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
🔎 See on GitHub

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.

📝 Source code
# File activesupport/lib/active_support/cache/file_store.rb, line 49
      def increment(name, amount = 1, options = nil)
        modify_value(name, amount, options)
      end
🔎 See on GitHub