Как указать локальные .gem файлы в моем Gemfile?

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

Ответ 1

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

Ответ 2

Это не является строго ответом на ваш вопрос об установке пакетов .gem, но вы можете указать все типы местоположений на основе gem-by-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 упомянул в своем комментарии.)

Ответ 3

Похоже, что сборщик не может использовать .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"

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

Ответ 4

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

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

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

gem 'your', '2.0.1', :path => 'vendor/gems/your'

Ответ 5

Вы можете заставить bundler использовать используемые вами камни, используя "пакет пакетов" и "bundle install --local"

На вашей машине разработки:

bundle install

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

bundle package

(кэширует драгоценные камни в поставщике/кеше)

На сервере:

bundle install --local

(- local означает "использовать драгоценные камни от поставщика/кеша" )

Ответ 6

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

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

Ответ 7

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