Skip to content

Latest commit

 

History

History
65 lines (43 loc) · 1.78 KB

README.md

File metadata and controls

65 lines (43 loc) · 1.78 KB

Caster gives you a nice DSL for bulk operations over couchdb databases, and a command line tool that supports database versioning so you can write migration scripts for your database.

#Install

You can fetch it directly from Rubygems:

[sudo] gem install caster

#Usage

Create a file using the following format for the filename.

<version>.<database>.<some descriptive name>.cast

Then execute this by

cast up --db=<database> <directory to cast files>

#Syntax

Caster can add, update, rename, remove fields from all documents over a given view.

over 'foobar/by_id' do
  add 'name', 'attila'
end

A query can be passed to restrict the scope of the operation.

over 'foobar/by_score', { 'key' => '0' } do
  update 'score', 10
end

You can refer other fields in the document using the implicit parameter passed to the block. You can freely use ruby code anywhere, so you can call other functions to perform transformations that you want.

over 'foobar/by_id' do |doc|
  add 'last_name', extract_last_name(doc['name'])
end

If you have a relational model, you can also refer documents across views.

over 'foobar/all_authors' do |author|
  add 'last_published', from('foobar/all_books').where{ |book| book.author_id == author.id and book['published_on'] > auhtor['last_published] }['last_published']
end

#Configuration

Place a YAML file in the current directory when executing a cast command to provide runtime properties.

host: 10.1.3.
port: 5985
metadoc_type: dbver
metadoc_id_prefix: meta

caster creates documents in your database to maintain verion information. metadoc_type will add a type field to the document to let you distinguish this document. The document will be created with an id <metadoc_id_prefix>_<database>.