couchrest_model/utils/subset.rb
2008-12-14 12:05:02 +01:00

30 lines
761 B
Ruby

require 'rubygems'
require 'couchrest'
# subset.rb replicates a percentage of a database to a fresh database.
# use it to create a smaller dataset on which to prototype views.
# specify the source database
source = CouchRest.new("http://127.0.0.1:5984").database('source-db')
# specify the target database
target = CouchRest.new("http://127.0.0.1:5984").database('target-db')
# pager efficiently yields all view rows
pager = CouchRest::Pager.new(source)
pager.all_docs(1000) do |rows|
docs = rows.collect do |r|
# the percentage of docs to clone
next if rand > 0.1
doc = source.get(r['id'])
doc.delete('_rev')
doc
end.compact
puts docs.length
next if docs.empty?
puts docs.first['_id']
target.bulk_save(docs)
end