document.write('<link rel="stylesheet" href="http://flowcoder.com/stylesheets/pygment_trac.css" />');
document.write('<link rel="stylesheet" href="http://flowcoder.com/stylesheets/embed.css" />');
document.write('<div class="flowcoder_post flowcoder_clearfix">');
document.write('<div class="flowcoder_posttitle"><a href=\"http://flowcoder.com/96\">Cron job and sprinkle script for weekly CouchDB compaction<\/a></div>');
document.write('<div class="flowcoder_postbody flowcoder_syntax"><div class=\"highlight\"><pre><span class=\"c1\"># http://github.com/crafterm/sprinkle<\/span>\n<span class=\"c1\"># http://couchdb.apache.org/<\/span>\n<span class=\"c1\"># http://wiki.apache.org/couchdb/API_Cheatsheet<\/span>\n\n<span class=\"c1\"># Requires the rubygems: rubygems right_aws right_http_connection json <\/span>\n\n<span class=\"n\">package<\/span> <span class=\"ss\">:couchdb_compaction<\/span> <span class=\"k\">do<\/span>\n  <span class=\"n\">config_file<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">&#39;/etc/cron.weekly/couchdb_compaction&#39;<\/span>\n  <span class=\"n\">config_text<\/span> <span class=\"o\">=<\/span> <span class=\"sx\">%q[<\/span>\n<span class=\"sx\">#!/usr/bin/ruby<\/span>\n<span class=\"sx\">%w(rubygems right_aws right_http_connection json).each { |f| require f }<\/span>\n\n<span class=\"sx\">dbs = JSON.parse %x(curl -sS &#39;http://localhost:5984/_all_dbs&#39;)<\/span>\n\n<span class=\"sx\">dbs.each do |db|<\/span>\n<span class=\"sx\">  %x(curl -X POST -sS &#39;http://localhost:5984/#{db}/_compact&#39;)<\/span>\n<span class=\"sx\">  %x(curl -X POST -sS &#39;http://localhost:5984/#{db}/_view_cleanup&#39;)<\/span>\n\n<span class=\"sx\">  design_docs = JSON.parse %x(curl -sS &#39;http://localhost:5984/#{db}/_all_docs?startkey=%22_design%2F%22&amp;endkey=%22_design0%22&#39;)<\/span>\n\n<span class=\"sx\">  design_docs.each do |doc|<\/span>\n<span class=\"sx\">    name = doc[1][0][&#39;id&#39;].gsub(&#39;_design/&#39;, &#39;&#39;) rescue nil<\/span>\n<span class=\"sx\">    %x(curl -X POST -sS &#39;http://localhost:5984/#{db}/_compact/#{name}&#39;) if name<\/span>\n<span class=\"sx\">  end<\/span>\n<span class=\"sx\">end<\/span>\n<span class=\"sx\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">lstrip<\/span>\n\n  <span class=\"n\">push_text<\/span> <span class=\"n\">config_text<\/span><span class=\"p\">,<\/span> <span class=\"n\">config_file<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">pre<\/span> <span class=\"ss\">:install<\/span><span class=\"p\">,<\/span> <span class=\"s2\">&quot;touch <\/span><span class=\"si\">#{<\/span><span class=\"n\">config_file<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n    <span class=\"n\">post<\/span> <span class=\"ss\">:install<\/span><span class=\"p\">,<\/span> <span class=\"s2\">&quot;chmod 0755 <\/span><span class=\"si\">#{<\/span><span class=\"n\">config_file<\/span><span class=\"si\">}<\/span><span class=\"s2\">&quot;<\/span>\n  <span class=\"k\">end<\/span>\n\n  <span class=\"n\">verify<\/span> <span class=\"k\">do<\/span>\n    <span class=\"n\">has_file<\/span> <span class=\"n\">config_file<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/pre><\/div>\n</div>');
document.write('<div class="flowcoder_bottombar flowcoder_clearfix">');
document.write('<div class="flowcoder_postedby">Posted by <a href=\"http://flowcoder.com/trevorturk\">trevorturk<\/a> on <a href=\"http://flowcoder.com/\">Flowcoder<\/a></div>');
document.write('<div class="flowcoder_viewraw"><a href=\"http://flowcoder.com/96.txt\">view raw<\/a></div>');
document.write('</div></div>');
