I seem to have @facilities = Facility.find(:all) in a lot of places in my application and my facilities model data rarely changes. How can I cache it so that I don't have to hit the DB each time?
Craig
I seem to have @facilities = Facility.find(:all) in a lot of places in my application and my facilities model data rarely changes. How can I cache it so that I don't have to hit the DB each time?
Craig
Craig White wrote:
I seem to have @facilities = Facility.find(:all) in a lot of places in my application and my facilities model data rarely changes. How can I cache it so that I don't have to hit the DB each time?
class Facility < ActiveRecord::Base after_save {@@all_facilities = nil} def self.all_facilities @@all_facilities ||= self.find(:all) end end
@facilities = Facility.all_facilities
Craig White wrote: > I seem to have @facilities = Facility.find(:all) in a lot of places in > my application and my facilities model data rarely changes. How can I > cache it so that I don't have to hit the DB each time?
class Facility < ActiveRecord::Base after_save {@@all_facilities = nil} def self.all_facilities @@all_facilities ||= self.find(:all) end end
@facilities = Facility.all_facilities
Craig White wrote:
Craig White wrote:
I seem to have @facilities = Facility.find(:all) in a lot of places in my application and my facilities model data rarely changes. How can I cache it so that I don't have to hit the DB each time?
class Facility < ActiveRecord::Base after_save {@@all_facilities = nil} def self.all_facilities @@all_facilities ||= self.find(:all) end end @facilities = Facility.all_facilities
---- thanks - made it simple...I likee Craig
Note this will only work if you are only running a single process.
Craig White wrote: >
> > Craig White wrote: > >
> > > I seem to have @facilities = Facility.find(:all) in a lot of places in > > > my application and my facilities model data rarely changes. How can I > > > cache it so that I don't have to hit the DB each time? > > >
> > class Facility < ActiveRecord::Base > > after_save {@@all_facilities = nil} > > def self.all_facilities > > @@all_facilities ||= self.find(:all) > > end > > end > > > > > > @facilities = Facility.all_facilities > >
> ---- > thanks - made it simple...I likee > > Craig > >
Note this will only work if you are only running a single process.
Craig White wrote:
Craig White wrote:
Craig White wrote:
I seem to have @facilities = Facility.find(:all) in a lot of places in my application and my facilities model data rarely changes. How can I cache it so that I don't have to hit the DB each time?
class Facility < ActiveRecord::Base after_save {@@all_facilities = nil} def self.all_facilities @@all_facilities ||= self.find(:all) end end @facilities = Facility.all_facilities
---- thanks - made it simple...I likee Craig
Note this will only work if you are only running a single process.
---- ruh-roh... I run several mongrels...no workee? Or will each cache separately?
Each process will have its own cache.
Craig White wrote:
I run several mongrels...no workee? Or will each cache separately?
Each will cache separately but what Jack means is that if one process makes a change, the others will not notice and they will have stale data.
In that situation, you can cache in an external repository (such as memcache) which each thread is able to update.
Craig White wrote: > I run several mongrels...no workee? Or will each cache separately?
Each will cache separately but what Jack means is that if one process makes a change, the others will not notice and they will have stale data.
In that situation, you can cache in an external repository (such as memcache) which each thread is able to update.