之前我在Gemfile中为我的Rails项目更改了一个gem版本。我运行了bundler update gemname,这安装了几个依赖项的更新版本,这让我很吃惊。
现在,我需要降级到旧版本的gem。我已经在我的Gemfile中更改了版本,并再次运行bundler upgrade gemname(并且很好地测量了bundler),但是现在之前升级的gem(依赖项)仍然是较新的版本(我猜是宝石)没有指定版本,所以它只是使用最新的?)。
有没有办法在升级gem之前将这些依赖项降级回原来的位置?
答案 0 :(得分:3)
您始终可以在Gemfile中指定具有所需版本号的从属宝石。这将迫使bundler重新评估依赖关系并根据需要降级它们。它并不理想,但是一旦版本自行排序,您将能够在将来删除指定的宝石。
答案 1 :(得分:2)
如果依赖宝石未指定依赖宝石,则Bundler无法知道依赖宝石的最大版本。除非降级gem实际上改变了它的依赖关系,否则唯一真正的选择是从版本控制中检出gemfile.lock的先前版本。否则,你不能做你想做的事情; Bundler会尊重你当前的gemfile.lock,除非你的gem的依赖关系在降级时发生变化,否则不会改变。
答案 2 :(得分:0)
我会将此作为评论添加,但我不能因为我的声誉,所以我希望有人觉得这很有用。
我也做了nmott建议的内容。
只需在Gemfile中添加依赖项,例如:
gem 'gem-name', '~> 1.5.0'
并运行bundle update gem-name
然后当您的依赖项降级时,从Gemfile中删除该行并保持原来的状态。