module ActiveRecord::MySuperB
Public Class Methods
acts_as_cachable(options={})
click to toggle source
# File lib/acts_as_cachable.rb, line 13 def self.acts_as_cachable(options={}) default_configuration = { :methods=>[:all,:first,:last] }.merge(options) default_configuration[:methods].each do |m| next unless self.respond_to?(m.to_sym) self.metaclass.send(:alias_method, "uncached_#{m}".to_sym, "#{m}".to_sym) self.metaclass.send(:define_method,"self.#{m}".to_sym) do Rails.cache.fetch("#{self.class.name}_#{m}") do self.metaclass.send("uncached_#{m}".to_sym) end end end end
included(base)
click to toggle source
# File lib/acts_as_cachable.rb, line 11 def self.included(base) base.module_eval do def self.acts_as_cachable(options={}) default_configuration = { :methods=>[:all,:first,:last] }.merge(options) default_configuration[:methods].each do |m| next unless self.respond_to?(m.to_sym) self.metaclass.send(:alias_method, "uncached_#{m}".to_sym, "#{m}".to_sym) self.metaclass.send(:define_method,"self.#{m}".to_sym) do Rails.cache.fetch("#{self.class.name}_#{m}") do self.metaclass.send("uncached_#{m}".to_sym) end end end end end end