Project

copycouch

0.0
No commit activity in last 3 years
No release in over 3 years
Facilitates the creation of push-publishing content management systems.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 1.0.0.beta7
 Project Readme

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