Bundler управляет зависимостями руби приложений.
Существует много различных команд бандлера. Рассмотрим основные из них, а также стандартный workflow.
Основные команды:
bundle install - скачивает все зависимости из Gemfile для вашего приложения. Если не существовал Gemfile.lock, то из удаленного репа скачиваются зависимости и происходит установка. Если Gemfile.lock существовал, и Gemfile не был изменен, то все зависимости разрешиются из Gemfile.lock. Если Gemfile.lock существовал, и был обновлен Gemfile, то все зависимости, которые не обновлены, будут выбираться из Gemfile.lock, а новые перерезолвятся согласно Gemfile. Команда install обновляет кеш (vendor/cache). Команда install при выполнении сначала проверяет не установлен ли уже гем. Если не установлен, то гем выбирается из кеша, если он там присутствует, иначе - выкачивается из инета. В любом случае проверяется формат гемов (подходит ли на данную платформу) через инет (можно отключить опцией --local).
bundle install --deployment - устанавливает зависимости на продакшн сервер. Нельзя использовать на машине разработчика, т.к. возникнут проблемы при изменении Gemfile. Флаг --deployment должен удовлетворять ряду соглашений:
bundle update - обновляет зависимости и Gemfile.lock
bundle package - фиксирует гемы в vendor/cache
Стандартный workflow:
Существует много различных команд бандлера. Рассмотрим основные из них, а также стандартный workflow.
Основные команды:
bundle install - скачивает все зависимости из Gemfile для вашего приложения. Если не существовал Gemfile.lock, то из удаленного репа скачиваются зависимости и происходит установка. Если Gemfile.lock существовал, и Gemfile не был изменен, то все зависимости разрешиются из Gemfile.lock. Если Gemfile.lock существовал, и был обновлен Gemfile, то все зависимости, которые не обновлены, будут выбираться из Gemfile.lock, а новые перерезолвятся согласно Gemfile. Команда install обновляет кеш (vendor/cache). Команда install при выполнении сначала проверяет не установлен ли уже гем. Если не установлен, то гем выбирается из кеша, если он там присутствует, иначе - выкачивается из инета. В любом случае проверяется формат гемов (подходит ли на данную платформу) через инет (можно отключить опцией --local).
bundle install --deployment - устанавливает зависимости на продакшн сервер. Нельзя использовать на машине разработчика, т.к. возникнут проблемы при изменении Gemfile. Флаг --deployment должен удовлетворять ряду соглашений:
- инсталлирует гемы в vendor/bundle
- требует up-to-date Gemfile.lock
- если был запущен bundle package, то будет выбирать пакеты из vedor/cache
UPD: у себя при развертывании на продакшн отказались от ключа --deployment, т.к. приходится каждый раз производить инсталляцию в папку vendor/bundle. А это достаточно затратно по времени (в нашем случае 8 мин). На сервере может находиться только один проект, поэтому ничего страшного не произойдет при инсталляции гемов в систему.
bundle update - обновляет зависимости и Gemfile.lock
bundle package - фиксирует гемы в vendor/cache
Стандартный workflow:
- создаем Gemfile, выполняем установку гемов bundle install
- добавляем Gemfile и полученный Gemfile.lock в систему контроля версий
- при работе на другой машине разработчика выкачаем рабочую копию репа и просто выполняем bundle install
- при развертывании выполняем bundle install
- после изменения Gemfile для получения новых зависимостей выполняем bundle install (обновится Gemfile.lock и кеш). Необходимо убедиться, что Gemfile.lock сохраниться в
- для обновления ВСЕХ гемов можно выполнить bundle update
Комментариев нет:
Отправить комментарий