Итак, короткий ответ, вы не делаете.
Когда вы изменяете свой Gemfile и затем запускаете bundle install
или bundle update
, упаковщик обрабатывает разрешение зависимостей для вас и определяет лучшие (новейшие) версии каждого требуемого вами гема, который удовлетворяет всей цепочке зависимостей (вы не получит новую версию, которая разбивает другой драгоценный камень в списке зависимостей и т. д.). Конечно, вы также можете поместить определенную версию или спецификацию '> = 1.2.3' или то, что вы указали в Gemfile, используя знакомый синтаксис из config.gem
дней, и упаковщик обязательно выполнит это (или выиграл) создать Gemfile.lock, если нет действующего разрешения).
Когда Bundler делает свое дело, он создает файл Gemfile.lock, который (и это при условии, что вы используете только bundler для управления вашим гемом на всех рабочих станциях / средах / развертываниях) выполняет ту же функцию, что и замораживание всех гемов, которые вы используете. требуется Бесплатно! (Проверьте этот файл в системе управления версиями!) Если ваш новый стажер разработки извлекает ваш исходный код на новой машине, ему потребуется одна bundle install
, и те же самые версии драгоценных камней, которые вы установили, находятся на ее компьютере. Нажмите для развертывания и выполните bundle install --deployment
там (или, более вероятно, добавьте его в ваш Capfile), и те же самые гемы будут установлены (на этот раз в вендор / комплект, настраиваемый). Bundler используется в Rails 3 для управления загрузкой всех драгоценных камней, поэтому, куда бы вы ни указали, чтобы упаковщик установил их (независимо от вашего обычного местоположения gem install
по умолчанию, или BUNDLE_PATH
(который записывается в .bundle / config, если вы устанавливаете с bundle install --path=foo
в противном случае), bundler загрузит нужные, даже если они отличаются от системных гемов.
Вам не нужно распаковывать гемы и регистрировать их в вашем приложении, потому что это не имеет значения: вы гарантируете, что одни и те же версии вызываются независимо от того, где они установлены, что, вероятно, зависит от компьютера В любом случае, на машину (.bundle / не следует регистрировать в репо) - так зачем вставлять в репо еще 60-80 МБ файлов, которые вы никогда не будете изменять или использовать? (кстати, именно поэтому я бы не рекомендовал bundle install --path=vendor/gems
, как предложил nfm - это не обязательно неправильно, просто нет никакой выгоды по сравнению с обычным рабочим процессом компоновщика, и теперь ваш размер репо просто увеличился ).