aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorKasper Timm Hansen <kaspth@gmail.com>2015-11-07 18:17:08 +0100
committerKasper Timm Hansen <kaspth@gmail.com>2015-11-07 18:17:08 +0100
commit5336a6333cfd5eba8bcbe4e28a1a875b786146f4 (patch)
treebcfb189775a0db1da205e39974b4afc20c5d3b94 /activesupport
parent24bddfc542cf218e395029db3ece4502ae79eb3d (diff)
parente401a6bb251d382901d0e4e80b09545b29b16a89 (diff)
downloadrails-5336a6333cfd5eba8bcbe4e28a1a875b786146f4.tar.gz
rails-5336a6333cfd5eba8bcbe4e28a1a875b786146f4.tar.bz2
rails-5336a6333cfd5eba8bcbe4e28a1a875b786146f4.zip
Merge pull request #22197 from grosser/grosser/fetch
do not override fetch on local cache
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/cache/strategy/local_cache.rb14
-rw-r--r--activesupport/test/caching_test.rb11
2 files changed, 14 insertions, 11 deletions
diff --git a/activesupport/lib/active_support/cache/strategy/local_cache.rb b/activesupport/lib/active_support/cache/strategy/local_cache.rb
index 4e2d3e9875..d521061004 100644
--- a/activesupport/lib/active_support/cache/strategy/local_cache.rb
+++ b/activesupport/lib/active_support/cache/strategy/local_cache.rb
@@ -48,10 +48,6 @@ module ActiveSupport
@data.clear
end
- def fetch(*args, &block)
- @data.fetch(*args, &block)
- end
-
def read_entry(key, options)
@data[key]
end
@@ -64,6 +60,10 @@ module ActiveSupport
def delete_entry(key, options)
!!@data.delete(key)
end
+
+ def fetch_entry(key, options = nil) # :nodoc:
+ @data.fetch(key) { @data[key] = yield }
+ end
end
# Use a local cache for the duration of block.
@@ -103,11 +103,7 @@ module ActiveSupport
protected
def read_entry(key, options) # :nodoc:
if cache = local_cache
- cache.fetch(key) do
- entry = super
- cache.write_entry(key, entry, options)
- entry
- end
+ cache.fetch_entry(key) { super }
else
super
end
diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb
index 94e73b6df3..3629f5e64b 100644
--- a/activesupport/test/caching_test.rb
+++ b/activesupport/test/caching_test.rb
@@ -633,6 +633,13 @@ module LocalCacheBehavior
end
end
+ def test_local_cache_fetch
+ @cache.with_local_cache do
+ @cache.send(:local_cache).write 'foo', 'bar'
+ assert_equal 'bar', @cache.send(:local_cache).fetch('foo')
+ end
+ end
+
def test_local_cache_of_write_nil
@cache.with_local_cache do
assert @cache.write('foo', nil)
@@ -1102,11 +1109,11 @@ class CacheStoreLoggerTest < ActiveSupport::TestCase
def test_log_with_proc_namespace
proc = Proc.new do
"proc_namespace"
- end
+ end
@cache.fetch('foo', {:namespace => proc}) { 'bar' }
assert_match %r{proc_namespace:foo}, @buffer.string
end
-
+
def test_mute_logging
@cache.mute { @cache.fetch('foo') { 'bar' } }
assert @buffer.string.blank?