甚至在从Gemfile中删除gem之后,Activerecord也没有从Gemfile.lock中删除(Rails 5)

时间:2017-02-15 08:24:07

标签: ruby-on-rails rubygems ruby-on-rails-5

我制作了一个新项目,默认情况下,sqlite3中有gemfile。我在项目中做了一些工作,但现在我想安装mongoid gem。我的系统中已经设置了mongodb

我使用this link删除ActiveRecord。我删除了sqlite3并在gemfile中添加了'gem mongoid'。我跑了bundle install。但是,即使我已移除sqliteActiveRecord仍然存在gemfile.lock

如何从ActiveRecord删除gemfile.lock和所有其他相关依赖项?

更新 - 这是一个小项目。如果有人必须在大型实时项目中从ActiveRecord切换到Mongoid,该怎么办?一个人如何在这种情况下迁移?

2 个答案:

答案 0 :(得分:1)

您无需删除activerecord gem即可将ORM切换为Mongoid。这实际上是不可能的,因为它是Rails的依赖。

从应用程序中删除ActiveRecord:

1。摆脱铁路。

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并将其加载到内存中。

2。清理配置

当您生成新的rails应用程序时,您的配置具有相当多的ActiveRecord特定选项。因此,请使用您最喜爱的编辑器中的grep或搜索选项,删除包含config.active_record中包含config/environments/*.yml的所有行的所有行。

3。删除残缺

然后您可以删除以下文件/文件夹:

  • /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)