As I looked at some of the Ruby libraries for CouchDB, it was clear that they have very different approaches. In the hopes of keeping them straight I began making a table. I am sharing it for your right-angled pleasure. Warning, it is in beta form. If you post comments, I will try to incorporate your feedback in the table. Thanks!
Last updated on May 6, 2009.
| RelaxDB | CouchREST | CouchFoo | DataMapper (DM) Rest Adapter | CouchObject | Ruby-CouchDB | ActiveCouch | Coach Potato | |
| Source Code | paulcarey on GitHub | jchris on GitHub | georgepalmer on GitHub | datamapper on GitHub | couchobject at RubyForge | couchdb at RubyForge | activecouch at RubyForge | couch_potato on GitHub |
| Underlying HTTP Library [1] | Net::HTTP | REST Client | ? | Net::HTTP | ? | ? | ? | REST Client (couchrest is a dependency) |
| Interface | ? | ? | ActiveRecord style | DataMapper style | ? | Thin wrapper over CouchDB’s RESTful API | ActiveRecord style | |
| ORM specific? [2] | N ? | N ? | N ? | Y – DataMapper | N ? | N | N ? | |
| Automatic view creation? | ? | ? | ? | ? | ? | ? | ? | Y |
| Quality of test suite? | ? | ? | ? | ? | ? | ? | ? | ? |
| Do you need to write Javascript? [3] | ? | ? | ? | ? | ? | ? | ? | Y |
Notes:
- I personally think Net::HTTP is a bit crufty. I prefer to see other Ruby HTTP libraries, such as HTTParty.
- Does a library only works with a particular Object Relational Mapper (ORM)?
- Does a library require that you write Javascript? Or does it generate the JS for you automatically? (I am not taking sides on which is better.)
4 Comments
hi,
your table is missing couch potato (github.com/langalex/couch_potato). it’s baed on couchrest, has a couchdb style interface, has automatic view creation, pretty good test suite and yes, you have to write javascript sometimes (whch imho is good)
still no couch potato in the table
Alex: Fair point. I just added some information about your (correct?) project
Hi David! Too funny that I started my research on CouchDB + Ruby and find you’ve already begun
Thanks for documenting your work!
It seems to me like efforts to assimilate CouchDB into existing ORM idioms (ActiveRecord and DataMapper) are doing CouchDB—and developers who adopt the easy route—a disservice. At the end of all that effort to create an ActiveRecord-compatible interface, what has been accomplished? You can treat CouchDB like a relational database. So why not use a relational database to begin with?
Seems like that method of going about things is going to leave a lot of the fundamentally unique capabilities of CouchDB on the table…
Post a Comment