CachedModels

CachedModels provides to your models a transparent approach to use Rails internal caching mechanism.

Check for news and tutorials at the project home page.

Usage

Using Memcached and Rails 2.1.1

Make sure to configure your current environment with:

config.cache_classes = true config.action_controller.perform_caching = true config.cache_store = :mem_cache_store

class Project < ActiveRecord::Base

has_many :developers, :cached => true
has_many :tickets, :cached => true
has_many :recent_tickets, :limit => 5,
  :order => 'id DESC', :cached => true

end

class Developer < ActiveRecord::Base

belongs_to :project, :cached => true

end

Example 1

project.developers # Database fetch and automatic cache storing

developer = project.developers.last
developer.update_attributes :first_name => 'Luca' # Database update and cache expiration for project cache

Example 2

project2.developers # Database fetch and automatic cache storing
project2.developers << developer # Database update and cache renewal for both project and project2 caches

Example 3

project.tickets # Database fetch and automatic cache storing
ticket = project.recent_tickets.first
ticket.update_attributes :state => 'solved' # Database update and cache expiration for both tickets and recent_tickets entries

Install

There are three ways to install CachedModels

Gemified plugin:

environment.rb

  Rails::Initializer.run do |config|
    config.gem 'cached-models'
  end

$ (sudo) rake gems:install
$ rake gems:unpack

Rails plugin:

$ ./script/plugin install git://github.com/jodosha/cached-models.git

Standalone:

$ (sudo) gem install cached-models

in your project:

  require 'rubygems'
  require 'activerecord'
  require 'cached-models'

  ActiveRecord::Base.rails_cache = ActiveSupport::Cache.lookup_store(:mem_cache_store, 'localhost')

Contribute

  • Check out the code and test it: $ git clone git://github.com/jodosha/cached-models.git $ rake cached_models

  • Create a ticket to the Sushistar Lighthouse page

  • Create a patch and add as attachment to the ticket.

Copyright © 2008 Luca Guidi, released under the MIT license