Rails 3 "bundle install" и "bundle install --deployment" работают хорошо, за исключением того, что второй просто использует больше дискового пространства? - PullRequest
14 голосов
/ 10 сентября 2010

Похоже, что на машинах разработки (например, на Macbook), если мы используем bundle install --deployment, все гемы будут установлены в папку vendor/bundle, и она просто использует больше дискового пространства, если у нас несколько проектов Rails 3какой-то проект только для тестирования Rails 3).Если это не --deployment, то драгоценные камни будут находиться в «общей» папке, а не внутри папки проекта, и поэтому могут быть общими для всех проектов.Это правда?

Другое дело, нужно ли нам добавлять все файлы в vendor/bundle в наш репозиторий и загружать его?Похоже, что если мы сделаем это, мы просто закроем репо, потому что если мы этого не сделаем, все соответствующие драгоценные камни будут установлены bundle install с использованием всех драгоценных камней, указанных в Gemfile.lock в любом случае.(Gemfile.lock - это небольшой файл в репо).Это тоже правда?

Ответы [ 2 ]

37 голосов
/ 10 сентября 2010

Да!True.

Когда вы используете флаг --deployment, Bundler гарантирует, что каждый необходимый вам драгоценный камень vendored , то есть они копируются в заранее определенное место в структуре папок вашего приложения (которая оказываетсяvendor/bundle в Rails по соглашению) Это хорошо для двух вещей.

Во-первых, если у вас есть ограниченные права, которые не позволяют вам установить драгоценные камни на вашем компьютере для развертывания, то пусть у вас есть все драгоценные камни, необходимые в вашем приложении.

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

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

И да, вендор будет раздувать код вашего приложения.Gemfile.lock это просто список необходимых драгоценных камней.Если вы продаете свои драгоценные камни, они копируются в ваше приложение изо всех сил.

Итак, я рекомендую вам не продавать ваши драгоценные камни (это также означает, что не используйте --deployment флаг), если у вас нет одной из вышеуказанных причин.

2 голосов
/ 13 мая 2011

Я думаю, что поставщик / комплект не повлияет на репо, пока репо позволяет игнорировать файлы.
Его можно игнорировать (добавив путь к .gitignore, если вы используете git), и на сервере естьсимволическая ссылка, чтобы поделиться драгоценными камнями с несколькими ревизиями.

...