Include your mongo_mapper stone in your Gemfile. Then in the models that you slowly want to port to MongoMapper, you simply include this in your model:
include MongoMapper::Document
here is an example of a Mongo publishing model
class Publisher include MongoMapper::Document key :_id, String key :mtd_uniques, Integer key :mtd_demo_uniques, Integer key :archive, Array key :ignore, Boolean end
My user model (postgres):
class User < ActiveRecord::Base validates_presence_of :first_name, :last_name, :email, :type acts_as_authentic def self.inherited(child) child.instance_eval do def model_name User.model_name end end super end end
The best part is that all of your other models still use ActiveRecord, so you can use two different databases until everything is ported to Mongo. This is an example of what I am using. Big data aggregations using MongoMapper and User model using postgres (application hosted on Heroku)
For my setup, I dumped the configuration files into my config.yml
development: adapter: MongoDB host: localhost database: my-dev-db test: adapter: MongoDB host: localhost database: my-dev-db staging: adapter: MongoDB host: remote-host (for me amazon ec2) database: my-staging-db production: adapter: MongoDB host: remote-host (for me amazon ec2) database: my-production-db
and created an initializer that distinguishes 2 databases:
/initializers/database.rb
# load YAML and connect database_yaml = YAML::load(File.read("#{Rails.root}/config/config.yml")) puts "Initializing mongodb" if database_yaml[Rails.env] && database_yaml[Rails.env]['adapter'] == 'MongoDB' mongo_database = database_yaml[Rails.env] MongoMapper.connection = Mongo::Connection.new(mongo_database['host'], 27017, :pool_size => 5, :timeout => 5) MongoMapper.database = mongo_database['database'] end