Introduction
A mixin for adding per-document replication to your CouchRest::Model::Base objects.
Installation
$ gem install copycouch
Usage
First, mix CopyCouch into your CouchRest::Model::Base derived class:
COUCH_SERVER = CouchRest.new "http://my.cms.couch.instance"
CMS_DATABASE = COUCH_SERVER.database! 'library'
class Book < CouchRest::Model::Base
include CopyCouch
use CMS_DATABASE
property :name
property :is_published, TrueClass
end
Next, create a document.
@book = Book.create :name => "2001: A Space Odyssey"
Next, replicate it!
PRODUCTION_COUCH_SERVER = CouchRest.new "http://my.production.couch.instance"
PRODUCTION_DATABASE = PRODUCTION_COUCH_SERVER.database! 'library'
@book.replicate PRODUCTION_DATABASE
Now it's replicated. After replication, CopyCouch logged some stuff in your document.
puts @book.last_replicated_to #==> "http://my.production.couch.instance/library"
puts @book.last_replicated_revision #==> 1-jkfdlsau94302894032840293
puts @book.last_replicated_on #==> Sun Aug 22 18:41:57 -0400 2010
You could also find that information under @book.copycouch_log
If you'd like to set and save some properties on your document right after replication, you can do the following
@book.replicate(PRODUCTION_DATABASE) do |b|
b.is_published = true
end