Можно ли связывать/устанавливать драгоценные камни из локального кеша?
У меня есть куча драгоценных камней на моем компьютере, которые я хочу использовать в рецепте шеф-повара.
Я знаю, что их можно поместить в каталог, например /tmp/gems, и просто:
cd /tmp/gems
gem install *.gem
Можно ли поместить все драгоценные камни в один каталог, где я могу установить их с помощью bundler, не загружая их снова?
cd /somedir/my_rails_project
bundle
Я хочу сохранить пропускную способность.
Ответы
Ответ 1
Вы можете добавить локальные каталоги в Gemfile (пример из документов):
gem "nokogiri", :path => "~/sw/gems/nokogiri"
В качестве альтернативы вы можете настроить локальный репозиторий Git с помощью камней в нем и написать Gemfile следующим образом:
gem "gem1", :git => "file:///tmp/gems",
:branch => "gem1"
Ответ 2
bundle install --local
должен быть тем, что вы хотите. Из bundle-install manpage:
--local
Do not attempt to connect to rubygems.org, instead using just the
gems located in vendor/cache. Note that if a more appropriate
platform-specific gem exists on rubygems.org, this will bypass
the normal lookup.
Ответ 3
Используйте
bundle package
Замки, а затем кэширует драгоценные камни в. /vendor/cache.
Команда пакета скопирует файлы .gem для ваших драгоценных камней в связать в. /vendor/cache. После этого, когда вы запускаете установку пакета, Бундлер будет использовать драгоценные камни в кеше, предпочитая rubygems.org.
http://bundler.io/v1.6/bundle_package.html
Ответ 4
Если вы хотите использовать локальный кеш для ускорения bundle install
в CI, например, когда контейнер-докер используется для запуска тестов, вы можете использовать --path
. Это будет использовать драгоценные камни в данном пути, если они не присутствуют, иначе они будут загружены в это место.
Это предполагает, что сборка CI может монтировать постоянный том внутри контейнера докера. Например, если машина CI имеет каталог /var/cache/drone
, который может быть установлен в контейнере докера в качестве ./cache
, то вы можете сделать:
bundle install --without=development --quiet --path=cache