Rails:将数据库从Postgres迁移到MongoDB

时间:2016-01-28 17:59:48

标签: ruby-on-rails mongodb

我的项目是使用PostgresSQL创建的,但我们真的打算使用MongoDB,为了实现这一点,我应该更改哪些内容?

很多脚手架已经发生了,所以我们正试图野蛮已经完成的任何工作......

3 个答案:

答案 0 :(得分:1)

  1. 从Gemfile中删除数据库适配器gem(mysql2,sqlite3等)

  2. 更改config/application.rb

  3. 删除require 'rails/all'行并要求使用您想要使用的框架,例如:

    require "action_controller/railtie"
    require "action_view/railtie"
    require "action_mailer/railtie"
    require "active_job/railtie"
    require "action_cable/engine"
    require "sprockets/railtie"
    require "rails/test_unit/railtie" 
    

    注意:您应该使用rails/all.rb文件中的require片段,该文件是您的Rails版本的最新版本,而不使用active_record railtie。以下是Rails master branchrails/all.rb的链接{<1}}。

    1. 删除您的config/database.yml文件,db/schema.rb和迁移(如果有)

    2. test/test_helper.rb

    3. 中删除迁移检查
    4. 从配置/环境文件中删除任何ActiveRecord配置

答案 1 :(得分:0)

同样的情况我也必须面对。我在上面的答案中添加了一些额外的观点。

1)在初始化器中创建一个文件并放入此代码

Mongoid.load!(Rails.root.join("config/mongoid.yml"))

2)您必须从继承自ApplicationRecord的每个模型中删除并删除application_record文件。

3)如果您已经安装了设备,那么您必须更换
  **来自**

 require 'devise/orm/active_record'

require 'devise/orm/mongoid'

4)如果您在gem文件中使用了carrierwave,则必须替换

发件人

gem 'carrierwave', github: 'carrierwaveuploader/carrierwave' 

gem 'carrierwave-mongoid', :require => 'carrierwave/mongoid'

答案 2 :(得分:0)

迟到总比没有好!总有一天,这对某人来说应该派上用场!!!!

以下基于python的迁移框架可以完成这项工作。

https://github.com/datawrangl3r/pg2mongo

为了达到性能,每个JSON对象的迁移都是动态的,当您使用上述框架时,不应该有任何内存锁定问题。