Class: ActiveSupport::Cache::FileStore
- Defined in:
- activesupport/lib/active_support/cache/file_store.rb
Overview
File Cache Store
A cache store implementation which stores everything on the filesystem.
Constant Summary collapse
- DIR_FORMATTER =
- "%03X"
- FILENAME_MAX_SIZE =
          max filename size on file system is 255, minus room for timestamp, pid, and random characters appended by Tempfile (used by atomic write) 
- 226
- FILEPATH_MAX_SIZE =
          max is 1024, plus some room 
- 900
- GITKEEP_FILES =
- [".gitkeep", ".keep"].freeze 
Instance Attribute Summary collapse
- 
  
    
      #cache_path  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute cache_path. 
Attributes inherited from Store
Class Method Summary collapse
- 
  
    
      .supports_cache_versioning?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    Advertise cache versioning support. 
Instance Method Summary collapse
- 
  
    
      #cleanup(options = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Preemptively iterates through all stored keys and removes the ones which have expired. 
- 
  
    
      #clear(options = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Deletes all items from the cache. 
- 
  
    
      #decrement(name, amount = 1, **options)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Decrement a cached integer value. 
- #delete_matched(matcher, options = nil) ⇒ Object
- 
  
    
      #increment(name, amount = 1, **options)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Increment a cached integer value. 
- 
  
    
      #initialize(cache_path, **options)  ⇒ FileStore 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of FileStore. 
- 
  
    
      #inspect  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
Methods inherited from Store
#delete, #delete_multi, #exist?, #fetch, #fetch_multi, #mute, #new_entry, #read, #read_multi, #silence!, #write, #write_multi
Constructor Details
#initialize(cache_path, **options) ⇒ FileStore
Returns a new instance of FileStore.
| 20 21 22 23 | # File 'activesupport/lib/active_support/cache/file_store.rb', line 20 def initialize(cache_path, **) super() @cache_path = cache_path.to_s end | 
Instance Attribute Details
#cache_path ⇒ Object (readonly)
Returns the value of attribute cache_path.
| 13 14 15 | # File 'activesupport/lib/active_support/cache/file_store.rb', line 13 def cache_path @cache_path end | 
Class Method Details
.supports_cache_versioning? ⇒ Boolean
Advertise cache versioning support.
| 26 27 28 | # File 'activesupport/lib/active_support/cache/file_store.rb', line 26 def self.supports_cache_versioning? true end | 
Instance Method Details
#cleanup(options = nil) ⇒ Object
Preemptively iterates through all stored keys and removes the ones which have expired.
| 40 41 42 43 44 45 46 | # File 'activesupport/lib/active_support/cache/file_store.rb', line 40 def cleanup( = nil) = () search_dir(cache_path) do |fname| entry = read_entry(fname, **) delete_entry(fname, **) if entry && entry.expired? end end | 
#clear(options = nil) ⇒ Object
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.
| 33 34 35 36 37 | # File 'activesupport/lib/active_support/cache/file_store.rb', line 33 def clear( = 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) ⇒ Object
Decrement a cached integer value. Returns the updated value.
If the key is unset, it will be set to -amount.
cache.decrement("foo") # => -1
To set a specific value, call #write:
cache.write("baz", 5)
cache.decrement("baz") # => 4
| 80 81 82 83 84 85 86 87 | # File 'activesupport/lib/active_support/cache/file_store.rb', line 80 def decrement(name, amount = 1, **) = () key = normalize_key(name, ) instrument(:decrement, key, amount: amount) do modify_value(name, -amount, ) end end | 
#delete_matched(matcher, options = nil) ⇒ Object
| 89 90 91 92 93 94 95 96 97 98 99 | # File 'activesupport/lib/active_support/cache/file_store.rb', line 89 def delete_matched(matcher, = nil) = () matcher = key_matcher(matcher, ) instrument(:delete_matched, matcher.inspect) do search_dir(cache_path) do |path| key = file_path_key(path) delete_entry(path, **) if key.match(matcher) end end end | 
#increment(name, amount = 1, **options) ⇒ Object
Increment a cached integer value. Returns the updated value.
If the key is unset, it starts from 0:
cache.increment("foo") # => 1
cache.increment("bar", 100) # => 100
To set a specific value, call #write:
cache.write("baz", 5)
cache.increment("baz") # => 6
| 60 61 62 63 64 65 66 67 | # File 'activesupport/lib/active_support/cache/file_store.rb', line 60 def increment(name, amount = 1, **) = () key = normalize_key(name, ) instrument(:increment, key, amount: amount) do modify_value(name, amount, ) end end | 
#inspect ⇒ Object
:nodoc:
| 101 102 103 | # File 'activesupport/lib/active_support/cache/file_store.rb', line 101 def inspect # :nodoc: "#<#{self.class.name} cache_path=#{@cache_path}, options=#{@options.inspect}>" end |