diff options
author | José Valim <jose.valim@gmail.com> | 2011-07-11 04:54:28 -0700 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2011-07-11 04:54:28 -0700 |
commit | 8f2e32158bb2e5a0a762861b085c0880320f315e (patch) | |
tree | ef38041398123a3d0de3a4d721d3182026911fad | |
parent | e9f9ce971e17bcdc0cf74af926fdeacea56504a3 (diff) | |
parent | c2aacdf2eb833bc16b71530732bded1c8c7ef6f6 (diff) | |
download | rails-8f2e32158bb2e5a0a762861b085c0880320f315e.tar.gz rails-8f2e32158bb2e5a0a762861b085c0880320f315e.tar.bz2 rails-8f2e32158bb2e5a0a762861b085c0880320f315e.zip |
Merge pull request #1608 from sishen/sishen
MemcacheStore: deserialize the entry reading from local_cache when using
-rw-r--r-- | activesupport/lib/active_support/cache/mem_cache_store.rb | 8 | ||||
-rw-r--r-- | activesupport/test/caching_test.rb | 18 |
2 files changed, 25 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/cache/mem_cache_store.rb b/activesupport/lib/active_support/cache/mem_cache_store.rb index 64d2c3bff6..e07294178b 100644 --- a/activesupport/lib/active_support/cache/mem_cache_store.rb +++ b/activesupport/lib/active_support/cache/mem_cache_store.rb @@ -183,6 +183,14 @@ module ActiveSupport # Provide support for raw values in the local cache strategy. module LocalCacheWithRaw # :nodoc: protected + def read_entry(key, options) + entry = super + if options[:raw] && local_cache && entry + entry = deserialize_entry(entry.value) + end + entry + end + def write_entry(key, entry, options) # :nodoc: retval = super if options[:raw] && local_cache && retval diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb index 498127e5bc..8b3e4800c3 100644 --- a/activesupport/test/caching_test.rb +++ b/activesupport/test/caching_test.rb @@ -635,7 +635,14 @@ uses_memcached 'memcached backed store' do cache.write("foo", 2) assert_equal "2", cache.read("foo") end - + + def test_raw_values_with_marshal + cache = ActiveSupport::Cache.lookup_store(:mem_cache_store, :raw => true) + cache.clear + cache.write("foo", Marshal.dump([])) + assert_equal [], cache.read("foo") + end + def test_local_cache_raw_values cache = ActiveSupport::Cache.lookup_store(:mem_cache_store, :raw => true) cache.clear @@ -644,6 +651,15 @@ uses_memcached 'memcached backed store' do assert_equal "2", cache.read("foo") end end + + def test_local_cache_raw_values_with_marshal + cache = ActiveSupport::Cache.lookup_store(:mem_cache_store, :raw => true) + cache.clear + cache.with_local_cache do + cache.write("foo", Marshal.dump([])) + assert_equal [], cache.read("foo") + end + end end end |