Ruby on Rails
Java, Distributed Systems
timed_fragment_cache on Rails 2.1
With Rails 2.1 cache_erb_fragment has been replaced by write_fragment. This breaks a plugin I really enjoy to use: timed_fragment_cache by Richard Livsey.
It basically allows you to specify an expiry for the fragments you cache, e.g. inside memcache, by adding a "meta" fragment for the fragment you store containing the expiry time.
Some usage examples - pretty self-explaining:
In your view:
<%- cache 'my_key', 1.hour.from_now do -%> ... <%- end -%>
With extensive queries - your view ...:
<%- cache 'some_posts' -%> <%- @posts.each do |post| -%> <%= @post.title %> <%- end -%> <%- end -%>
... and your controller:
when_fragment_expired 'some_posts', 1.hour.from_now do @posts = Post.find( :all ) end
Since timed_fragment_cache is so convient to use and essentially because I simply cannot live without it, I've fixed Richards version to work with Rails 2.1, i.e. let it use write_fragment instead of cache_erb_fragment.