4

早些时候,我在我的 Rails 项目的 Gemfile 中更改了 gem 版本。我运行了 bundler update gemname,这安装了多个依赖项的最新版本,这让我很惊讶。

现在,我需要降级到旧版本的 gem。我已经在我的 Gemfile 中改回了版本,并再次运行 bundler upgrade gemname (和 bundler install 来衡量),但现在之前升级的 gem(依赖项)仍然是较新的版本(我猜 gem没有指定版本,所以它只是使用最新的?)。

有没有办法将这些依赖项降级到升级 gem 之前的位置?

4

3 回答 3

3

您始终可以在 Gemfile.xml 中使用所需的版本号指定依赖的 gem。这将强制 bundler 重新评估依赖项并根据需要降级它们。这并不理想,但是一旦版本自行排序,您将来就可以删除指定的 gem。

于 2012-08-14T13:51:45.483 回答
2

如果依赖 gem 没有指定,Bundler 无法知道依赖 gem 的最大版本。除非降级 gem 确实改变了它的依赖关系,否则您唯一真正的选择是从版本控制中检出 gemfile.lock 的先前版本。否则不,你不能做你想做的事;Bundler 将尊重您当前的 gemfile.lock,除非您的 gem 的依赖项在降级时发生变化,否则它不会改变。

于 2012-08-13T22:04:34.087 回答
2

我会将此添加为评论,但由于我的声誉,我不能,所以我希望有人觉得这很有用。

我也按照 nmott 的建议做了。只需在您的 Gemfile 中添加依赖项,例如: gem 'gem-name', '~> 1.5.0'

并运行bundle update gem-name

然后,当您的依赖项被降级时,从 Gemfile 中删除该行并保持原样。

于 2017-09-27T06:51:53.267 回答