Насколько я понимаю, gem: unpack распакует любой сторонний гем, необходимый вашему приложению, в вендор / гемы.
rails: freeze: gems замораживает только те самоцветы, которые имеют отношение к самим rails, поэтому оно замораживает ваше приложение для конкретной версии rails. Таким образом, другой каталог / vendor / rails.
Чтобы прокомментировать немного больше:
Эта строка есть в config / environment.rb
# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION
Таким образом, по умолчанию rails проверит, существует ли каталог vendor / rails, и использует версии этих драгоценных камней, если он существует. Если нет, вы должны указать, какую версию рельсов он будет использовать, и рельсы попытаются извлечь драгоценные камни из вашей локальной системы.
Таким образом, единственное различие между двумя командами, которые я вижу, состоит в том, что rails:freeze:gems
сбрасывает ТОЛЬКО файлы рельсов в vendor / rails, что именно там, где рельсы хотят, чтобы они были.
Причина, по которой вы хотите использовать gem:unpack
, заключается в том, чтобы выкидывать сторонние гемы, от которых зависит ваше приложение, поэтому везде, где ваше приложение запускается, эти гемы не нужно устанавливать локально.
Вы можете думать о rails:freeze:gems
как о ярлыке, который просто делает gem:unpack
только камней рельсов в ожидаемые каталогами рельсы (/ vendor / rails), так что вам не нужно делать это вручную. Но да, за кадром я ожидаю rails:freeze:gems
, вероятно, использует gem:unpack