An in-memory CouchDB implementation in Ruby for couchrest and SimplyStored. Works for the database and document API, by_attribute views, and for SimplyStored generated views. This way your tests will no longer depend on CouchDB and can run against an in-memory database.
It intercepts the HTTP-API calls of couchrest by implementing a HTTPAdapter for couchrest. It then delegates those calls to the in-memory database.
The in-memory database a hash of document_id => JSON-object.
RockingChair support simple views like alldocs_ or byattribute_. Further, it should supports all the views generated by SimplyStored. So it supports associations and soft deletion.
gem install rocking_chair
Require the gem in your tests, e.g. test_helper.rb in Rails:
Then activate it:
Make sure to reset it every now and then so that your testdata doesn't grow too much. Put this e.g. in your setup block:
def setup RockingChair::Server.reset end
If you have tests where you want to run against the real CouchDB, just deactivate RockingChair:
You can also make RockingChair dump all requests:
At the moment the performance is not as good as it could be as there is a lot of serialization to and from JSON going on. This will be improved by storing not only the JSON tree but also the Ruby representation of the stored objects.
RockingChair is licensed under the OpenBSD / two-clause BSD license, modeled after the ISC license. See LICENSE.txt