A straight-forward client for CouchDB REST API
The intend of this project is to provide a plain, straight-forward abstraction of the CouchDB REST API. The resources exposed by the API are simply wrapped into classes.
<img src=“http://travis-ci.org/phifty/couchdb.png” />
An example
server = CouchDB::Server.new "localhost", 5984
database = CouchDB::Database.new server, "test"
database.delete_if_exists!
database.create_if_missing!
document_one = CouchDB::Document.new database, "_id" => "test_document_1", "category" => "one"
document_one.save
document_two = CouchDB::Document.new database, "_id" => "test_document_2", "category" => "two"
document_two.save
design = CouchDB::Design.new database, "design_1"
view = CouchDB::Design::View.new design, "view_1",
"function(document) { emit([ document['category'], document['_id'] ]); }"
design.save
collection = view.collection :startkey => [ "one", nil ], :endkey => [ "one", { } ]
collection.total_count # => 2
collection.size # => 1
collection[0].id # => "test_document_1"
collection[0].key # => [ "one", "test_document_1" ]
collection[0].value # => nil
collection.documents.include? document_one # => true
collection.documents.include? document_two # => false
This example creates a database on the local CouchDB server (if it’s missing) and stores two documents in it. It also creates a design document with a view, that makes it possible to select the results by the document’s category.
The collection
call on that view, returns a subset of the results, by defining a start- and an endkey. The collection object itself acts as a proxy to the results. This first request of it’s content will actually fetch the data from the server.
If the results are accessed by the documents
proxy, the include_docs
parameter will be passed to the server and the delivered document hashes will be returned as an array of document (CouchDB::Document
) objects.
Development
This project is still under development. Any bug report and contribution is welcome!
Support
Apart from contribution, support via Flattr is welcome.