Bao gồm gem mongo_mapper của bạn trong Gemfile của bạn. Sau đó, trong các mô hình mà bạn dần dần muốn bắt đầu chuyển sang MongoMapper, bạn chỉ cần đưa mô hình này vào mô hình của mình:
include MongoMapper::Document
đây là một ví dụ về mô hình nhà xuất bản 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
Mô hình người dùng của tôi (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
Điều thú vị về điều này là tất cả các mô hình khác của bạn vẫn sử dụng ActiveRecord nên bạn có thể sử dụng 2 cơ sở dữ liệu khác nhau cho đến khi mọi thứ được chuyển sang Mongo. Đây là một ví dụ từ những gì tôi đang sử dụng. Tổng hợp dữ liệu lớn bằng MongoMapper và mô hình Người dùng sử dụng postgres (ứng dụng được lưu trữ trên Heroku)
Để thiết lập của tôi, tôi đã kết xuất nội dung cấu hình trong config.yml
của mìnhdevelopment:
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
và tạo một trình khởi tạo để phân biệt giữa 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