mongodb / mongo-activerecord-ruby

This URL has Read+Write access

mdirolf (author)
Tue Jul 28 07:10:39 -0700 2009
commit  8e0a4b521ce7ecc7191e473d7d167dec0b0430bd
tree    602edc3bcc5e192096d1dde0a2cf135f62887c27
parent  03774c959e1867b86c3a9fe461c4632d0f2cb6f5
name age message
file .gitignore Mon Jun 15 08:26:41 -0700 2009 gitignore [mdirolf]
file LICENSE Mon Jun 22 07:18:16 -0700 2009 change license to Apache 2 - was listed as AGPL... [mdirolf]
file README.rdoc Mon Jun 15 08:26:18 -0700 2009 update credits [mdirolf]
file Rakefile Fri Jan 16 14:30:32 -0800 2009 create/fix gem:install task [Jim Menard]
directory examples/ Thu Jan 29 07:48:13 -0800 2009 Honor MONGO_RUBY_DRIVER_{HOST,PORT} env vars in... [Jim Menard]
directory lib/ Mon Jul 27 14:59:55 -0700 2009 minor: update docs [mdirolf]
file mongo-activerecord-ruby.gemspec Tue Jul 28 07:10:39 -0700 2009 BUMP 0.4 some usability updates [mdirolf]
directory tests/ Mon Jul 27 14:22:51 -0700 2009 move create override to the class level overrid... [mdirolf]
README.rdoc

Welcome to MongoRecord

MongoRecord is an ActiveRecord-like framework for the 10gen Mongo database.

This library is for use outside of Ruby on Rails. If you want to use Mongo with Ruby on Rails, please see the ‘activerecord-mongo-adapter’ project at github.com/mongodb/activerecord-mongo-adapter.

This document assumes you have read the Mongo documentation.

A quick code sample:

  require 'rubygems'
  require 'mongo'
  require 'mongo_record'

  class Track < MongoRecord::Base
    collection_name :tracks
    fields :artist, :album, :song, :track
    index :artist

    def to_s
      "artist: #{artist}, album: #{album}, song: #@song, track: #{@track ? @track.to_i : nil}"
    end
  end

  MongoRecord::Base.connection =
    XGen::Mongo::Driver::Mongo.new.db('mongorecord-test')

  t = Track.new(:artist => 'Level 42', :album => 'Standing In The Light',
                :song => 'Micro-Kid', :track => 1)
  t.save
  puts "There are #{Track.count()} tracks."
  t = Track.find(:first, :conditions => {:song => 'Micro-Kid'})
  Track.find(:all, :sort => 'song').each { |t| puts t.to_s }

Installation

  $ gem sources -a http://gems.github.com
  $ sudo gem install mongodb-mongo_record

MongoRecord depends on the Mongo Ruby Driver, version 0.5.4 or higher. Installing the MongoRecord gem will also install the Mongo Ruby Driver if you don’t have it already.

The source code is available at github.com/mongodb/mongo-ruby-driver. You can either clone the git repository or download a tarball or zip file. Once you have the source, you can use it from wherever you downloaded it or you can install it as a gem from the source by typing

  $ rake gem:install

Note: when you install the gem this way it is called "mongo_record", not "mongodb-mongo_record". In either case, you "require ‘mongo_record’" in your source code.

Getting Started

See the examples, read the MongoRecord::Base and MongoRecord::Cursor documentation, and look at tests/test_mongo.rb.

Persistence

You can use MongoRecord::Base or talk to the database (stored in the $db object) directly.

See MongoRecord::Base and MongoRecord::Cursor.

Logger

See MongoRecord::LogDevice. When running outside of the cloud (for example, during development), all log messages are echoed to $stderr which is normally the console.

Credits

Jim Mulholland, jim at squeejee dot com

  • Ability to save custom attributes not declared in the model
  • Save and retrieve custom "_id" fields
  • Find_each functionality
  • Find_last based on the created_at field
  • Assigning created_at and updated_at fields even if they are not declared
  • Alias methods for "first", "last" and "all"
  • Fix for sum method

Clinton R. Nixon, crnixon at gmail dot com

  • Ability to define and query indexes from models