2013-04-18 3 views
28

Мне нужно, чтобы некоторые из моих драгоценных камней были установлены из нашего собственного хранилища драгоценных камней, а не рубигемов, в то время как остальные были установлены из рубигемов. Могу ли я установить это в Gemfile, не беспокоясь о конфликте имен с идентично названным камнем в Rubygems? Как я могу определить, откуда загружается драгоценный камень?Ruby Bundler Несколько источников в Gemfile

например Gemfile:

source :rubygems 
gem 'gemfromrubygems1' 
gem 'gemfromrubygems2' 

source "http://our.own.gem.repo.com/the/path/to/it" 
gem 'gemfromourrepo' 

ответ

4

Единственный способ, которым я нашел кажется ужасным хака.

Bundler будет искать лучшую версию вашего драгоценного камня, начиная с источника, указанного последним, а затем искать все источники, перечисленные ранее. Не имеет значения, где исходные строки относятся к линиям драгоценных камней, только относительно друг друга.

Я попытался заставить его работать, используя: git и: путь, но ни один из них не работает для gemservers. Это оставляет соответствие лучшей версии.

Если вы установили версию своего драгоценного камня на что-то вроде 2.mine.1 и надавите на свой сервер, вы можете ограничить версию в своем Gemfile.

source :rubygems 
source 'http://myrepo'  
gem 'gemfromourrepo', '~> 2.ourrepo' 

Тогда лучшая соответствующая версия должна быть одной с вашего сервера. Есть шанс, что кто-то может надавить свой собственный камень с тем же именем на 2.ourrepo.2 на рубигемы, но это маловероятно, если он уникален.

+0

Мне нравится это решение, потому что оно позволяет производить производство из производственной версии драгоценного камня, в то время как в разработке я могу извлечь из разработки версию драгоценного камня. – LisaD

5

Согласно разделу Источника Приоритета в Gemfile manpage источниках ищутся из последних введенных в первом вошли.

Основываясь на том, что вы сказали, похоже, что вы всегда предпочитаете свой драгоценный камень над rubygems.org. До тех пор, пока вы не должны менять свое предпочтение (т.е. некоторые Dups из rubygems.org и некоторые Dups из вашей личной репо.), То ваша проблема решаются просто следующий Gemfile:

source 'https://rubygems.org' 
source 'http://our.own.gem.repo.com/the/path/to/it' 

gem 'gemfromrubygems1' 
gem 'gemfromrubygems2' 
gem 'gemfromourrepo' 
44

Bundler 1.7 имеет новый функция, которая позволяет выбрать источник для конкретных драгоценных камней, вкладывая их в блоке:

source "https://rubygems.org" 

gem 'gemfromrubygems1' 
gem 'gemfromrubygems2' 

source "http://our.own.gem.repo.com/the/path/to/it" do 
    gem 'gemfromourrepo' 
end 

или указать его в качестве опции:

source "https://rubygems.org" 

gem 'gemfromrubygems1' 
gem 'gemfromrubygems2' 

gem 'gemfromourrepo', source: "http://our.own.gem.repo.com/the/path/to/it" 

См. http://bundler.io/v1.7/gemfile.html.

Смежные вопросы