我遇到了一个奇怪的问题,我目前无法解释: 我正在构建一个 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
被忽略了。