aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorMichael Grosser <michael@grosser.it>2015-11-06 08:46:21 -0800
committerMichael Grosser <michael@grosser.it>2015-11-29 20:54:09 -0800
commit8c3bdb757838f86117fc83f24f8c4290d22a71d5 (patch)
tree6687b438ef307851fa44a89c6b3132672fff0028 /activesupport
parent312485f3e88af3966b586275ae5097198bfef6a0 (diff)
downloadrails-8c3bdb757838f86117fc83f24f8c4290d22a71d5.tar.gz
rails-8c3bdb757838f86117fc83f24f8c4290d22a71d5.tar.bz2
rails-8c3bdb757838f86117fc83f24f8c4290d22a71d5.zip
even if a write fails, store the raw value
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/cache/mem_cache_store.rb8
-rw-r--r--activesupport/test/caching_test.rb8
2 files changed, 12 insertions, 4 deletions
diff --git a/activesupport/lib/active_support/cache/mem_cache_store.rb b/activesupport/lib/active_support/cache/mem_cache_store.rb
index 4b0ad37586..46110b09da 100644
--- a/activesupport/lib/active_support/cache/mem_cache_store.rb
+++ b/activesupport/lib/active_support/cache/mem_cache_store.rb
@@ -36,13 +36,13 @@ module ActiveSupport
end
def write_entry(key, entry, options) # :nodoc:
- retval = super
- if options[:raw] && local_cache && retval
+ if options[:raw] && local_cache
raw_entry = Entry.new(entry.value.to_s)
raw_entry.expires_at = entry.expires_at
- local_cache.write_entry(key, raw_entry, options)
+ super(key, raw_entry, options)
+ else
+ super
end
- retval
end
end
diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb
index 7bef73136c..a1bd2d5356 100644
--- a/activesupport/test/caching_test.rb
+++ b/activesupport/test/caching_test.rb
@@ -655,6 +655,14 @@ module LocalCacheBehavior
end
end
+ def test_local_cache_of_read_nil
+ @cache.with_local_cache do
+ assert_equal nil, @cache.read('foo')
+ @cache.send(:bypass_local_cache) { @cache.write 'foo', 'bar' }
+ assert_equal nil, @cache.read('foo')
+ end
+ end
+
def test_local_cache_of_delete
@cache.with_local_cache do
@cache.write('foo', 'bar')