【问题标题】:Activerecord not removed from Gemfile.lock even after removing gem from Gemfile (Rails 5)即使从 Gemfile 中删除 gem(Rails 5),Activerecord 也没有从 Gemfile.lock 中删除
【发布时间】:2017-02-15 08:24:06
【问题描述】:

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

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

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

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

【问题讨论】:

  • 删除您的 Gemfile.lock 文件并再次运行捆绑安装。这必须有帮助。如果这没有帮助,那么您安装的任何其他 gem 都可能需要 activerecord gem。
  • 我无法在这个 (rails 5) 项目中删除我的 gemfile,即使是通过终端,我还检查了 rails 本身是否依赖于 activerecord。
  • 不能删除是什么意思? rm Gemfile.lock?
  • 我使用了 commoad,但文件会自行重新生成。我什至使用了“rm -r Gemfile.lock”。我可以删除 rails 4 项目中的文件,但不能删除 rails 5 项目中的文件。
  • 此文件仅在您运行 bundle install 后生成。我也在使用 rails 5,但我可以删除文件。

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


【解决方案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 中删除所有包含config.active_record 的行。

3。去除杂物

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

  • /config/database.yml
  • /db/schema.rb
  • /db/migrate

更新 - 这是一个小项目,如果有人不得不切换 在一个活的大项目中积极记录到 mongoid。一个人会怎样 这种情况下可以迁移吗?

在成熟的项目中切换 ORM 非常罕见,因为它需要大量的重建。但是您将按照上述步骤或并行运行 Mongoid 和 ActiveRecord 直到转换完成。这几乎不是你在现场会做的事情——它更像是一个长期运行的主要版本项目。

【讨论】:

    【解决方案2】:

    如果您在 Gemfile 中有另一个依赖于 activerecord 的 gem,这可能是可能的。在你的情况下,它是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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多