更改Rubygem源的阅读顺序

我创建了一个我自己托管的私有gem。 一切顺利,直到有人在rubygems.org上创建了一个同名的gem。 由于rubygems.org优先于我的gem服务器url。 我不能再安装我的gem了。 我试图删除rubygems源:

$ sudo gem source -r http://rubygems.org 

并重新安装它,以便它在gem源列表中,但它不起作用。

有没有办法改变gem源的查找顺序?

请注意,我不想重命名我的gem。

您可以尝试使用specific_install gem:

gem install specific_install gem specific_install -l

另一种方法是显式地声明gem服务器,如下所示:

gem install mygem -s http://gems.example.com

在我看来,最好的选择是使用Bundler。 在你的Gemfile中添加:

gem 'mygem', :git => 'git://git.example.com/myrepo.git'

看起来你不能有一个空的gem缓存。 如果使用gem source -r http://rubygems.org手动删除http://rubygems.org缓存,并且没有定义其他源,则会自动重新填充。 真是一种讨厌的错误。

我的诀窍是添加我的源(内部服务器),然后手动读取rubygems。

 $ gem source add http://internal-server/ $ gem source *** CURRENT SOURCES *** http://rubygems.org/ http://internal-server/ $ gem source -r http://rubygems.org/ $ gem source *** CURRENT SOURCES *** http://internal-server/ $ gem source -a http://rubygems.org/ $ gem source *** CURRENT SOURCES *** http://internal-server/ http://rubygems.org/