<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: cool code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Wed, 23 Jul 2008 20:52:38 GMT</pubDate>
    <description>DZone Snippets: cool code</description>
    <item>
      <title>response caching in camping</title>
      <link>http://snippets.dzone.com/posts/show/4988</link>
      <description>A basic implementation of response caching in camping.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Camping.goes :MyCampingApp&lt;br /&gt;&lt;br /&gt;module MyCampingApp&lt;br /&gt;  module Controller&lt;br /&gt;    class View &lt; R '/'&lt;br /&gt;      def get&lt;br /&gt;        cache('root') do&lt;br /&gt;          'Expensive operation!'&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def flush(id)&lt;br /&gt;    f = File.dirname(__FILE__) + "/cache/#{id}"&lt;br /&gt;    File.delete(f) if File.exists?(f)&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def cache(id, timeout = 1.hour)&lt;br /&gt;    f = File.dirname(__FILE__) + "/cache/#{id}"&lt;br /&gt;    &lt;br /&gt;    if File.exists?(f) &amp;&amp; (Time.now - File.stat(f).mtime) &lt; timeout&lt;br /&gt;      File.read(f)&lt;br /&gt;    else&lt;br /&gt;      r = yield&lt;br /&gt;      open(f, 'w'){|wr| wr.write(r)}&lt;br /&gt;      r&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def self.create&lt;br /&gt;    cache_dir = File.dirname(__FILE__) + "/cache"&lt;br /&gt;    Dir.mkdir(cache_dir) unless File.directory?(cache_dir)&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 16 Jan 2008 13:27:23 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4988</guid>
      <author>remvee (Remco van 't Veer)</author>
    </item>
  </channel>
</rss>
