Fügen Sie Ihr mongo_mapper-Gem in Ihr Gemfile ein. Dann fügen Sie in den Modellen, die Sie langsam zu MongoMapper migrieren möchten, einfach Folgendes in Ihr Modell ein:
include MongoMapper::Document
Hier ist ein Beispiel für ein Mongo-Publisher-Modell
class Publisher
include MongoMapper::Document
key :_id, String
key :mtd_uniques, Integer
key :mtd_demo_uniques, Integer
key :archive, Array
key :ignore, Boolean
end
Mein Benutzermodell (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
Das Schöne daran ist, dass alle Ihre anderen Modelle immer noch ActiveRecord verwenden, sodass Sie zwei verschiedene Datenbanken verwenden können, bis alles zu Mongo migriert ist. Dies ist ein Beispiel von dem, was ich verwende. Große Datenaggregationen mit MongoMapper und Benutzermodell mit Postgres (auf Heroku gehostete App)
Für mein Setup habe ich Konfigurationsmaterial in meiner config.yml abgelegt
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
und einen Initialisierer erstellt, der zwischen den 2 DBs unterscheidet:
/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