From 75acaaa04320e85b718d41a08180b6ced6a06ca5 Mon Sep 17 00:00:00 2001 From: Julien Letessier Date: Thu, 27 Aug 2015 16:52:44 +0100 Subject: [PATCH] Adds optional ttl argument to Metastore#write --- lib/rack/cache/redis_metastore.rb | 8 ++++++-- test/rack/cache/metastore/redis_test.rb | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/rack/cache/redis_metastore.rb b/lib/rack/cache/redis_metastore.rb index c1c4d03..2084cf5 100644 --- a/lib/rack/cache/redis_metastore.rb +++ b/lib/rack/cache/redis_metastore.rb @@ -29,8 +29,12 @@ def read(key) cache.get(hexdigest(key)) || [] end - def write(key, entries) - cache.set(hexdigest(key), entries) + def write(key, entries, ttl=0) + if ttl.zero? + cache.set(hexdigest(key), entries) + else + cache.setex(hexdigest(key), ttl, entries) + end end def purge(key) diff --git a/test/rack/cache/metastore/redis_test.rb b/test/rack/cache/metastore/redis_test.rb index 5ae2a58..0906ab2 100644 --- a/test/rack/cache/metastore/redis_test.rb +++ b/test/rack/cache/metastore/redis_test.rb @@ -113,6 +113,13 @@ def self.call(request); request.path_info.reverse end store_simple_entry('/bad', { 'SOME_THING' => Proc.new {} }) end + it 'takes a ttl parameter for #write' do + @store.write('/foo', [[{},{}]], 123) + data = @store.read('/foo') + data.must_equal([[{},{}]]) + end + + # Abstract methods =========================================================== it 'stores a cache entry' do @@ -266,4 +273,4 @@ def self.call(request); request.path_info.reverse end define_method :uri do |uri| URI.parse uri end -end \ No newline at end of file +end