Sha256: c38af09fa0f65b664a6cb688f845c17e7842dcc8826f28c1e64f4bfd4999f468
Contents?: true
Size: 1.93 KB
Versions: 7
Compression:
Stored size: 1.93 KB
Contents
require 'moneta' require 'rack/cache/key' require 'rack/cache/meta_store' require 'rack/cache/entity_store' module Rack module Cache # @api public Moneta = {} # @api private module MonetaResolver include Rack::Utils def resolve(uri) cache = Rack::Cache::Moneta[uri.to_s.sub(%r{^moneta://}, '')] ||= begin options = parse_query(uri.query).map do |key, value| [key.to_sym, case value when 'true' true when 'false' false else value end] end ::Moneta.new(uri.host.to_sym, options.to_h) end new(cache) end end class MetaStore # @api public class Moneta < MetaStore extend MonetaResolver def initialize(cache) @cache = cache end def read(key) @cache[key] || [] end def write(key, entries) @cache[key] = entries end def purge(key) @cache.delete(key) nil end end # @api public MONETA = Moneta end class EntityStore # @api public class Moneta < EntityStore extend MonetaResolver def initialize(cache) @cache = cache end def open(key) data = read(key) data && [data] end def exist?(key) @cache.key?(key) end def read(key) @cache[key] end def write(body, ttl = 0) buf = StringIO.new key, size = slurp(body) { |part| buf.write(part) } @cache.store(key, buf.string, ttl == 0 ? {} : { expires: ttl }) [key, size] end def purge(key) @cache.delete(key) nil end end # @api public MONETA = Moneta end end end
Version data entries
7 entries across 7 versions & 1 rubygems