Sha256: da791f062a1f0841711e3968f7d5eaa8e7eb382214a0bcb7a2af05f25a058bc5
Contents?: true
Size: 1.25 KB
Versions: 2
Compression:
Stored size: 1.25 KB
Contents
require 'og' require 'base64' module Glue class OgCached include Og::EntityMixin property :unique_id, String, :sql => 'PRIMARY KEY' property :expires, Time property :cache_name, String property :content, String set_primary_key :unique_id, String end class OgCache def initialize(cache_name, keepalive = nil) @cache_name = cache_name @keepalive = keepalive end def []=(k,v) unless s = OgCached.find_by_unique_id_and_cache_name(k.to_s, @cache_name) s = OgCached.new s.cache_name = @cache_name s.expires = Time.now + @keepalive if @keepalive s.unique_id = k.to_s end #s.content = v.to_yaml s.content = encode(v) s.insert end def [](k) s = OgCached.find_by_unique_id_and_cache_name(k.to_s, @cache_name) decode(s.content) if s end def gc! OgCached.find(:condition => ["expires < ? AND cache_name = ?", Time.now, @cache_name]).each {|s| s.delete } end def all OgCached.find_by_cache_name(@cache_name) end private def encode(c) Base64.encode64(Marshal.dump(c)) end def decode(c) Marshal::load(Base64.decode64(c)) #s.content = YAML::load(s.content) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
glue-0.41.0 | lib/glue/cache/og.rb |
glue-0.40.0 | lib/glue/cache/og.rb |