Increasingly Functional.
by Joshua Miller | on Twitter | on the web | on github

Introducing loose_change

September 28th 2010

Tagged: ruby couchdb

In the course of preparing Spiritwear for its honest-to-goodness for-real-this-time release, I made the decision to bite the bullet and make the upgrade to Rails 3. I have been using CouchDB for all of the models that deal with sizes and colors, because the open-ended nature of those values fit much better in a document-oriented world than a relational one. While on Rails 2.x, I used couchrest-rails as my Ruby adapter to the Couch, but it wasn't suited to Rails 3's new ActiveModel layer. I wanted a Ruby interface that felt enough like ActiveRecord and was compatible enough with ActiveModel that I could get some of the Rails freebies (like form_for, for example), but that kept some of the Couch niceties I'd grown accustomed to (custom views that I used to generate order summaries, for example).

Enter loose_change. It's a Ruby ORM for CouchDB built for ActiveModel compliance. Tonight I added will_paginate collections and released version 0.3.0, and it's at the point where I am using it day-to-day for production work. I plan to really hammer it over the next week or so, and if I think it's ready, I'll put 0.4 up on rubygems.org and make a public release of it. In the meantime, if you want to play with it, you can add the following to your Gemfile:

gem 'loose_change', '~> 0.3.0', :git => 'git://github.com/joshuamiller/loose_change.git'