public
Description: CachedModels provides to your ActiveRecord objects a transparent approach to use ActiveSupport caching mechanism.
Homepage: http://lucaguidi.com/pages/cached_models
Clone URL: git://github.com/jodosha/cached-models.git
cached-models / README
100644 96 lines (54 sloc) 2.29 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
= 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.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}[http://sushistar.lighthouseapp.com]
 
* Create a patch and add as attachment to the ticket.
 
 
 
Copyright (c) 2008 Luca Guidi, released under the MIT license