Gemfile में अपना mongo_mapper रत्न शामिल करें। फिर जिन मॉडलों में आप धीरे-धीरे MongoMapper पर माइग्रेट करना शुरू करना चाहते हैं, आप बस इसे अपने मॉडल में शामिल करें:
include MongoMapper::Document
यहां एक मोंगो प्रकाशक मॉडल का उदाहरण दिया गया है
class Publisher
include MongoMapper::Document
key :_id, String
key :mtd_uniques, Integer
key :mtd_demo_uniques, Integer
key :archive, Array
key :ignore, Boolean
end
मेरा उपयोगकर्ता मॉडल (पोस्टग्रेज):
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
इसके बारे में अच्छी बात यह है कि आपके सभी अन्य मॉडल अभी भी ActiveRecord का उपयोग करते हैं ताकि आप 2 अलग-अलग डेटाबेस का उपयोग तब तक कर सकें जब तक कि सब कुछ Mongo पर माइग्रेट न हो जाए। मैं जो उपयोग कर रहा हूं उससे यह एक उदाहरण है। MongoMapper का उपयोग करके बड़े डेटा एकत्रीकरण, और पोस्टग्रेज़ का उपयोग करके उपयोगकर्ता मॉडल (हेरोकू पर होस्ट किया गया ऐप)
अपने सेटअप के लिए मैंने अपने 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
और एक इनिशियलाइज़र बनाया जो 2 DBs के बीच अंतर करता है:
/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