【发布时间】: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
对 cmets 的回应:不使用 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