Mixin that adds single document couchdb replication to your CouchRest::Model::Base objects.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
features
lib
.gitignore
PUBLIC_DOMAIN
README.markdown
VERSION

README.markdown

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