aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/cache/file_store.rb
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2009-06-23 16:52:39 +0200
committerJosé Valim <jose.valim@gmail.com>2009-06-23 16:52:39 +0200
commit0744900861892be85b4a110612a8e92aed94d858 (patch)
treee879b3cd4d0839baaa0fb50f0927c6671b75ca11 /activesupport/lib/active_support/cache/file_store.rb
parent6dd196914c293fbc1a331e4a0bc1c06a26dded43 (diff)
parent80f1f863cd0f9cba89079511282de5710a2e1832 (diff)
downloadrails-0744900861892be85b4a110612a8e92aed94d858.tar.gz
rails-0744900861892be85b4a110612a8e92aed94d858.tar.bz2
rails-0744900861892be85b4a110612a8e92aed94d858.zip
Merge branch 'master' of git://github.com/rails/rails
Diffstat (limited to 'activesupport/lib/active_support/cache/file_store.rb')
-rw-r--r--activesupport/lib/active_support/cache/file_store.rb14
1 files changed, 13 insertions, 1 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)))