Class: ActiveSupport::Cache::FileStore
- Inherits:
-
Store
show all
- Defined in:
- 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
collapse
- DIR_FORMATTER =
"%03X"
- ESCAPE_FILENAME_CHARS =
/[^a-z0-9_.-]/i
- UNESCAPE_FILENAME_CHARS =
/%[0-9A-F]{2}/
Instance Attribute Summary collapse
Attributes inherited from Store
#options, #silence
Instance Method Summary
collapse
Methods inherited from Store
#delete, #exist?, #fetch, instrument, instrument=, #mute, #read, #read_multi, #silence!, #write
Constructor Details
#initialize(cache_path, options = nil) ⇒ FileStore
17
18
19
20
21
|
# File 'lib/active_support/cache/file_store.rb', line 17
def initialize(cache_path, options = nil)
super(options)
@cache_path = cache_path
extend Strategy::LocalCache
end
|
Instance Attribute Details
#cache_path ⇒ Object
Returns the value of attribute cache_path.
11
12
13
|
# File 'lib/active_support/cache/file_store.rb', line 11
def cache_path
@cache_path
end
|
Instance Method Details
#cleanup(options = nil) ⇒ Object
28
29
30
31
32
33
34
|
# File 'lib/active_support/cache/file_store.rb', line 28
def cleanup(options = nil)
options = merged_options(options)
each_key(options) do |key|
entry = read_entry(key, options)
delete_entry(key, options) if entry && entry.expired?
end
end
|
#clear(options = nil) ⇒ Object
23
24
25
26
|
# File 'lib/active_support/cache/file_store.rb', line 23
def clear(options = nil)
root_dirs = Dir.entries(cache_path).reject{|f| ['.', '..'].include?(f)}
FileUtils.rm_r(root_dirs.collect{|f| File.join(cache_path, f)})
end
|
#decrement(name, amount = 1, options = nil) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/active_support/cache/file_store.rb', line 50
def decrement(name, amount = 1, options = nil)
file_name = key_file_path(namespaced_key(name, options))
lock_file(file_name) do
options = merged_options(options)
if num = read(name, options)
num = num.to_i - amount
write(name, num, options)
num
else
nil
end
end
end
|
#delete_matched(matcher, options = nil) ⇒ Object
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/active_support/cache/file_store.rb', line 64
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
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/active_support/cache/file_store.rb', line 36
def increment(name, amount = 1, options = nil)
file_name = key_file_path(namespaced_key(name, options))
lock_file(file_name) do
options = merged_options(options)
if num = read(name, options)
num = num.to_i + amount
write(name, num, options)
num
else
nil
end
end
end
|