Inkludera din mongo_mapper pärla i din Gemfil. Sedan i modellerna som du långsamt vill börja migrera över till MongoMapper, inkluderar du bara detta i din modell:
include MongoMapper::Document
här är ett exempel på en Mongo-förlagsmodell
class Publisher
include MongoMapper::Document
key :_id, String
key :mtd_uniques, Integer
key :mtd_demo_uniques, Integer
key :archive, Array
key :ignore, Boolean
end
Min användarmodell (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
Det fina med detta är att alla dina andra modeller fortfarande använder ActiveRecord så att du kan använda 2 olika databaser tills allt har migrerats över till Mongo. Detta är ett exempel från det jag använder. Stora dataaggregeringar med MongoMapper och användarmodell med postgres (app värd på Heroku)
För min installation dumpade jag config-grejer i min 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
och skapade en initialiserare som skiljer mellan de två DB:erna:
/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