Skip to content
Browse files

Merge pull request #12196 from h-lame/fix-activesupport-cache-filesto…

…re-cleanup

Fix FileStore#cleanup to no longer rely on missing each_key method
  • Loading branch information...
2 parents 0fbb797 + accd492 commit cdc10c898d4865302740340eedec4f5f4ca76565 @rafaelfranca rafaelfranca committed Sep 12, 2013
View
4 activesupport/CHANGELOG.md
@@ -1,3 +1,7 @@
+* Fix ActiveSupport::Cache::FileStore#cleanup to no longer rely on missing each_key method.
+
+ *Murray Steele*
+
* Ensure that autoloaded constants in all-caps nestings are marked as
autoloaded.
View
3 activesupport/lib/active_support/cache/file_store.rb
@@ -33,7 +33,8 @@ def clear(options = nil)
# Premptively iterates through all stored keys and removes the ones which have expired.
def cleanup(options = nil)
options = merged_options(options)
- each_key(options) do |key|
+ search_dir(cache_path) do |fname|
+ key = file_path_key(fname)
entry = read_entry(key, options)
delete_entry(key, options) if entry && entry.expired?
end
View
12 activesupport/test/caching_test.rb
@@ -709,6 +709,18 @@ def test_log_exception_when_cache_read_fails
@cache.send(:read_entry, "winston", {})
assert @buffer.string.present?
end
+
+ def test_cleanup_removes_all_expired_entries
+ time = Time.now
+ @cache.write('foo', 'bar', expires_in: 10)
+ @cache.write('baz', 'qux')
+ @cache.write('quux', 'corge', expires_in: 20)
+ Time.stubs(:now).returns(time + 15)
+ @cache.cleanup
+ assert_not @cache.exist?('foo')
+ assert @cache.exist?('baz')
+ assert @cache.exist?('quux')
+ end
end
class MemoryStoreTest < ActiveSupport::TestCase

0 comments on commit cdc10c8

Please sign in to comment.
Something went wrong with that request. Please try again.