All Projects → jodosha → cached-models

jodosha / cached-models

Licence: MIT license
CachedModels provides to your ActiveRecord objects a transparent approach to use ActiveSupport caching mechanism.

Programming Languages

ruby
36898 projects - #4 most used programming language
= 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}[http://www.lucaguidi.com/pages/cached_models].



= Usage

Using Memcached and Rails 2.2.0

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')



= Test
  Make sure your current store is Memcached



= 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}[http://sushistar.lighthouseapp.com]

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



Copyright (c) 2008 Luca Guidi, released under the MIT license
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].