Я должен зарегистрироваться.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
.... думаю, тебе решать.