У меня есть пара файлов gem, которые я устанавливаю через gem install xx.gem
. Могу ли я попросить Bundler использовать их? Или мне нужно указать исходный путь?
Как указать локальные файлы .gem в моем Gemfile?
Ответы (7)
Это не совсем ответ на ваш вопрос об установке .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 в его комментарий.)
gem "foreman", :git => "https://github.com/pje/foreman.git"
- person kode; 11.12.2013
Кажется, упаковщик не может использовать файлы .gem из коробки. Указание :path на каталог, содержащий файлы .gem, не работает. Некоторые люди предлагали для этой цели настроить локальный гем-сервер (geminabox, stickler).
Однако гораздо проще использовать локальный «сервер» gem из файловой системы: просто поместите файлы .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"
Если вы обновляете драгоценные камни в репозитории, обязательно перегенерируйте файл index.
gem server
и не хотел размещать весь проект, только файл .gem.
- person Leo Gallucci; 16.12.2013
source "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
- person Leo Gallucci; 16.12.2013
Could not fetch specs from file://Users/nakilon/....../
- person Nakilon; 10.02.2016
gems
папки repo
, а только в папку repo
. Вы создали папку gems
?
- person Asier; 04.03.2016
gem
не может проникнуть. Поэтому я загружаю файлы gem вручную с rubygems.org и создаю свой собственный репозиторий.
- person Robert Brown; 11.04.2016
gem server
возвращал 404, когда сборщик пытался установить драгоценные камни (хотя я мог видеть страницу репо на локальном хосте, и gem install --source localhost...
работало).
- person Samuel Garratt; 22.03.2018
Я бы распаковал ваш гем в папку поставщика приложения
gem unpack your.gem --target /path_to_app/vendor/gems/
Затем добавьте путь в Gemfile, чтобы связать распакованный гем.
gem 'your', '2.0.1', :path => 'vendor/gems/your'
По умолчанию Bundler сначала проверит вашу систему, и если он не сможет найти гем, он будет использовать источники, указанные в вашем Gemfile.
bundle install
работает отлично и денди, но как только вы вызываете require 'yourgame'
, он не может его включить.
- person garbagecollector; 18.08.2016
Вы можете заставить упаковщик использовать драгоценные камни, которые вы развертываете, используя «bundle package» и «bundle install --local».
На вашей машине разработки:
bundle install
(Устанавливает необходимые гемы и делает Gemfile.lock)
bundle package
(Кэширует драгоценные камни в вендоре/кэше)
На сервере:
bundle install --local
(--local означает "использовать гемы из вендора/кэша")
bundle install
После этого скопируйте файл gem в vendor/cache, добавьте камень обратно в файл gem и выполните bundle install --local
- person bert bruynooghe; 28.08.2013
bundle package
— отличное предложение даже сейчас, три года спустя. Если ваша версия Bundler старше 2.0 (еще не выпущенная на момент написания этой статьи), вам нужно будет использовать bundle package --all
, если вы хотите включить гемы с path
или git
зависимостями. Однако он даст вам полезное напоминание, если обнаружит такие зависимости.
- person L2G; 24.06.2014
--local
: обратите внимание, что если на rubygems.org существует соответствующий гем для конкретной платформы, он не будет найден.
- person Liam Dawson; 04.03.2019
Добавление .gem
к vendor/cache
похоже работает. В Gemfile
параметры не требуются.
Я обнаружил, что проще всего запустить свой собственный сервер gem, используя geminabox