Class: Bizside::Cache::FileStore

Inherits:
Store
  • Object
show all
Defined in:
lib/bizside/cache/file_store.rb

Constant Summary collapse

DIR_FORMATTER =
"%03X"
FILENAME_MAX_SIZE =

max filename size on file system is 255, minus room for timestamp and random characters appended by Tempfile (used by atomic write)

228
FILEPATH_MAX_SIZE =

max is 1024, plus some room

900
EXCLUDED_DIRS =
['.', '..'].freeze

Instance Attribute Summary collapse

Attributes inherited from Store

#options

Instance Method Summary collapse

Methods inherited from Store

#delete, #exist?, #fetch, #fetch_multi, #read, #read_multi, #write

Constructor Details

#initialize(cache_path, options = nil) ⇒ FileStore

Returns a new instance of FileStore.



14
15
16
17
# File 'lib/bizside/cache/file_store.rb', line 14

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

Instance Attribute Details

#cache_pathObject (readonly)

Returns the value of attribute cache_path.



7
8
9
# File 'lib/bizside/cache/file_store.rb', line 7

def cache_path
  @cache_path
end

Instance Method Details

#cleanup(options = nil) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/bizside/cache/file_store.rb', line 24

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

#clear(options = nil) ⇒ Object



19
20
21
22
# File 'lib/bizside/cache/file_store.rb', line 19

def clear(options = nil)
  root_dirs = Dir.entries(cache_path).reject {|f| (EXCLUDED_DIRS + [".gitkeep"]).include?(f)}
  FileUtils.rm_r(root_dirs.collect{|f| File.join(cache_path, f)})
end

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



37
38
39
# File 'lib/bizside/cache/file_store.rb', line 37

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

#delete_matched(matcher, options = nil) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/bizside/cache/file_store.rb', line 41

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(key, options) if key.match(matcher)
    end
  end
end

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



33
34
35
# File 'lib/bizside/cache/file_store.rb', line 33

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