我创建了一个我自己托管的私人宝石。一切都很顺利,直到有人在 rubygems.org 上创建了一个同名的 gem。由于 rubygems.org 的优先级高于我的 gem 服务器 url。我无法再安装我的 gem。我试图删除 rubygems 源:
$ sudo gem source -r http://rubygems.org
并重新安装它,使其出现在 gem 源列表之后,但它不起作用。
有没有办法改变 gem 源的查找顺序?
请注意,我不想重命名我的 gem。
你可以试试specific_install
宝石:
gem install specific_install
gem specific_install -l <git-url>
另一种方法是像这样显式声明 gem 服务器:
gem install mygem -s http://gems.example.com
在我看来,最好的选择是使用 Bundler。在您的 Gemfile 中添加:
gem 'mygem', :git => 'git://git.example.com/myrepo.git'
似乎你不能有一个空的 gem 缓存。如果您使用 手动删除http://rubygems.org缓存gem source -r 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/