Fixes "Cached fragment hit" written to log even if fragment is not cached (Erik Andrejko) [#2917 state:resolved]

This commit is contained in:
Yehuda Katz 2009-08-08 12:46:44 -03:00
parent 0fbeaa98e4
commit efcfce50c4
2 changed files with 17 additions and 2 deletions

@ -36,8 +36,8 @@ def fragment_cache_key(key)
def fragment_for(buffer, name = {}, options = nil, &block) #:nodoc:
if perform_caching
if cache = read_fragment(name, options)
buffer.concat(cache)
if fragment_exist?(name,options)
buffer.concat(read_fragment(name, options))
else
pos = buffer.length
block.call

@ -625,6 +625,21 @@ def test_fragment_for
assert !fragment_computed
assert_equal 'generated till now -> fragment content', buffer
end
def test_fragment_for_logging
fragment_computed = false
@controller.class.expects(:benchmark).with('Cached fragment exists?: views/expensive')
@controller.class.expects(:benchmark).with('Cached fragment miss: views/expensive')
@controller.class.expects(:benchmark).with('Cached fragment hit: views/expensive').never
buffer = 'generated till now -> '
@controller.fragment_for(buffer, 'expensive') { fragment_computed = true }
assert fragment_computed
assert_equal 'generated till now -> ', buffer
end
end
class FunctionalCachingController < ActionController::Base