Agile Web Development

Build it. Launch it. Love it.

Memcache fragments with time expiry

About

memcache_fragments is a very simple plugin (10 lines of code!) that

  1. makes rails fragment caching play nice with robot coop’s memcache-client by wrapping its get/set methods with read/write methods that rails expects.
  2. makes it easy to do time based fragment expiry using this syntax:
  <% cache 'my/cache/key', :expire => 10.minutes do %>
        ...
  <% end %>

Installing and using memcache_fragments

You’ll first need the memcache-client gem from robot coop

  $ sdo gem install memcache-client

Now install the plugin

  $ script/plugin install memcache_fragments

Alternatively, you can use the gem

  $ sudo gem install memcache_fragments

  # in environment.rb
  require 'memcache_fragments'

Setting up the fragment cache

See the docs from memcache-client, but I found placing this in your environment.rb (or specific environment) to be the easiest:

  CACHE = MemCache.new :c_threshold => 10_000,:compression => true,:debug => false,:namespace => 'mycachespace',:readonly => false,:urlencode => false
  CACHE.servers = 'localhost:11211'

  config.action_controller.session_store = :mem_cache_store
  config.action_controller.fragment_cache_store = CACHE, {}
  ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.merge!({ 'cache' => CACHE })

Vitals

Home http://skwpspace.com/2006/08/19/rails-fragment-cache-with-memcached-client-and-time-based-expire-option/
Repository svn://rubyforge.org/var/svn/mcache-fragment
License PublicDomain
Tags Tag_red cachingfragment_cachememcachedview
Rating (7 votes)
Owner Yan Pritzker
Created 19 August 2006

Comments

  • Avatar
    renuka
    26 April 2007

    hello, i have install this plugin and i have got this error so can anyone help me

    MemCache Error: No connection to server Fragment read: my/cache/key (0.00270)

    ActionView::TemplateError (can't convert true into String) on line #4 of app/views/tag/_tagcloud.rhtml: 1: <!-- START POPULAR TAGS --> 2: <div> 3: <h2>Popular Tags</h2> 4: <% cache 'my/cache/key', :expire => 2.minutes do %> 5: <% tag_cloud @tags, %w(nube1 nube2 nube3 nube4 nube5) do |name, css_class| %> 6: <%= link_to name, {:action => :tagdetail, :controller => 'tag', :id => name}, :class => css_class %> 7: <% end %>

    pls give me reply as soon as possible

Add a comment