В чем разница между рейковыми рейками: freeze: гемами и рейковыми гемами: распаковать? - PullRequest
7 голосов
/ 28 января 2010

Насколько я знаю, и rails:freeze:gems, и рейк gems:unpack помещают драгоценные камни в /vendor. rails:freeze:gems помещает их в /vendor/rails, gems:unpack помещает их в /vendor/gems. Однако мне кажется, что дело в том же. В обоих случаях цель состоит в том, чтобы исправить драгоценные камни и их версии, какими они были во время разработки. Есть ли другая разница? Мне кажется, сейчас это дублирование ..

1 Ответ

7 голосов
/ 28 января 2010

Насколько я понимаю, 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...