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