Bundler: установка определенного файла .gem

Есть ли способ сказать Bundler установить определенный файл .gem, который у меня есть?

У меня есть скомпилированная версия ParseTree, которую я должен использовать (черт возьми, Windows!), но не хотел расширять файл gem, чтобы добавить атрибут :path => '...' к требованию 'gem' .


person Carlos Villela    schedule 15.12.2010    source источник


Ответы (5)


Вы также можете упаковать свои гемы с помощью bundle package, что поместит все ваши гемы в каталог vendor/cache вашего проекта. При необходимости перезапишите ParseTree предварительно скомпилированным гемом в этом каталоге. Затем, когда вы настроите свой проект на другом компьютере, запустите bundle install --local, и он установит только те драгоценные камни, которые вы упаковали.

person dkastner    schedule 21.12.2010

Вместо того, чтобы настраивать свой собственный гем-сервер, я смог решить эту проблему, написав следующее в моем Gemfile (явная версия имеет решающее значение):

gem 'libv8', '3.11.8.3mytest', :path => '../libv8/pkg'

А папка ../libv8/pkg содержит только упакованный в двоичном виде гем libv8-3.11.8.3mytest-x86_64-linux.gem.

Надеюсь это поможет.

person nathanvda    schedule 17.08.2012

Я не думаю, что вы можете. Насколько я знаю, вам нужно распаковать .gem во что-то вроде поставщика/ и установить параметр :path.

person Rodrigo Kochenburger    schedule 15.12.2010
comment
О, и я думаю, что .gem (и распакованная папка) должен включать файл .gemspec. - person Rodrigo Kochenburger; 15.12.2010

Разве вы не можете указать объявление gem на свой форк ParseTree на Github?

person Gustavo Barrancos    schedule 15.12.2010
comment
Честно говоря, я не хочу вносить какие-либо изменения в ParseTree. Я просто хотел, чтобы Bundler использовал эту его конкретную версию, которая скомпилировала двоичные файлы Win32, поэтому мне не нужно использовать VC++ на другом компьютере, который я настраиваю. - person Carlos Villela; 15.12.2010

Я разобрался - спасибо всем откликнувшимся! :)

Хитрость заключалась в том, чтобы настроить локальный сервер gem (с «сервером gem») и изменить источник моего Gemfile, чтобы он указывал на http://localhost:8808 вместо http://rubygems.org.

Это означает, что упаковщик возьмет все драгоценные камни из текущего установленного набора драгоценных камней (что подходит для моего случая), а затем скомпилированные библиотеки просто будут работать.

person Carlos Villela    schedule 15.12.2010