Какой смысл замораживать вашу версию / гемы Rails? - PullRequest
10 голосов
/ 28 апреля 2009

Что это значит?

В инструкции к проекту сказано "заморозить драгоценные камни Rails". Это отличается от замораживания версии Rails?

Что замерзает?

Ответы [ 4 ]

21 голосов
/ 28 апреля 2009

Если один из авторов используемого вами драгоценного камня представит новую версию драгоценного камня, существует вероятность, что в новой версии будут внесены обратно несовместимые изменения, которые повредят ваш код.

Замораживание драгоценного камня помещает его в папку vendor вашего приложения, и оно не будет автоматически обновляться само по себе. Rails будет использовать эту версию гема.

Это позволяет вам обновить драгоценный камень в вашей системе для других приложений, в то время как ваше единственное приложение использует версию драгоценного камня, с которой вы всегда работали, и, следовательно, является стабильной.

Это относится и к самому драгоценному камню rails, так как более новые версии rails могут в конечном итоге привести к поломке чего-либо в вашем приложении, замораживание предотвратит обновление всей системы (и, опять же, позволит вам обновить другие приложения на вашем машина, выходя из приложения, вы замораживаете рельсы под этим номером версии.

4 голосов
/ 28 апреля 2009

Я думаю, что Филк ударил гвоздь по голове своими комментариями.

Когда у вас есть приложение, работающее в производственной среде, на которую рассчитывают люди, у вас должен быть механизм для «замораживания» среды. Обновление направляющих может привести к тому, что ваше приложение перестанет работать правильно.

Это может быть что-то незначительное или что-то, что мешает вашим пользователям выполнять свою работу.

Просто Google «Обновление рельсового драгоценного камня ломает мое приложение», чтобы увидеть некоторые проблемы.

Игорь Минар имеет хорошую запись в блоге о том, почему вы должны заморозить как гемы, так и Rails, а также обсуждает, как теперь вы можете устанавливать конкретные зависимости версий гемов в Rails.

Вы можете заморозить Rails, вы можете заморозить гемы, вы можете установить зависимость от конкретной версии гема в вашем файле environment.rb.

Причина, по которой вы это сделаете, заключается в том, чтобы ваше приложение не сломалось при выпуске обновленной версии гема или Rails. Замораживание позволяет вам протестировать обновление на отдельной машине, убедиться, что оно проходит все ваши автоматизированные тестовые наборы, позволяет вашим пользователям проверять обновленное приложение по его темпам, а затем (после хорошего резервного копирования) вы применяете обновление к гему или Rails.

2 голосов
/ 29 апреля 2009

Замораживание - это здорово. Как говорили другие, оно уменьшает вашу зависимость от внешней среды. Это особенно важно, если вы пользуетесь виртуальным хостингом или иным образом не полностью контролируете место развертывания.

Однако это может быть проблематично для таких программ, как rake и capistrano, которые не работают в вашей среде Rails. У них есть свой собственный путь загрузки драгоценных камней, на который вы можете повлиять, но вы должны об этом знать. Кроме того, гем с собственными расширениями (libxml, hpricot, ...) не может быть заморожен, потому что специфичные для ОС биты все еще должны жить во внешней ОС.

Также, вероятно, это не проблема сейчас, но кое-что, о чем следует знать - Rails 3 перейдет к новому методу управления плагинами, гемами и каталогом поставщиков в целом. На данный момент все это беспорядок.

1 голос
/ 28 апреля 2009

Вот учебник , посвященный заморозке приложения rails.

...