3 ответов:
The
Gemfileгде вы указываете, какие драгоценные камни вы хотите использовать, и позволяет указать, какие версии.The
Gemfile.lockфайл, где Bundler записывает точные версии, которые были установлены. Таким образом, когда одна и та же библиотека/проект загружается на другую машину, выполняетсяbundle installрассмотримGemfile.lockи установить точно такие же версии, а не просто с помощьюGemfileи установка самых последних версий. (Запуск различных версий на разных машинах может привести к сломанным испытаниям, etc.) Вы никогда не должны непосредственно редактировать файл блокировки.проверить цель и обоснование Бандлера, в частности, проверка вашего кода в разделе управления версиями.
обычно мы пишем зависимости в Gemfile как:
gem "nokogiri", "~> 1.4.4" gem 'bcrypt-ruby', '~> 3.0.0' gem 'uglifier', '>= 1.2.3' ..здесь вы в основном говорите: "я хочу nokogiri до тех пор, пока это больше, чем версия 1.4.4" и т. д. Теперь предположим, что я установил свой
Gemfile8 месяцев назад и я успешно настроить мое приложение с этим требованием. 8 месяцев назад версия nokogiri была 1.4.4. Мои приложения rails работали отлично без каких-либо проблем с этой версией.теперь думаю, что я пытаюсь строить с тем же
Gemfile. Но если мы посмотрим на версии nokogiri мы видим, что текущая стабильная версия изменился на 1.4.9. Это означает, что если мы попытаемся построить, bundler установит версию 1.4.9 из nokogiri (предположим, что у нас нетGemfile.lock).что это значит ?
как вы видите, если у вас нет
Gemfile.lockиbundle installзатем используемые в настоящее время драгоценные камни могут отличаться в любом случае время. Ваше приложение использовало версию 1.4.4 и работает 8 месяцев назад без проблем, но если вы попытаетесь построить его теперь версии 1.4.9. Может быть, он сломан с последней версией
nokogiri, удивительная функция, которую вы использовали с 1.4.4 больше не доступен и т. д..чтобы предотвратить такого рода проблемы это. В
Gemfile.lockтолько точные версии are написано и, таким образом, только они будут установлены. Это означает, что если вы распространяете свое приложение сGemfile.lock, каждая машина будет иметь те же Камни установлены и самое главное все они получают одну и ту же версию. Это даст вам стабильный и общий стек развертывания.как Gemfile.замок создан?
он автоматически создается с первым:
. После этого каждый раз, когда вы запускаетеbundle installbundle install, бандл сначала посмотрит вверхGemfile.lockи установить драгоценные камни, указанные там. Это привычка распространять этот файл среди ваших проектов, чтобы обеспечить согласованность и стабильность.как обновить Gemfile.замок?
если вы довольны последней версией ваших приложений, чем вы можете обновить
Gemfile.lock. Просто отразите ваши изменения вGemfile. Это означает, что измените зависимости на новые точные версии вGemfile. После этого бегите:bundle installэто обновит вам
Gemfile.lockС Новым версия приложения.
Gemfile.замок
при запуске bundle install, Bundler сохранит полные имена и версии всех драгоценных камней, которые вы использовали (включая зависимости драгоценных камней, указанных в Gemfile(5)) в файл с именем Gemfile.замок.
Bundler использует этот файл во всех последующих вызовах bundle install, что гарантирует, что вы всегда используете один и тот же точный код, даже когда ваше приложение перемещается по машинам.
из-за способа разрешения зависимостей работает, даже кажущееся небольшим изменение(например, обновление до точечного выпуска зависимости драгоценного камня в вашем Gemfile (5)) может привести к тому, что для удовлетворения всех зависимостей потребуются радикально разные драгоценные камни.
в результате вы должны проверить свой Gemfile.блокировка в системе управления версиями. Если вы этого не сделаете, каждая машина, которая проверяет ваш репозиторий (включая ваш рабочий сервер), снова разрешит все зависимости, что приведет к использованию различных версий стороннего кода если какие-либо камни в Gemfile(5) или любой из их зависимостей были обновлены.
Comments