Sha256: 78d837f4887d9e2121b2b6396984c2e32a7504860bab19983b2eac18ec5b8279
Contents?: true
Size: 1.01 KB
Versions: 1
Compression:
Stored size: 1.01 KB
Contents
require 'rubygems' require 'cgi' require 'json' require 'memcached' class Accelerator def initialize(host="localhost:11211") @memc = Memcached.new(host) end def delete(uri) @memc.delete(key(uri)) end def expire(uri, ttl=nil) if data = get_and_set_time(uri) data[:ttl] = ttl if ttl data[:time] -= data[:ttl] || 10 @memc.set(key(uri), data.to_json, 604800, false) end end def get(uri) if data = get_and_parse(uri) [ data.delete(:body), data ] end end def set(uri, body) data = get_and_set_time(uri) || { :time => Time.now.to_i } data[:body] = body @memc.set(key(uri), data.to_json, 604800, false) end private def key(k) CGI.escape(k).gsub(/%../) { |s| s.downcase } end def get_and_parse(uri) data = @memc.get(key(uri), nil) rescue nil if data JSON.parse(data, :symbolize_names => true) end end def get_and_set_time(uri) if data = get_and_parse(uri) data[:time] = Time.now.to_i end data end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
accelerator-0.1.0 | lib/accelerator.rb |