lib/ro/cache.rb in ro-1.1.1 vs lib/ro/cache.rb in ro-1.2.0
- old
+ new
@@ -1,20 +1,26 @@
module Ro
- class Cache < ::Hash
+ class Cache < ::Map
def write(key, value)
- self[key] = value
+ invalidate(key)
+ set(key => value)
end
def read(key, &block)
- if has_key?(key)
- self[key]
+ if has?(key)
+ get(key)
else
if block
value = block.call
write(key, value)
else
nil
end
end
+ end
+
+ def invalidate(key)
+ prefix = Array(key).dup.tap{|array| array.pop}
+ set(prefix, {})
end
end
end