Я должен зарегистрироваться.ruby-gemset ' and / or `.рубиновая версия?

Я только что обновил RVM, и вместо старого .rvmrc, он автоматически создал .ruby-gemset и .ruby-version.

у меня всегда была .rvmrc файлы с содержимым как rvm use --create default@project_name. Однако,.ruby-version содержит конкретную версию Ruby, которую я запускаю, а не default. Я не решаюсь проверить это.

кроме того, я слышал, как кто-то сказал в подкасте, что нельзя проверить в .ruby-gemset потому что другие могут иметь свои собственные предпочтения о том, как имя gemsets.

когда я должен или не должен регистрироваться .ruby-gemset и/или .ruby-version?

в частности:

  • какие компромиссы?
  • как тип проекта влияет на решение (например, приложения против gems)?
  • если они должны быть проверены, как тип проекта, влияет на то, что должно идти в этих файлах?

цитаты от создателей таких инструментов, как rvm, rbenv и т. д. будут оценены в ответе.

3 ответов


для стандартных проектов

Регистрация .ruby-version Если ваш проект зависит от Рубина, как ruby-2.0.0. Регистрации!--2--> только если ваша команда согласилась на это. Добавить .rvmrc to .gitignore так что любой может переопределить .ruby-* настройки файлов с .rvmrc.

драгоценные камни

Регистрация .ruby-version с ruby-1.8.7 только если ваш проект по-прежнему нацелен на ruby 1.8.7, в противном случае проверьте его, только если ваш драгоценный камень требует этого. Не регистрируйтесь .ruby-gemset.


проверки в .rvmrc, .ruby-version или .ruby-gemset?

для:

  • ваш проект имеет разные ветви (скажем, проект RubyGems, поддерживающий Ruby 1.8, 1.9 и 2.0 версий). Лучше проверить этот файл, чтобы вашим разработчикам не приходилось редактировать эти файлы при переключении ветвей. То же самое не относится к приложению, хотя, где вы в основном будете работать только над одним Ruby версия.

  • тот же случай, что и выше, но, скажем, вы используете сервер CI (скажем, TeamCity/Jenkins/...) который автоматически запускается rake spec за каждую регистрацию заезда. Вы не хотите создавать отдельные конвейеры сборки для каждой ветви, просто ради того, чтобы иметь отдельный rvm use ... для каждой ветви. Вы просто хотите, чтобы версия Ruby выбиралась автоматически в зависимости от ветви

  • Вы имеете плотный контроль над окружающей средой и всем разработчики. Вам либо не нужно, либо диктуют, что они используют один и тот же Рубин и gemset

  • вы используете Phusion Passenger или Capistrano, которые автоматически читаются .rvmrc файлы и выбирает правильный ruby для развертывания / хостинга

Также см. RVM лучшие практики

против:

  • вы можете скомпилировать свой собственный Ruby в RVM с некоторыми экспериментальными патчами и дать ему пользовательское имя.

    например rvm install 1.9.3 --patch railsexpress,falcon --name ruby-1.9.3-perf

    в приведенном выше примере я установил Ruby 1.9.3 с некоторыми большими патчами ускорения (кстати, они потрясающие), но вместо того, чтобы называть это 1.9.3, я называю это своим именем. Я бы сказал rvm use ruby-1.9.3-perf всякий раз, когда мне это нужно. В этом случае, если проект имеет свой .ruby-version, тогда это испортит мою среду. В моем проекте эти исправления являются стандартными,и мы активно рекомендуем их. Но как разработчики называют результат скомпилированный Ruby до них

  • аналогично, люди используют разные наборы драгоценных камней. Некоторые не используют gemsets на всех. Некоторые используют один и тот же набор драгоценных камней с разными (но похожими) проектами ruby. Учитывая это, снова один .ruby-gemset также не работает для всех

  • ваш проект имеет неясную версию ruby, которая просто говорит 1.9.3. Ваши разработчики впервые установили последнюю версию Ruby 1.9.3-p329. Но позже они просто обновляют RVM / Rbenv (поскольку они работа над другими проектами). Их .rvmrc или .ruby-version просто ломается, так как последняя версия Ruby, зарегистрированная в RVM / Rbenv, просто изменилась с ruby-1.9.3-p329 to .ruby-1.9.3-p362, и ruby-1.9.3-p362 не установлено. Этот сценарий, как правило, происходит часто.

пока вы указываете правильное полное имя для своей версии Ruby (включая уровень исправления), вы должны быть в порядке. Допустим, ваш проект .ruby-version говорит ruby-1.9.3-p329. Его легко скомпилировать свой собственный Ruby со всеми этими патчами, и все же просто пользовательское имя it ruby-1.9.3-329 просто так, чтобы конфигурационные файлы забирали этот ruby вместо стандартного ruby.


Я бы включил .ruby-version - вы и все, кто работает над проектом, вместе с вашими серверами, должны использовать ту же версию Ruby.

.ruby-gemset.... думаю, тебе решать.