SimplyStored and CouchDB

Send to friend

Yesterday I gave a presentation about CouchDB and SimplyStored, our convenience Ruby library, at the Ruby User Group Berlin.

There is a recording of the presentation at ustream.tv.

Mathias and I wrote SimplyStored in order to easily interact with Ruby objects serialized in CouchDB. We use CouchDB as the main data store for Scalarium and so far it has been great. But it is a bit cumbersome to write all those map and reduce functions yourself.

SimplyStored generates the JavaScript map&reduce functions for handling associations or dynamic finders for you.

SimplyStored offers:

  • Models
  • Associations
  • Callbacks
  • Validations
  • Dynamic finder
  • S3 attachments
  • Paranoid delete

class User
include SimplyStored::Couch

property :login
property :age
property :accepted_terms_of_service, :type => :boolean
property :last_login, :type => Time
end

user = User.new(:login => 'Bert',
:age => 12,
:accepted_terms_of_service => true,
:last_login = Time.now)
user.save

User.find_by_age(12).login
# => 'Bert'

User.all
# => [user]

class Post
include SimplyStored::Couch

property :title
property :body

belongs_to :user
end

class User
has_many :posts
end

post = Post.create(:title => 'My first post',
:body => 'SimplyStored is so nice!',
:user => user)

user.posts
# => [post]

Post.find_all_by_title_and_user_id('My first post', user.id).first.body
# => 'SimplyStored is so nice!'

post.destroy

user.posts(:force_reload => true)
# => []

The code is on github and OpenSource: SimplyStored example code

Another thing I talked about is RockingChair. RockingChair is an in-memory CouchDB implementation that understands all of SimplyStored's functionality. We use it to speed up our tests and be able to run them in parallel.

Ruby on CouchDB - SimplyStored and RockingChairView more presentations from Jonathan Weiss.