降级 gem 时,bundler 可以自动降级 gem 的依赖项吗?
Posted
技术标签:
【中文标题】降级 gem 时,bundler 可以自动降级 gem 的依赖项吗?【英文标题】:When downgrading a gem, can bundler automatically downgrade the gem's dependencies along with it? 【发布时间】:2012-08-10 04:40:31 【问题描述】:之前我在我的 Rails 项目的 Gemfile 中更改了 gem 版本。我运行了 bundler update gemname,这安装了多个依赖项的最新版本,这让我有点吃惊。
现在,我需要降级到旧版本的 gem。我已经在我的 Gemfile 中改回了版本,并再次运行 bundler upgrade gemname (和 bundler install 来衡量),但现在之前升级的 gem(依赖项)仍然是较新的版本(我猜 gem没有指定版本,所以它只是使用最新的?)。
有没有办法将这些依赖项降级到升级 gem 之前的位置?
【问题讨论】:
【参考方案1】:如果依赖 gem 没有指定,Bundler 无法知道依赖 gem 的最大版本。除非降级 gem 确实改变了它的依赖关系,否则您唯一真正的选择是从版本控制中检出 gemfile.lock 的先前版本。否则不,你不能做你想做的事; Bundler 将尊重您当前的 gemfile.lock,除非您的 gem 的依赖项在降级时发生变化,否则它不会改变。
【讨论】:
【参考方案2】:您始终可以在 Gemfile 中使用所需的版本号指定依赖的 gem。这将迫使 bundler 重新评估依赖项并根据需要降级它们。这并不理想,但是一旦版本自行排序,您将来就可以删除指定的 gem。
【讨论】:
【参考方案3】:我会将此添加为评论,但由于我的声誉,我不能添加,所以我希望有人觉得这很有用。
我也按照nmott 的建议做了。
只需在您的 Gemfile 中添加依赖项,例如:
gem 'gem-name', '~> 1.5.0'
然后运行bundle update gem-name
然后,当您的依赖项被降级时,从 Gemfile 中删除该行并保持原样。
【讨论】:
以上是关于降级 gem 时,bundler 可以自动降级 gem 的依赖项吗?的主要内容,如果未能解决你的问题,请参考以下文章
可以将 Bundler 配置为安装 gems rdoc 吗?