Skip to content

Commit

Permalink
Properly cache value when it is "false"
Browse files Browse the repository at this point in the history
  • Loading branch information
hasclass committed Jul 8, 2011
1 parent ad912c0 commit 9e63f9f
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
4 changes: 2 additions & 2 deletions activesupport/lib/active_support/cache.rb
Expand Up @@ -557,7 +557,7 @@ def initialize(value, options = {})
@expires_in = options[:expires_in]
@expires_in = @expires_in.to_f if @expires_in
@created_at = Time.now.to_f
if value
if defined?(value)
if should_compress?(value, options)
@value = Zlib::Deflate.deflate(Marshal.dump(value))
@compressed = true
Expand All @@ -576,7 +576,7 @@ def raw_value

# Get the value stored in the cache.
def value
if @value
if defined?(@value)
val = compressed? ? Marshal.load(Zlib::Inflate.inflate(@value)) : @value
unless val.frozen?
val.freeze rescue nil
Expand Down
5 changes: 5 additions & 0 deletions activesupport/test/caching_test.rb
Expand Up @@ -188,6 +188,11 @@ def test_should_read_and_write_nil
assert_equal nil, @cache.read('foo')
end

def test_should_read_and_write_false
assert_equal true, @cache.write('foo', false)
assert_equal false, @cache.read('foo')
end

def test_read_multi
@cache.write('foo', 'bar')
@cache.write('fu', 'baz')
Expand Down

0 comments on commit 9e63f9f

Please sign in to comment.