Inkluder din mongo_mapper-perle i din Gem-fil. Så i de modeller, som du langsomt vil begynde at migrere over til MongoMapper, inkluderer du bare dette i din model:
include MongoMapper::Document
her er et eksempel på en Mongo-udgivermodel
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 brugermodel (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 gode ved dette er, at alle dine andre modeller stadig bruger ActiveRecord, så du kan bruge 2 forskellige databaser, indtil alt er migreret over til Mongo. Dette er et eksempel fra det jeg bruger. Store dataaggregationer ved hjælp af MongoMapper og brugermodel ved hjælp af postgres (app hostet på Heroku)
Til min opsætning dumpede jeg config-ting 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
og skabte en initializer, der skelner mellem de 2 DB'er:
/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