2016-05-28 2 views
0

Я читал книгу Rails Way. И в нем обсуждается запуск пакета пакетов. Это сохранит все файлы .gem, которые ваше приложение использует в поставщике/кеше. Запуск установки пакета будет предпочитать драгоценные камни в поставщике/кеше для драгоценных камней в других местах. Я использую RVM, так что я проверил это с РВМ:пакет пакет с rvm

rvm gemset create rent_prototype 
rvm use [email protected]_prototype 
gem install rails 
rvm gemdir 
/home/viggy/.rvm/gems/[email protected]_prototype 
$ cd /home/viggy/.rvm/gems/[email protected]_prototype 
$ ls -l devise-4.1.1 
ls: cannot access devise-4.1.1: No such file or directory 

Выше я создал gemset с РВМ и проверил, если Разрабатывают камень был установлен, и это не было, так как он не в Gemfile. Теперь я использую пакет пакетов:

$ cd - 
$ bundle package 

Updating files in vendor/cache 
    * rake-11.1.2.gem 
    * i18n-0.7.0.gem 
    * json-1.8.3.gem 
    ... 
$ cd vendor/cache 
$ ls -l devise-4.1.1 
ls: cannot access devise-4.1.1: No such file or directory 

Разумеется, в вендоре/кеше нет никакого драгоценного камня.

Затем я изменить Gemfile и добавить:

gem 'devise' 

Тогда я бегу bundle install.

Теперь я проверить, где был установлен Разрабатывают:

$ bundle show devise 
/home/viggy/.rvm/gems/[email protected]_prototype/gems/devise-4.1.1 
$ cd vendor/cache 
$ ls -l devise-4.1.1 
ls: cannot access devise-4.1.1: No such file or directory 

Так что, когда я установлю драгоценный камень, он устанавливается в папку РВМ. Он не предпочитает поставщика/кеш в других местах. Если это так, какова цель «пакета пакетов» при использовании rvm?

+0

Вы не запустили пакет пакетов после добавления дизайна. Именно поэтому он не находится в кеше, вы запустили установку. – Doon

ответ

0

Согласно моему замечанию. Вы не запускали пакет после добавления дизайна в свой файл gem, поэтому его нет в вендоре/кеше. Установка Bundle все еще требует установки драгоценных камней в вашей системе.

От bundler website

Команда пакет будет копировать файлы .gem для ваших драгоценных камней в пачке в ./vendor/cache. После этого, когда вы запускаете установку пакета, Bundler будет использовать драгоценные камни в кеше, предпочитая те, что на rubygems.org.

Кроме того, если вы затем проверите этот каталог в своем источнике контрольный репозиторий, другие, кто проверит ваш источник, смогут установить комплект, не загружая никаких дополнительных драгоценных камней.

Gemset and bundler rvm решает некоторые из тех же проблем, с которыми необходимо использовать/активировать набор драгоценных камней/версий. Теперь с пакетом вам не нужно использовать rvm gemset, gemfile обрабатывает его. Но это не всегда так.

+0

Итак, вы предполагаете, что rvm используется только для управления рубиновыми версиями и с точки зрения управления gemset, мы должны использовать пакет? – Donato

+0

Я по-прежнему использую гемзеты долго с пакетом, так как я работаю над множеством разных проектов с множеством различных версий установленных драгоценных камней. Драгоценные камни, которые используются во всех моих проектах, заканчиваются в глобальном гемсете (например, расслоение и грабли), а затем в каждом проекте для всех остальных. Таким образом, я не завершаю 100-миллиметровыми драгоценными камнями в разных версиях моего дефолтного набора – Doon

Смежные вопросы