У меня есть несколько файлов gem, которые я устанавливаю через gem install xx.gem
. Могу я сказать Bundler, чтобы использовать их? Или мне нужно указать путь к исходному файлу?
Как указать локальные .gem файлы в моем Gemfile?
Ответ 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
нет параметров.