MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách cấu hình MongoMapper và ActiveRecord trong cùng một Dự án Ruby Rails

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ình
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

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để trả lại các giá trị biến thể của mỗi sản phẩm nếu sản phẩm đó là một biến thể?

  2. Phần tử mảng cập nhật Mongo (trình điều khiển .NET 2.0)

  3. Làm thế nào để dừng máy chủ mongodb trên Windows?

  4. mongoengine - Bỏ qua các trường bổ sung để xác thực giản đồ

  5. Làm cách nào để sắp xếp lại các thẻ và danh sách như Trello?