Несколько источников 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'
Ответы
Ответ 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