В чем разница между Gemfile и файле.замок в Рубине на рельсах



Я новичок в Ruby on Rails и я использую Rails 3.0.9.



в чем разница между Gemfile и Gemfile.lock в Rails?

622   3  

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 install
. После этого каждый раз, когда вы запускаете bundle 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

    Ничего не найдено.