Sertakan permata mongo_mapper Anda di dalam Gemfile Anda. Kemudian dalam model yang perlahan ingin Anda mulai bermigrasi ke MongoMapper, cukup sertakan ini dalam model Anda:
include MongoMapper::Document
berikut adalah contoh model penerbit Mongo
class Publisher
include MongoMapper::Document
key :_id, String
key :mtd_uniques, Integer
key :mtd_demo_uniques, Integer
key :archive, Array
key :ignore, Boolean
end
Model pengguna saya (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
Hal yang menyenangkan tentang ini adalah bahwa semua model Anda yang lain masih menggunakan ActiveRecord sehingga Anda dapat menggunakan 2 basis data berbeda hingga semuanya dimigrasikan ke Mongo. Ini adalah contoh dari apa yang saya gunakan. Agregasi data besar menggunakan MongoMapper, dan model Pengguna menggunakan postgres (aplikasi yang dihosting di Heroku)
Untuk pengaturan saya, saya membuang hal-hal konfigurasi di config.yml saya
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
dan membuat penginisialisasi yang membedakan antara 2 DB:
/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