【问题标题】:Gem conflict in Rails with ActivesupportRails 中的宝石冲突与 Activesupport
【发布时间】:2019-10-10 16:28:39
【问题描述】:

尝试在 Rails 中旋转服务器时,我不断收到此消息。

to_specs': Could not find 'activesupport' (= 6.0.0) - did find: [activesupport-5.2.2.1] (Gem::MissingSpecVersionError)
Checked in 'GEM_PATH=/home/louis/.gem/ruby/2.5.0:/var/lib/gems/2.5.0:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all', execute `gem env` for more information

我已经尝试卸载并重新安装 gem,但我想知道为什么我的应用程序甚至需要 6.0.0 版本,我正在运行 rails 5.2.2.1(并且必须保持这种状态)有人知道发生了什么吗?我该如何解决它。

旁注:出于各种原因,我使用命令 gem such and such 而不是 bundle

对 cme​​ts 的回应:不使用 bundle 的原因是因为当我使用 bundle 来管理我的工作依赖项时,它对我在全球范围内拥有的 gem 管理不善——所以如果我做了一个练习项目并进行了捆绑,它也会改变我从事专业工作并导致冲突的项目的宝石 - 所以现在 bundle 具有与我的工作项目不同的环境,因此我可以在业余时间创建迷你 Rails 应用程序。我该如何补救这种情况?非常感谢

【问题讨论】:

  • “旁注:出于各种原因,我正在使用命令 gem 诸如此类而不是捆绑” - 这就是您的问题。
  • 在处理项目时,您通常不会手动安装 gems。 Gemfile(您可以自己编辑)定义了所有直接依赖项,Gemfile.lock(您几乎不应该自己编辑)为每个依赖项、依赖项的依赖项以及依赖项的依赖项,.... - 这样您就可以获得运行项目所需的所有内容的完整、定义明确的列表。
  • 要安装Gemfile.lock 中的所有内容,您必须运行:bundle install,或者简称为bundle。如果您真的搞砸了(例如,您一直在本地计算机上直接编辑 gem),您可以运行 bundle pristine 强制重新安装所有内容。
  • TL;DR:不要运行gem install xxx。只需运行bundle install
  • 不使用 bundle 的原因是因为当我使用 bundle 来管理我的工作依赖项时,它对我在全球范围内拥有的 gem 管理不善——所以如果我做了一个练习项目并进行了捆绑,它也会更改我专业从事的项目的 gems 并导致冲突 - 所以现在 bundle 有一个与我的工作项目不同的环境,所以我可以在业余时间创建迷你 rails 应用程序。我该如何补救这种情况?

标签: ruby-on-rails ruby rubygems


【解决方案1】:

你能传递 gemfile 和 gemfile.lock 吗?

【讨论】:

    【解决方案2】:

    你必须bundle

    这将安装 gems 并解决依赖关系。

    【讨论】:

      猜你喜欢
      • 2011-05-28
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      相关资源
      最近更新 更多