Memorize:
Allows Rails applications to do and control cache of actions. With Memorize, you can expires your actions, calling a method in your model (or a CustomClass). if you’ve suffered with Rails caches_action and is tired of trying to expire your cache, Memorize is for you ! See below my ‘code-explanation’:
class Article < ActiveRecord::Base
extend Memorize::Keys
[...]
end
class TestController < ApplicationController
#'classic' case of index, with categories, pagination and format support.
memorize_action :index, :key_builder => Article, :params => [:category, :page, :format]
#case of id, slug ... etc. Accessing a resource with identification.
memorize_action :show, :key_builder => Article, :key_param => :slug, :params => [:page, :format]
#case of 'custom' key, if you want to use a 'home made' solution. (here Memorize don't know how expires)
memorize_action :custom, :cache_path => lambda { |controller| "my_key" }
[...]
end
class ArticleSweeper < ActionController::Caching::Sweeper
observe Article
def after_save(article)
Article.cache_expires(:index)
Article.cache_expires(:show, :key => article.slug)
Rails.cache.delete("my_key") #Memorize does not handle custom keys
end
end
More
Memorize is designed to be simple and objetive. Used and tested for Rails 2.3.x
Install
Just execute:
sudo gem install memorize
And add to your environment.
Important: you can configure Memorize cache_store, adding a memorize.rb to your config/initializers. Example:
#Some examples to set Memorize cache_store:
Memorize.cache_store = Rails.cache
#Memorize.cache_store = ActiveSupport::Cache.lookup_store(:memory_store)
#Memorize.cache_store = ActiveSupport::Cache.lookup_store(:mem_cache_store, '127.0.0.1:11211')
#Your models can be 'Keys factories'
#ActiveRecord::Base.extend Memorize::Keys
Bugs and Feedback
If you find any issues, use Github issues tracker.
Copyright © 2010 Roger Leite 1up4dev