sql >> Database teknologi >  >> NoSQL >> MongoDB

Sådan konfigureres MongoMapper og ActiveRecord i samme Ruby Rails-projekt

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


  1. MongoDB elemMatch underdokumenter

  2. Opdatering af array med push og skive

  3. Sådan bruger du Redis fra Node.js

  4. MongoDB får alle felter + sorter efter værdi beregnet fra flere felter