diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2009-06-21 14:35:14 +0100 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2009-06-21 15:25:28 +0100 |
commit | b5775c2b3efb3ae5ef9074d26f6fc3e302a4f6f0 (patch) | |
tree | ab1ed892e04ed605c122e9a42a17286e63c5f1e8 /activesupport/lib/active_support/cache | |
parent | 9f7eaea201b2f408d9effbf82f2731957e284adf (diff) | |
download | rails-b5775c2b3efb3ae5ef9074d26f6fc3e302a4f6f0.tar.gz rails-b5775c2b3efb3ae5ef9074d26f6fc3e302a4f6f0.tar.bz2 rails-b5775c2b3efb3ae5ef9074d26f6fc3e302a4f6f0.zip |
Add expiry support File cache store [#1693 state:resolved] [Roman Shterenzon, Pratik Naik]
Diffstat (limited to 'activesupport/lib/active_support/cache')
-rw-r--r-- | activesupport/lib/active_support/cache/file_store.rb | 14 | ||||
-rw-r--r-- | activesupport/lib/active_support/cache/mem_cache_store.rb | 4 |
2 files changed, 13 insertions, 5 deletions
diff --git a/activesupport/lib/active_support/cache/file_store.rb b/activesupport/lib/active_support/cache/file_store.rb index 3217350d58..75eed5ed94 100644 --- a/activesupport/lib/active_support/cache/file_store.rb +++ b/activesupport/lib/active_support/cache/file_store.rb @@ -10,11 +10,23 @@ module ActiveSupport @cache_path = cache_path end + # Reads a value from the cache. + # + # Possible options: + # - +:expires_in+ - the number of seconds that this value may stay in + # the cache. def read(name, options = nil) super - File.open(real_file_path(name), 'rb') { |f| Marshal.load(f) } rescue nil + + file_name = real_file_path(name) + expires = expires_in(options) + + if File.exist?(file_name) && (expires <= 0 || Time.now - File.mtime(file_name) < expires) + File.open(file_name, 'rb') { |f| Marshal.load(f) } + end end + # Writes a value to the cache. def write(name, value, options = nil) super ensure_cache_path(File.dirname(real_file_path(name))) diff --git a/activesupport/lib/active_support/cache/mem_cache_store.rb b/activesupport/lib/active_support/cache/mem_cache_store.rb index 38b3409ca6..954d0f5423 100644 --- a/activesupport/lib/active_support/cache/mem_cache_store.rb +++ b/activesupport/lib/active_support/cache/mem_cache_store.rb @@ -130,10 +130,6 @@ module ActiveSupport end private - def expires_in(options) - (options && options[:expires_in]) || 0 - end - def raw?(options) options && options[:raw] end |