Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge pull request #1608 from sishen/sishen

MemcacheStore: deserialize the entry reading from local_cache when using
  • Loading branch information...
commit 8f2e32158bb2e5a0a762861b085c0880320f315e 2 parents e9f9ce9 + c2aacdf
@josevalim josevalim authored
View
8 activesupport/lib/active_support/cache/mem_cache_store.rb
@@ -183,6 +183,14 @@ def deserialize_entry(raw_value)
# 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
View
18 activesupport/test/caching_test.rb
@@ -635,7 +635,14 @@ def test_raw_values
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 @@ def test_local_cache_raw_values
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
Please sign in to comment.
Something went wrong with that request. Please try again.