aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorSantiago Pastorino <santiago@wyeworks.com>2011-07-08 06:10:55 -0700
committerSantiago Pastorino <santiago@wyeworks.com>2011-07-08 06:10:55 -0700
commit4f7ca00bf28fab4bc788e278734debaec70ea838 (patch)
treef2ffda981f0f796de09095ca603923c23d9e1ace /activesupport
parent3a1ec9b544c6056fb69b831cd3ed551a656a9b61 (diff)
parent9e63f9f2e42a3cbfd7b36e47ee5a7c94da757152 (diff)
downloadrails-4f7ca00bf28fab4bc788e278734debaec70ea838.tar.gz
rails-4f7ca00bf28fab4bc788e278734debaec70ea838.tar.bz2
rails-4f7ca00bf28fab4bc788e278734debaec70ea838.zip
Merge pull request #2010 from hasclass/cache_false_values
Properly cache value when it is "false"
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/cache.rb4
-rw-r--r--activesupport/test/caching_test.rb5
2 files changed, 7 insertions, 2 deletions
diff --git a/activesupport/lib/active_support/cache.rb b/activesupport/lib/active_support/cache.rb
index 85692428e3..ac88c82709 100644
--- a/activesupport/lib/active_support/cache.rb
+++ b/activesupport/lib/active_support/cache.rb
@@ -557,7 +557,7 @@ module ActiveSupport
@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
@@ -576,7 +576,7 @@ module ActiveSupport
# 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
diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb
index ed5ccb44de..498127e5bc 100644
--- a/activesupport/test/caching_test.rb
+++ b/activesupport/test/caching_test.rb
@@ -188,6 +188,11 @@ module CacheStoreBehavior
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')