• This repository has been archived on 05/Jul/2024
  • Stars
    star
    39
  • Rank 693,563 (Top 14 %)
  • Language
    Ruby
  • License
    MIT License
  • Created almost 15 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ruby ORM for MongoDB (compatible with Rails 3)

MongoModel

MongoModel is a Ruby ORM for interfacing with MongoDB databases.

Build Status

Installation

MongoModel is distributed as a gem. Install with:

gem install mongomodel

For performance, you should probably also install the BSON C extensions:

gem install bson_ext

Using with Rails

Add MongoModel to your Gemfile (and run bundle install):

gem 'mongomodel'

Create the configuration file config/mongomodel.yml:

rails generate mongo_model:config DATABASENAME

Generating a model/document:

rails generate model Article title:string body:string published_at:time approved:boolean 

Generating an embedded document:

rails generate model Chapter title:string body:string -E

Sample Model

class Article < MongoModel::Document
  property :title, String, :default => 'Untitled'
  property :body, String
  property :published_at, Time, :protected => true
  property :approved, Boolean, :default => false, :protected => true
  
  timestamps!
  
  validates_presence_of :title, :body
  
  belongs_to :author, :class => User
  
  scope :published, where(:published_at.ne => nil)
end

Configuration

MongoModel can be configured similarly to ActiveRecord by creating/editing config/mongomodel.yml. The most basic configuration might look like:

development:
  database: mymongodbname
  host: localhost
  port: 27017

The config file also supports specifying the username, password, pool_size, password and replicas. Running rails generate mongo_model:config DATABASENAME will generate a basic config file for you.

Using Replica Sets

When working with replica sets, replace the host/port configuration with an array of replicas (host:port):

production:
  database: database_name
  replicas:
    - some.host.com:27017
    - another.host.com:27017
  username: username
  password: password