捆绑安装后缺少 Gem 中的单个文件,使用 gem 安装时包括在内



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

宝石的结构:

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

解压缩 gem 并验证文件是否包含在物理上。否则,您在构建过程中遇到问题。

因此,问题的根本原因是存在来自捆绑器的vendor/cache,其中包括具有一些错误命名的 gem 版本。由于在解决问题时 gem 版本没有碰撞,因此捆绑程序始终使用缓存版本。

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

最新更新