Различные способы обновления драгоценных камней Ruby - PullRequest
3 голосов
/ 02 декабря 2011

Я бы хотел понять разницу между следующими командами Ruby / Bundler / RubyGems:

  1. bundle install
  2. bundle update
  3. gem install my_gem.gem
  4. gem update my_gem.gem

Предположим, my_gem размещен на rubygems.org .Я использую Ruby 1.8.7, RubyGems 1.8.10 и Bundler 1.0.21.У меня также есть rvm 1.8.6 (но я не уверен, что rvm имеет значение при обновлении гемов).

Также я использую git для контроля версий.Имеет ли смысл вручную обновлять Gemfile?Или это происходит автоматически при запуске одной из вышеуказанных команд?

1 Ответ

3 голосов
/ 02 декабря 2011

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

Чтобы ответить на ваш список:

  1. bundle install устанавливает все новые / обновленные гемы и зависимости - но если они уже установлены, ничего не делается
  2. bundle update пробежит по вашим установленным гемам и получит самые новые, разрешенные версии, как определено в вашем Gemfile
  3. gem install my_gem.gem обходит компоновщик и устанавливает гем на системном уровне (т. Е. Вне пакета кода вашего приложения)
  4. gem update my_gem.gem обходит компоновщик и обновляет гем на системном уровне (т. Е. Вне пакета кода вашего приложения)

Итак, один набор команд устанавливает (если еще не установлен), один набор команд обновляет до последних версий уже установленные гемы, один набор команд выполняет эти действия только в рамках вашего приложения (код вашего приложения) bundle), и один набор команд выполняет эти действия на системном уровне.

Git не имеет отношения к вашему вопросу здесь.

...