diff options
author | Joshua Peek <josh@joshpeek.com> | 2009-05-27 14:54:58 -0500 |
---|---|---|
committer | Joshua Peek <josh@joshpeek.com> | 2009-05-27 14:54:58 -0500 |
commit | 6ef329d3250cfc3a21184cc2a8248aa18a1f6815 (patch) | |
tree | ffc89a0391f5124937556aa9226eb204a9d25140 | |
parent | 61c471eebb3718a3ef5741e1e4d0974be7483290 (diff) | |
download | rails-6ef329d3250cfc3a21184cc2a8248aa18a1f6815.tar.gz rails-6ef329d3250cfc3a21184cc2a8248aa18a1f6815.tar.bz2 rails-6ef329d3250cfc3a21184cc2a8248aa18a1f6815.zip |
Ensure Memcache local cache returns duplicated values [#2302 state:resolved]
-rw-r--r-- | activesupport/lib/active_support/cache/strategy/local_cache.rb | 2 | ||||
-rw-r--r-- | activesupport/test/caching_test.rb | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/cache/strategy/local_cache.rb b/activesupport/lib/active_support/cache/strategy/local_cache.rb index 4bbcd8e4c4..3b5fccc737 100644 --- a/activesupport/lib/active_support/cache/strategy/local_cache.rb +++ b/activesupport/lib/active_support/cache/strategy/local_cache.rb @@ -45,7 +45,7 @@ module ActiveSupport elsif value.nil? value = super local_cache.write(key, value || NULL) if local_cache - value + value.duplicable? ? value.dup : value else # forcing the value to be immutable value.duplicable? ? value.dup : value diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb index bd237a5c8e..51d04d9388 100644 --- a/activesupport/test/caching_test.rb +++ b/activesupport/test/caching_test.rb @@ -180,6 +180,15 @@ uses_memcached 'memcached backed store' do end end + def test_stored_objects_should_not_be_frozen + @cache.with_local_cache do + @cache.write('foo', 'bar') + end + @cache.with_local_cache do + assert !@cache.read('foo').frozen? + end + end + def test_write_should_return_true_on_success @cache.with_local_cache do result = @cache.write('foo', 'bar') |