5

我创建了一个我自己托管的私人宝石。一切都很顺利,直到有人在 ruby​​gems.org 上创建了一个同名的 gem。由于 ruby​​gems.org 的优先级高于我的 gem 服务器 url。我无法再安装我的 gem。我试图删除 ruby​​gems 源:

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

并重新安装它,使其出现在 gem 源列表之后,但它不起作用。

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

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

4

2 回答 2

3

你可以试试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'

于 2013-04-19T19:50:23.157 回答
2

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

对我来说,诀窍是添加我的源(内部服务器),然后手动读取 ruby​​gems。

$ 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/
于 2013-08-05T16:45:00.150 回答