我有一个纯粹为了个人使用而维护的 gem,它恰好与 rubygems.org 上托管的旧 gem 有名称冲突。当我运行
gem update
时,会下载 rubygems.org 版本。我想阻止这种情况发生。我知道我可以明确指定 gem update
包含哪些宝石,但是我可以指定要排除哪些宝石吗?
很确定你不能,但是你可以相当轻松地(在unix上)使用
编写解决方案脚本gem list --local | awk '{print $1}' | grep -v YOUR_GEMNAME | xargs gem update
另外,最近几次查看 Rubygems 源代码给我留下了深刻的印象,添加此功能可能不会很困难。他们可能会接受拉取请求。
根据Joshua的回答,要在
bundle update
期间选择性地排除宝石更新,您还可以执行以下操作:
bundle list --name-only | awk '{print $1}' | grep -v YOUR_GEMNAME | grep -v YOUR_OTHER_GEMNAME | xargs -t bundle update
使用附加管道
grep -v YOUR_OTHER_GEMNAME
展示如何根据需要从捆绑包更新中排除多个宝石。