Подтвердить что ты не робот

Несколько источников Ruby Bundler в Gemfile

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

например, Gemfile:

source :rubygems  
gem 'gemfromrubygems1'  
gem 'gemfromrubygems2'

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

Ответ 1

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.

Ответ 2

В соответствии с разделом "Приоритет источника" в Gemfile manpage используются источники из последнего введенного для первого ввода.

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

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

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

Ответ 3

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

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

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

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

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

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

Ответ 4

Может помочь команда path. Это позволяет вам устанавливать уникальные источники драгоценных камней

gem "foo", "1.0", :path => "bar"

Источник: http://bundler.io/v1.3/man/gemfile.5.html