1

我遇到了捆绑安装的一些问题。

当我们运行 'bundle install' 时,Gemfile.lock 中的依赖 gem 之一会自动升级。根据理论,“捆绑安装”将查找 Gemfile.lock 的版本并且不会解析版本并且将安装相同的版本。只有在没有 Gemfile.lock 或我们提供“捆绑更新”时才会解决。

在我们的服务器中,我们有 Gemfile.lock 但“捆绑安装”更新了提到 gemfile.lock 的特定 gem(它是一个依赖 gem,所以我们没有在 gemfile 中指定),它不应该这样发生,因为已经存在一个版本锁定文件,即使该版本已自动更新,由于此升级,站点中的某些主要功能已损坏。

供您参考:bundler 版本 - 1.17.2 ruby​​ 版本 - 2.5.3 gem 版本 - 2.7.6 rails 版本 - 5.2.3 依赖 gem 名称为“nokogiri”,此 gem 锁定为 1.11.7,但已更新为“ 1.12.1”当我给出“捆绑安装”时

有什么想法可以防止将来出现此问题吗?

4

1 回答 1

1

首先,如果您共享 Gemfile.lock 错误以了解我特别可能导致升级的原因,那就太好了。但从远处看,我认为正如你所说,这个 gem 是一个依赖 gem,它没有在你的 gemfile 中说明。可能另一个 gem 也依赖于这个 gem,并且根据这个要求,它甚至在你假设的 gem 行运行之前触发升级,这可能会导致错误。彻底阅读错误,您可以识别导致此错误的 gem。

在你更新之后,我已经阅读了这个。就像前面所说的那样,这些 gem 之一可能是您的特定 gem 随每个捆绑程序安装更新的原因。不幸的是,没有真正的转机来解决这个问题,但捆绑器确实让路了。您可以将 --frozen 选项与 bundler 一起使用,它将 gemfile.lock 冻结到每个 gem 的当前版本,并且不会更新任何 gem,而只会安装您拥有的新 gem。不幸的是,这已被弃用,只能从 /.bundle/config 完成。这可以从项目根目录中的命令行完成。运行 bundle config frozen true以阻止捆绑程序更新 gemfile.lock 中的 gem 您可能必须向用户授予写入权限才能编辑捆绑配置。我也找到了这篇文章来自 bigbinary.com

于 2021-08-17T11:59:04.623 回答