同步系统和应用程序之间的依赖关系

问题描述 投票:0回答:4

出现以下错误

You have already activated strscan 3.0.1, but your Gemfile requires strscan 3.0.3.  
Since strscan is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports strscan as a default gem. (Gem::LoadError)

哪里

bundle -v   Bundler version 2.3.13

考虑在 Gemfile 中不直接调用的依赖项。 Gemfile.lock 确实声明

strscan (3.0.3)
strscan 是由
net-imap (0.2.3)

调用的
gem update --system
gem update bundler
touch tmp/restart.txt

并没有解决问题。

如何解决这个版本控制问题?无论是通过显式验证还是删除依赖性

ruby-on-rails bundler
4个回答
6
投票

只需在您的 SSH 服务器上使用此命令

gem update strscan

检查当前

strscan
版本使用

gem list | grep strscan


3
投票

strscan
gem 版本固定到 3.0.1.

在你的

Gemfile

gem "strscan", "3.0.1"

然后

bundle update
更新您的
Gemfile.lock

这应该可以解决问题。

基于 this,我相信 这将在 Ruby 3.1.3+ 中得到修复,您应该能够从您的

Gemfile
中删除这一行,但我不确定。

棘手的是我们只在生产和登台环境中遇到问题,而不是在开发或测试环境中遇到问题。

首先将所有内容部署到暂存,测试然后部署到生产的另一个好理由。


0
投票

几乎必须对 gemfile.lock 进行猴子修补才能使用 3.0.0! https://openbuildservice.org/2022/05/11/post-mortem/


0
投票

升级到 Rails v7.1.3 后我偶然发现了类似的问题。我们的 CI 出现以下错误:

/opt/hostedtoolcache/Ruby/3.2.2/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.12/lib/bundler/runtime.rb:309:in `check_for_activated_spec!':你有已经激活了 mutex_m 0.1.2,但是你的 Gemfile 需要 mutex_m 0.2.0。由于 mutex_m 是默认 gem,您可以删除对它的依赖,或者尝试更新到支持 mutex_m 作为默认 gem 的较新版本的捆绑器。 (宝石::加载错误)

罪魁祸首是 spring,我在 CI 配置中添加了

DISABLE_SPRING
env 变量,错误就消失了。

相关 spring 问题:https://github.com/rails/spring/issues/697

© www.soinside.com 2019 - 2024. All rights reserved.