Class | Rack::Cache::MetaStore::Disk |
In: |
lib/rack/cache/metastore.rb
|
Parent: | MetaStore |
Concrete MetaStore implementation that stores request/response pairs on disk.
root | [R] |
# File lib/rack/cache/metastore.rb, line 216 216: def initialize(root="/tmp/rack-cache/meta-#{ARGV[0]}") 217: @root = File.expand_path(root) 218: FileUtils.mkdir_p(root, :mode => 0755) 219: end
# File lib/rack/cache/metastore.rb, line 259 259: def self.resolve(uri) 260: path = File.expand_path(uri.opaque || uri.path) 261: new path 262: end
# File lib/rack/cache/metastore.rb, line 239 239: def purge(key) 240: path = key_path(key) 241: File.unlink(path) 242: nil 243: rescue Errno::ENOENT, IOError 244: nil 245: end
# File lib/rack/cache/metastore.rb, line 221 221: def read(key) 222: path = key_path(key) 223: File.open(path, 'rb') { |io| Marshal.load(io) } 224: rescue Errno::ENOENT, IOError 225: [] 226: end
# File lib/rack/cache/metastore.rb, line 228 228: def write(key, entries) 229: tries = 0 230: begin 231: path = key_path(key) 232: File.open(path, 'wb') { |io| Marshal.dump(entries, io, -1) } 233: rescue Errno::ENOENT, IOError 234: Dir.mkdir(File.dirname(path), 0755) 235: retry if (tries += 1) == 1 236: end 237: end