Rubygems 更新在奇怪的 ruby 版本上失败

Rubygems update fails on strange ruby versions

我正在开发 gem(atd) and I just tried to get gitlab CI to run my tests on all versions of ruby my gem supports (2.2.2 - 2.4.0) including bugfix releases. I had an issue (GitLab CI pipline link, see versions > 2.3.0) with the rainbow gem 无法使用早于 2.6.9 的 rubygems 版本(当前rubygems 版本是 2.6.10),所以在我的 gitlab ci 构建中(基本上是 docker 容器)我尝试 运行 gem update --systembundle install 之前,这消除了彩虹错误,但是当 运行ning gem update --system 仅在 ruby 版本 2.2.4 和 2.3.0 上时,我得到了以下错误,这很奇怪,因为这两个版本之间有 2 个版本,2.2.5 和 2.2.6:

来源:My GitLab CI pipeline

Running with gitlab-ci-multi-runner 1.10.4 (b32125f)
Using Docker executor with image ruby:2.2.4 ...
Pulling docker image ruby:2.2.4 ...
Running on runner-fa6cab46-project-1684988-concurrent-0 via runner-fa6cab46-machine-1486422765-ae1c6a3c-gce...
Cloning repository...
Cloning into '/builds/thesecretmaster/atd'...
Checking out ebe7405a as development...
Skipping Git submodules setup
$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]
$ which ruby
/usr/local/bin/ruby
$ gem install rubygems-update
Successfully installed rubygems-update-2.6.10
1 gem installed
$ gem update --system
ERROR:  While executing gem ... (Errno::ENOENT)
    No such file or directory @ dir_chdir - /usr/local/bundle/gems/rubygems-update-2.6.3
Updating rubygems-update
Successfully installed rubygems-update-2.6.10
ERROR: Build failed: exit code 1

我觉得可能与升级前的rubygems版本有关,但我不确定。我知道它无法从 rubygems 2.6.3 到 2.6.10 ruby 2.2.4 和 2.3.0.

这是 table 的通过和失败:

ruby -v | initial gem -v | ci pass/fail
=======================================
2.2.2   | 2.4.8          | pass
2.2.3   | 2.5.0          | pass
2.2.4   | 2.6.3          | fail
2.2.5   | 2.6.8          | pass
2.2.6   | 2.6.10         | pass
2.3.0   | 2.6.3          | fail
2.3.1   | 2.6.8          | pass
2.3.2   | 2.6.8          | pass
2.3.3   | 2.6.10         | pass
2.4.0   | 2.6.10         | pass

为了满足 gem update --system 更新 2.6.3 的愿望,您可以 运行 gem install rubygems-update --version 2.6.3 安装代码以更新到 2.6.3,然后您可以通过告诉它 gem update --system 2.6.10 来强制它更新到正确的版本(2.6.10 是撰写本文时的当前 ruby​​gems 版本)。