Skip to content
This repository has been archived by the owner on Jul 5, 2024. It is now read-only.

spohlenz/mongomodel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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