0.0
No commit activity in last 3 years
No release in over 3 years
dbDeploy for couchdb
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

>= 2.6.0

Runtime

>= 1.5.3
 Project Readme

deploy_couch¶ ↑

deploy_couch is db deploy tool for couchdb.

How to install¶ ↑

gem install deploy_couch

Usage¶ ↑

deploy_couch 'path/to/couchdb.yml' [rollback:(1|2|3|..|all)]
rollback:all

rollbacks all the deltas

For example usage Refer Examples in the following folder¶ ↑

deploy_couch/spec/couchdb.yml         for couchdb.yml config file
deploy_couch/spec/integration/deltas     for delta files

Config Parameters¶ ↑

  • hostname: <couchdb database server hostname>

  • port: <couchdb server port number , by default 5984>

  • delta_path: < path/to/deltas folder relative to configdb.yml>

  • database: <couchdb database name>

  • doc_type_field: <field name used to identify the document type>

  • type_version_field: <deploy_couch uses this field to maintain type version of the document, you can configure the field name>

Delta File name format¶ ↑

<Delta Number>_<Description>.yml
example :-  1_add_address_to_customer.yml
            2_add_phone_to_customer.yml
            11_update_phone_with_std_codes.yml
            12_delete_customer_with_name_equal_to_name_1.yml
            13_copy_and_create_new_customer.yml

Delta File content format ¶ ↑

  • type: document type, example: customer. By convention deploy_couch assumes there is a type field in each document which stores the type of document.

  • map_function: map function used to modify customer document.

    return value 'create' indicates creating/adding new document
    return value 'update' indicates updating the document with changes
    return value 'delete' indicates deleteing the document
    return value nul indicates ignore the document
  • rollback_function: rollback function used when rolling back applied delta. If there is need to get back to previous version.

Delta File examples¶ ↑

Example for adding address field to all customers¶ ↑

type: customer
map_function:
           function map(doc)
           {
              doc.address = "some address";
              return 'update';
            }
rollback_function:
           function map(doc)
           {
              delete doc.address;
              return 'update';
           }

Example for modifying phone number of all customers¶ ↑

type: customer
map_function:
            function map(doc)
            {
                  doc.phone = '+91' + doc.phone;
                  return 'update';
             }
rollback_function:
             function map(doc)
             {
                doc.phone = doc.phone.substring(3);
                return 'update';
             }

Example for creating new document after copying details from another customer¶ ↑

type: customer
map_function:
             function map(doc)
             {
                if(doc.name == 'name_2')
                {
                   delete doc._id;
                   doc.name = 'new name';
                   return 'create';
                 }
                 return null;
              }
rollback_function:
              function map(doc)
              {
                 if(doc.name == 'new name')
                 return 'delete';
                 return null;
              }

Example for deleteing a document¶ ↑

type: customer
map_function:
             function map(doc)
             {
                if(doc.name == 'name_1')
                   return 'delete';
                return null;
             }
rollback_function:
             function map(doc)
             {
                if(doc.name == 'name_2')
                {
                     delete doc._id;
                     doc.name = 'name_1';
                     return 'create';
                 }
                 return null;
             }