Sha256: 3d155d2b3c7f888b87d8e5253c0f6a458c3797f5310763deeaf45b99360a67e5

Contents?: true

Size: 1.33 KB

Versions: 20

Compression:

Stored size: 1.33 KB

Contents

module MetaFragmentCache
  def meta_fragment_key(name)
    return "META/META/#{name}", "META/DATA/#{name}"
  end
  
  def read_meta_fragment(name, options = nil)
    metakey, contentkey = meta_fragment_key(name)
    meta = YAML.load(read_fragment(metakey)) rescue {}
    content = read_fragment(contentkey)
    return meta, content
  end
  
  def read_meta_fragment_expire(name, options = nil)
    meta, content = read_meta_fragment(name, options)
    if(meta.kind_of? Hash and meta[:expires].kind_of? Time and meta[:expires] < Time.now)
      expire_meta_fragment(name)
      return {},nil
    else
      return meta, content
    end
  end
  
  def write_meta_fragment(name, meta, content, options = nil)
    metakey, contentkey = meta_fragment_key(name)
    write_fragment(contentkey, content)
    write_fragment(metakey, YAML.dump(meta))
  end
  
  def expire_meta_fragment(name, options = nil)
    if(name.kind_of? Regexp)
      metakey, contentkey = meta_fragment_key('.*'+name.source).collect {|key| Regexp.new("^#{key}")}
    elsif(name.kind_of? String)
      metakey, contentkey = meta_fragment_key(name)
    else
      raise "MetaFragmentCache only supports regexes and strings as expire keys"
    end
    expire_fragment(metakey)
    expire_fragment(contentkey)
  end
end

module ActionController
  class Base
    include MetaFragmentCache
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
typo-3.99.0 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-3.99.3 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-3.99.2 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-3.99.1 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-4.0.2 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-3.99.4 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-4.0.0 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-4.0.1 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-4.1.1 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-4.0.3 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-4.1 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-5.0.1 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-5.0.2 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-5.0.3.98.1 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-5.0 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-5.0.3.98 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-5.1.2 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-5.1.1 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-5.1.3 vendor/plugins/expiring_action_cache/lib/metafragment.rb
typo-5.1 vendor/plugins/expiring_action_cache/lib/metafragment.rb