ziggy
Cache any method on any class using Rails.cache
Install
$ gem sources -a http://gems.github.com (you only have to do this once)
$ sudo gem install opsb-ziggy
Introduction
ziggy will cache methods and then expire them. The results from method invocations are stored in and read from the Rails.cache using Rails.cache.write(key, value) and Rails.cache.read(key).
Cache a method
class TwitterUser
include Ziggy
cached :timeline
def timeline
twitter_client.timeline
end
...
end
Cache many methods
class TwitterUser
include Ziggy
cached :timeline, :direct_messages
def timeline
twitter_client.timeline
end
def direct_messages
twitter_client.direct_messages
end
...
end
expire_after
The default expire_after time is 2.5.minutes, to customise do
class TwitterUser
include Ziggy
cached :timeline, :expire_after => 1.5.minutes
def timeline
twitter_client.timeline
end
...
end
Customise key
The method name and arguments are always used as the base of the cache key. You can customise the start of the cache key using a block.
class TwitterUser
include Ziggy
cached :timeline { |twitterUser| twitterUser.screen_name }
def timeline
twitter_client.timeline
end
...
end
Different options for different methods
class TwitterUser
include Ziggy
cached :timeline, :expire_after => 1.minutes { |twitterUser| twitterUser.screen_name }
cached :direct_messages, :expire_after => 10.minutes { |twitterUser| twitterUser.screen_name }
def timeline
twitter_client.timeline
end
def direct_messages
twitter_client.direct_messages
end
...
end
Disable ziggy
Perhaps you want to disable ziggy for tests? Add the following to your test.rb
Ziggy::active = false