我制作了一个新项目,默认情况下,sqlite3
中有gemfile
。我在项目中做了一些工作,但现在我想安装mongoid
gem。我的系统中已经设置了mongodb
。
我使用this link删除ActiveRecord
。我删除了sqlite3
并在gemfile
中添加了'gem mongoid'。我跑了bundle install
。但是,即使我已移除sqlite
,ActiveRecord
仍然存在gemfile.lock
。
如何从ActiveRecord
删除gemfile.lock
和所有其他相关依赖项?
更新 - 这是一个小项目。如果有人必须在大型实时项目中从ActiveRecord
切换到Mongoid
,该怎么办?一个人如何在这种情况下迁移?
答案 0 :(得分:1)
您无需删除activerecord
gem即可将ORM切换为Mongoid。这实际上是不可能的,因为它是Rails的依赖。
从应用程序中删除ActiveRecord:
Railties是你如何在rails中加载框架的一部分。
# config/application.rb
require_relative 'boot'
require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
# require "active_record/railtie" -- remove or comment this line!
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "action_cable/engine"
require "sprockets/railtie"
这意味着将不再需要active_record
gem并将其加载到内存中。
当您生成新的rails应用程序时,您的配置具有相当多的ActiveRecord特定选项。因此,请使用您最喜爱的编辑器中的grep
或搜索选项,删除包含config.active_record
中包含config/environments/*.yml
的所有行的所有行。
然后您可以删除以下文件/文件夹:
/config/database.yml
/db/schema.rb
/db/migrate
更新 - 这是一个小项目,如果有人必须切换 在一个实况和大项目中积极记录到mongoid。一个人怎么样? 可以在这种情况下迁移吗?
在成熟项目中切换ORM非常罕见,因为它需要大量重建。但是,您将按照上述步骤或并行运行Mongoid和ActiveRecord,直到转换完成。这不是你会做的事情 - 它最像是一个长期运行的主要版本项目。
答案 1 :(得分:0)
如果Gemfile
中有另一个依赖于activerecord
的宝石,则可以这样做。在你的情况下它是rails
所以你可以把它放在这里。
GEM
remote: https://rubygems.org/
specs:
...
rails (4.2.5.1)
actionmailer (= 4.2.5.1)
actionpack (= 4.2.5.1)
actionview (= 4.2.5.1)
activejob (= 4.2.5.1)
activemodel (= 4.2.5.1)
activerecord (= 4.2.5.1)