Используйте файл rvmrc или ruby-version, чтобы установить gemset проекта с помощью RVM?

230

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

У меня есть .rvmrcфайл для автоматического выбора версии Ruby и gemset при каждом входе cdв каталог проекта.

После установки RVM 1.19.0 я получаю сообщение

Вы используете .rvmrc, оно требует доверия, оно медленнее и несовместимо с другими менеджерами ruby, вы можете переключиться на .ruby-versionиспользование rvm rvmrc to [.]ruby-versionили игнорировать эти предупреждения rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc, .rvmrcпродолжая оставаться файлом проекта по умолчанию в RVM 1 и RVM 2, чтобы игнорировать предупреждение для всех файлов запуска rvm rvmrc warning ignore all.rvmrcs.

Должен ли я продолжать использовать свой .rvmrcфайл или я должен переключиться на .ruby-versionфайл? Какой оптимален? Каковы последствия?

Даниэль Кехо
источник

Ответы:

372

Если ваш .rvmrcфайл содержит пользовательский код оболочки, продолжайте использовать, .rvmrcпоскольку он позволяет вам включать любой код оболочки.

Если ваша единственная цель - переключать версии Ruby, используйте те, .ruby-versionкоторые поддерживаются другими переключателями версий Ruby, такими как rbenv или chruby . Этот файл также не требует доверия, так как это просто название версии Ruby и не будет выполняться каким-либо образом.

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

Например, если у вас есть простой .rvmrc:

rvm use 1.9.3@my-app

Это может быть преобразовано в .ruby-version:

1.9.3

И .ruby-gemset:

my-app

Обязательно удалите .rvmrcфайл, так как он имеет приоритет над любыми другими файлами конфигурации проекта:

rm .rvmrc
mpapis
источник
9
Обратите внимание, что не все приложения пока поддерживают более новые файлы .ruby-version и .ruby-gemset, но только .rvmrc. (В частности, RubyMine). Это, конечно, повлияет на ваш выбор перехода на новую систему. Я уже указал на это в ответе, так как мне потребовалось много времени, чтобы выследить это. Однако мой ответ почему-то был удален ..
Джорджио
2
Есть ли ссылка на какую-либо "официальную" документацию по этому поводу? Я начал изучать, как это работает на сайте RVM, но обнаружил смутное упоминание о нем как новый файл rvmrc, но ничего не сказал о том, как это должно работать.
eirc
2
Это не полностью задокументировано, но вот что у нас уже есть rvm.io/workflow/projects/#ruby-versions
mpapis
4
Просто поместить 1.9.3-p194 в .ruby-версию у меня не работает. Обратитесь к документу выше, rvm --create --ruby-version use 1.9.3-p194сделайте работу, и содержание внутри на самом делеruby-1.9.3-p194
Jinzhao Huo
2
Текущие версии RubyMine поддерживают стиль .ruby-version. Можно подтвердить с помощью 6.3.2
BeepDog
76

Быстрый и простой способ переключения с .rvmrc на .ruby-version + .ruby-gemset

rvm rvmrc to .ruby-version
Сэм Бэкус
источник
1
Правда, но это ставит [] вокруг. по какой-то причине, что я не понял. (может быть, это соглашение, с которым я незнаком.) Я на самом деле гуглил сообщение и нашел этот ответ, потому что неуклюжая фраза и [] заставили меня не знать, что на самом деле бежать.
Зем
2
@zem [] в [.]ruby-versionозначает, что точка является необязательной ; Квадратные скобки являются общим соглашением для обозначения необязательности (в общем, не в ruby.) Таким образом, вы можете использовать файл с именем «ruby-version», без точки, и это также будет использоваться. Это может быть полезно, если вы хотите лучше видеть файл в системах, которые по умолчанию скрывают «точечные файлы». Я согласен, что это не так ясно, хотя.
Мэтт Гибсон
Could not load .rvmrc
Абдулла
4

Если вы хотите создать .ruby-versionи .ruby-gemsetфайл в коротком пути вы можете использовать такие команды , как это:

rvm use 2.1.1@nancy --create

rvm --create --ruby-version 2.1.1@nancy
user2627938
источник
2

Вы можете попробовать оба. Перейдите в корень вашего проекта, создайте файл .rvmrc ( touch .rvmrc), затем отредактируйте rvm use 2.0.0-p451@your_gemset (вашу версию ruby ​​и имя набора гемов). После сохранения этого файла вы можете ввести следующую команду:

cd ../your_project(вы в вашем_проекте ), и скрипт в .rvmrc будет выполнен.

В RVM рекомендуем использовать ruby-версию. Вы можете запустить эту команду для переключения с .rvmrc на .ruby-версию

rvm rvmrc to .ruby-version

Для этого создайте 2 файла с именем .ruby-version и .ruby-gemset и добавьте эту строку

ruby-2.0.0-p451 в .ruby-версии

your_gemset в .ruby-gemset

Вы можете попробовать сделать это вручную, если хотите :)

duykhoa
источник
0

Установите rvm используя:

\curl -sSL https://get.rvm.io | bash -s stable --rails

Установите разные версии ruby:

rvm install 1.8.7
rvm install 1.9.2

Переключиться на конкретную версию ruby. Например, 1.8.7:

rvm use 1.8.7

Чтобы создать драгоценный камень:

rvm gemset create project_gemset

И использовать gemset:

rvm gemset use project_gemset
Нарасу лондаве
источник