From 09769741b157172bdc6dc373a4659c394a0e19c0 Mon Sep 17 00:00:00 2001 From: Jonathan Roes Date: Sat, 26 Sep 2009 16:12:25 -0400 Subject: [PATCH] Add global expires in for cache_store --- activesupport/lib/active_support/cache.rb | 6 +++--- .../lib/active_support/cache/mem_cache_store.rb | 1 + activesupport/test/caching_test.rb | 14 +++++++++++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/activesupport/lib/active_support/cache.rb b/activesupport/lib/active_support/cache.rb index 3f31185..283d27a 100644 --- a/activesupport/lib/active_support/cache.rb +++ b/activesupport/lib/active_support/cache.rb @@ -89,8 +89,8 @@ module ActiveSupport # cache.write("city", "Duckburgh") # cache.read("city") # => "Duckburgh" class Store - cattr_accessor :logger - + cattr_accessor :logger, :default_expires_in + attr_reader :silence, :logger_off def silence! @@ -226,7 +226,7 @@ module ActiveSupport private def expires_in(options) - expires_in = options && options[:expires_in] + expires_in = options && options[:expires_in] || self.default_expires_in raise ":expires_in must be a number" if expires_in && !expires_in.is_a?(Numeric) diff --git a/activesupport/lib/active_support/cache/mem_cache_store.rb b/activesupport/lib/active_support/cache/mem_cache_store.rb index 954d0f5..287f793 100644 --- a/activesupport/lib/active_support/cache/mem_cache_store.rb +++ b/activesupport/lib/active_support/cache/mem_cache_store.rb @@ -27,6 +27,7 @@ module ActiveSupport addresses = addresses.flatten options = addresses.extract_options! addresses = ["localhost"] if addresses.empty? + self.default_expires_in = options[:expires_in] MemCache.new(addresses, options) end diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb index 94c130d..2a9147f 100644 --- a/activesupport/test/caching_test.rb +++ b/activesupport/test/caching_test.rb @@ -171,7 +171,11 @@ end uses_memcached 'memcached backed store' do class MemCacheStoreTest < ActiveSupport::TestCase def setup - @cache = ActiveSupport::Cache.lookup_store(:mem_cache_store) + setup_with_opts + end + + def setup_with_opts(opts={}) + @cache = ActiveSupport::Cache.lookup_store(:mem_cache_store, opts) @data = @cache.instance_variable_get(:@data) @cache.clear @cache.silence! @@ -314,6 +318,14 @@ uses_memcached 'memcached backed store' do assert_equal 'bat', @cache.read('baz') assert_equal nil, @cache.read('foo') end + + def test_default_expires_in + setup_with_opts(:expires_in => 1) + result = @cache.write('foo', 'bar') + assert_equal 'bar', @cache.read('foo') + sleep 2 + assert_equal nil, @cache.read('foo') + end end class CompressedMemCacheStore < ActiveSupport::TestCase -- 1.6.4.2