捆绑安装后 gem 中的单个文件丢失,使用 gem 安装时包含

Single file from gem missing after bundle install, included when using gem install

我 运行 遇到了一个我目前无法解释的奇怪问题: 我正在构建一个 gem 并将其推送到私有 gem 存储库。当使用 gem install my-gem 从所述存储库安装 gem 时,一切都按预期进行。 但是,当我在 Gemfile 中包含此 gem 和 运行 bundle install 时,gem 安装,BUT 缺少一个文件,并且我有点不知所措。

gem 的结构:

my-gem
├── my-gem.gemspec
├── lib
│   ├── my-gem.rb   <== this one is simply missing after bundle install
│   ├── my-gem
│   │   ├── stuff_for_my_gem
        ├──  ...

Unpack the gem 并验证文件是否实际包含在内。如果不是,则说明您的构建过程有问题。

所以问题的根本原因是来自捆绑器的 vendor/cache 的存在,其中包含一个带有一些错误命名的 gem 版本。由于在解决问题时 gem 版本未被修改,因此捆绑程序始终使用缓存版本。

即使 gem 从系统中完全卸载,它仍然可以在本地 vendor/cache 中使用。在该文件夹中 bundle install 后,捆绑程序意识到它有 gem 可用并从缓存中使用它。 这也是 gem install 没有出现问题的原因,因为这样一来,bundle 创建的 vendor/cache 就被忽略了。