CachedAttribute
CachedAttribute is a plugin that allows expensive model attributes to be cached on a per-instance basis. It supports memoization, multiple cache stores, invalidation, and ttl.
It can also be used to cached arbitrary methods based on their
Example
class ComplicatedModel < ActiveRecord::Base
def expensive_operation
... something expensive ...
end
# caches the calls to expensive_operation
cached_attribute :expensive_operation
class << self
def expensive_class_method(param1)
... something expensive ...
end
cached_attribute :expensive_class_method
end
end
c = ComplicatedModel.new
c.expensive_operation # => slow
c.expensive_operation # => fast!
c.invalidate_expensive_operation
c.expensive_operation # => slow
ComplicatedModel.expensive_class_method('some string or something') # => slow
ComplicatedModel.expensive_class_method('some other string or something') # => slow
ComplicatedModel.expensive_class_method('some string or something') # => fast
Copyright (c) 2009 Avvo, Inc., released under the MIT license