Как мне указать локальные файлы .gem в моем Gemfile? - PullRequest
146 голосов
/ 12 апреля 2011

У меня есть пара gem-файлов, которые я устанавливаю через gem install xx.gem.Могу ли я сказать Bundler использовать их?Или я должен указать исходный путь?

Ответы [ 7 ]

265 голосов
/ 01 февраля 2013

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

Указание атрибута :path установит гем с этого пути на ваш локальный компьютер.

gem "foreman", path: "/Users/pje/my_foreman_fork"

Альтернативно, указав атрибут :git, вы установите гем из удаленного репозитория git.

gem "foreman", git: "git://github.com/pje/foreman.git"

# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"

# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"

# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"

(Как @ JHurrah упоминается в его комментарии .)

58 голосов
/ 12 сентября 2012

Кажется, упаковщик не может использовать .gem файлы из коробки.Указание: пути к каталогу, содержащему файлы .gem, не работает.Некоторые люди предлагали для этой цели настроить локальный гем-сервер (geminabox, stickler).

Однако я обнаружил, что гораздо проще использовать локальный гем-сервер из файловой системы: просто поместите свой.gem файлы в локальном каталоге, затем используйте "gem generate_index", чтобы сделать его хранилищем Gem

mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index

Наконец, укажите на это расположение упаковщика, добавив следующую строку в ваш Gemfile

source "file://path/to/repo"

Если вы обновите драгоценные камни в хранилище, обязательно обновите индекс.

41 голосов
/ 30 мая 2014

Я бы распаковал ваш драгоценный камень в папке поставщика приложения

gem unpack your.gem --target /path_to_app/vendor/gems/

Затем добавьте путь в Gemfile, чтобы связать распакованный драгоценный камень.

gem 'your', '2.0.1', :path => 'vendor/gems/your'
29 голосов
/ 12 апреля 2011

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

5 голосов
/ 02 июня 2011

Вы можете заставить сборщик использовать развернутые гемы с помощью «комплекта пакетов» и «комплекта установки --local»

На компьютере разработчика:

bundle install

(Устанавливает необходимые самоцветыи создает Gemfile.lockсамоцветы от вендора / кеша ")

1 голос
/ 17 августа 2018

Добавление .gem к vendor/cache, кажется, работает.В Gemfile.

опции не требуются
0 голосов
/ 30 июля 2015

Мне было проще всего запустить собственный гем-сервер, используя geminabox

См. эти простые инструкции .

...