【发布时间】:2020-10-12 16:10:39
【问题描述】:
我们使用 Docker 映像来运行 CI 构建。 Docker 映像具有系统安装的 Ruby。 Docker 容器的内容为 gem env 和 bundle env,如 gist 链接文件中所示:
[root@045ce9939883 code]# which ruby
/usr/local/bin/ruby
[root@045ce9939883 code]# ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux]
[root@045ce9939883 code]# bundle -v
Bundler version 2.0.2
我们在 Docker 容器中运行以下命令以在 ./vendor/bundle 安装 gem:
bundle config --local path vendor/bundle
bundle install --jobs 5 --retry 3
然后,我们将包括./vendor/bundle 在内的整个目录进行了tar 处理,以便我们稍后可以使用capistrano 部署内容。在部署机器上,我们首先解压 tar 文件,然后运行 cap deploy 命令。
部署机器上的bundler 似乎无法在./vendor/bundle 中找到使用本机扩展构建的gem。似乎找到所有其他宝石都很好:
[jenkins@tel-web-sob-r01-n01 2.1.10]$ bundle doctor
The following gems are missing
* nokogiri (1.10.9)
* nio4r (2.5.2)
* websocket-driver (0.7.2)
* bindex (0.5.0)
* byebug (9.0.6)
* puma (3.9.1)
* ffi (1.9.18)
Install missing gems with `bundle install
[jenkins@tel-web-sob-r01-n01 2.1.10]$ ls -l ./vendor/bundle/ruby/2.5.0/gems/ | grep nokogiri
drwxr-xr-x 7 jenkins jenkins 157 Jun 22 13:05 nokogiri-1.10.9
部署机器的gem env和bundle env内容如链接
到目前为止我所知道的:
- 我发现所有的扩展都安装在
./vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/。如果我将该目录重命名为2.5.0,它就可以工作。 - 可能与此issue 有关。
【问题讨论】:
-
于是我发现所有的扩展都安装在
./vendor/bundle/ruby/2.5.0/extensions/x86_64-linux/2.5.0-static/。如果我将该目录重命名为2.5.0,它可以工作。 -
您关于重命名为 2.5.0 的评论需要在您的问题中,而不是在评论中。评论是供我们提出的,并建议不构成答案的事情。您的回答需要被纳入问题中,就像该信息一直存在一样添加,并注意可读性。不要使用“编辑”或“更新”标签,因为我们可以看到发生了什么变化。在 cmets 中回答问题或添加其他信息会迫使我们阅读每条评论并尝试将信息拼凑起来以使其有意义,因此请使用问题本身。
-
有道理,会更新