mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
pass the key to the block in cache.fetch on misses
This commit is contained in:
parent
40496430d5
commit
81b7112565
2 changed files with 12 additions and 7 deletions
|
@ -182,10 +182,10 @@ module ActiveSupport
|
|||
# the cache with the given key, then that data is returned.
|
||||
#
|
||||
# If there is no such data in the cache (a cache miss), then +nil+ will be
|
||||
# returned. However, if a block has been passed, that block will be run
|
||||
# in the event of a cache miss. The return value of the block will be
|
||||
# written to the cache under the given cache key, and that return value
|
||||
# will be returned.
|
||||
# returned. However, if a block has been passed, that block will be passed
|
||||
# the key and executed in the event of a cache miss. The return value of the
|
||||
# block will be written to the cache under the given cache key, and that
|
||||
# return value will be returned.
|
||||
#
|
||||
# cache.write('today', 'Monday')
|
||||
# cache.fetch('today') # => "Monday"
|
||||
|
@ -300,7 +300,7 @@ module ActiveSupport
|
|||
entry.value
|
||||
else
|
||||
result = instrument(:generate, name, options) do |payload|
|
||||
yield
|
||||
yield(name)
|
||||
end
|
||||
write(name, result, options)
|
||||
result
|
||||
|
|
|
@ -83,7 +83,7 @@ class CacheKeyTest < ActiveSupport::TestCase
|
|||
def test_expand_cache_key_of_true
|
||||
assert_equal 'true', ActiveSupport::Cache.expand_cache_key(true)
|
||||
end
|
||||
|
||||
|
||||
def test_expand_cache_key_of_array_like_object
|
||||
assert_equal 'foo/bar/baz', ActiveSupport::Cache.expand_cache_key(%w{foo bar baz}.to_enum)
|
||||
end
|
||||
|
@ -197,6 +197,11 @@ module CacheStoreBehavior
|
|||
assert_equal 'baz', @cache.fetch('foo') { 'baz' }
|
||||
end
|
||||
|
||||
def test_fetch_with_cache_miss_passes_key_to_block
|
||||
@cache.expects(:write).with('foo', 3, @cache.options)
|
||||
assert_equal 3, @cache.fetch('foo') { |key| key.length }
|
||||
end
|
||||
|
||||
def test_fetch_with_forced_cache_miss
|
||||
@cache.write('foo', 'bar')
|
||||
@cache.expects(:read).never
|
||||
|
@ -594,7 +599,7 @@ class FileStoreTest < ActiveSupport::TestCase
|
|||
assert_equal "views/index?id=1", @cache_with_pathname.send(:file_path_key, key)
|
||||
end
|
||||
|
||||
# Test that generated cache keys are short enough to have Tempfile stuff added to them and
|
||||
# Test that generated cache keys are short enough to have Tempfile stuff added to them and
|
||||
# remain valid
|
||||
def test_filename_max_size
|
||||
key = "#{'A' * ActiveSupport::Cache::FileStore::FILENAME_MAX_SIZE}"
|
||||
|
|
Loading…
Reference in a new issue