aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEileen M. Uchitelle <eileencodes@users.noreply.github.com>2017-05-15 08:00:39 -0400
committerGitHub <noreply@github.com>2017-05-15 08:00:39 -0400
commit5bfb2875e9287c75f91e89f5e50654e5fbaa5855 (patch)
treecd25726d1aca26bb5de9cebca7c0728635e9645c
parentd48008f16438c2c9c9c7295f550568b82b95ef9e (diff)
parentdb9ae5f1e1449b09c08d55a8a3a21ff61d904bd3 (diff)
downloadrails-5bfb2875e9287c75f91e89f5e50654e5fbaa5855.tar.gz
rails-5bfb2875e9287c75f91e89f5e50654e5fbaa5855.tar.bz2
rails-5bfb2875e9287c75f91e89f5e50654e5fbaa5855.zip
Merge pull request #29083 from eugeneius/local_cache_unless_exist
Don't cache locally if unless_exist was passed
-rw-r--r--activesupport/lib/active_support/cache/strategy/local_cache.rb7
-rw-r--r--activesupport/test/caching_test.rb8
2 files changed, 14 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 672eb2bb80..91875a56f5 100644
--- a/activesupport/lib/active_support/cache/strategy/local_cache.rb
+++ b/activesupport/lib/active_support/cache/strategy/local_cache.rb
@@ -115,7 +115,12 @@ module ActiveSupport
end
def write_entry(key, entry, options)
- local_cache.write_entry(key, entry, options) if local_cache
+ if options[:unless_exist]
+ local_cache.delete_entry(key, options) if local_cache
+ else
+ local_cache.write_entry(key, entry, options) if local_cache
+ end
+
super
end
diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb
index c67ffe69b8..dbec684ce0 100644
--- a/activesupport/test/caching_test.rb
+++ b/activesupport/test/caching_test.rb
@@ -708,6 +708,14 @@ module LocalCacheBehavior
end
end
+ def test_local_cache_of_write_with_unless_exist
+ @cache.with_local_cache do
+ @cache.write("foo", "bar")
+ @cache.write("foo", "baz", unless_exist: true)
+ assert_equal @peek.read("foo"), @cache.read("foo")
+ end
+ end
+
def test_local_cache_of_delete
@cache.with_local_cache do
@cache.write("foo", "bar")