Utiliser un fichier rvmrc ou ruby-version pour définir un jeu de gemmes de projet avec RVM?

230

J'utilise RVM, Ruby Version Manager pour spécifier une version Ruby et un ensemble de gemmes pour chacun de mes projets Rails.

J'ai un .rvmrcfichier pour sélectionner automatiquement une version Ruby et un jeu de gemmes chaque fois que je suis cddans un répertoire de projet.

Après avoir installé RVM 1.19.0, je reçois un message

Vous utilisez .rvmrc, il nécessite de faire confiance, il est plus lent et il n'est pas compatible avec d'autres gestionnaires de rubis, vous pouvez basculer vers l' .ruby-versionutilisation rvm rvmrc to [.]ruby-versionou ignorer ces avertissements avec rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc, .rvmrccontinuera d'être le fichier de projet par défaut dans RVM 1 et RVM 2, pour ignorer le avertissement pour tous les fichiers exécutés rvm rvmrc warning ignore all.rvmrcs.

Dois-je continuer à utiliser mon .rvmrcfichier ou dois-je passer à un .ruby-versionfichier? Quel est optimal? Quelles en sont les ramifications?

Daniel Kehoe
la source

Réponses:

372

Si votre .rvmrcfichier contient du code shell personnalisé, continuez à l'utiliser .rvmrccar il vous permet d'inclure n'importe quel code shell.

Si votre seul objectif est de changer de version Ruby, utilisez celle .ruby-versionqui est prise en charge par d'autres commutateurs de version Ruby tels que rbenv ou chruby . Ce fichier ne nécessite pas non plus de confiance car il s'agit simplement du nom d'une version Ruby et ne sera en aucun cas exécuté.

Si vous utilisez, .ruby-versionvous pouvez inclure @gemsetdans le fichier, mais cela ne sera pas compatible avec d'autres commutateurs. Pour conserver la compatibilité, utilisez le nom du jeu de gemmes dans un fichier séparé .ruby-gemsetqui est ignoré par d'autres outils (il ne fonctionne qu'avec .ruby-version) .

Par exemple, si vous avez un simple .rvmrc:

rvm use 1.9.3@my-app

Il peut être transformé en .ruby-version:

1.9.3

Et .ruby-gemset:

my-app

Assurez-vous de supprimer le .rvmrcfichier car il a priorité sur tout autre fichier de configuration de projet:

rm .rvmrc
mpapis
la source
9
Notez que toutes les applications ne prennent pas encore en charge les nouveaux fichiers .ruby-version et .ruby-gemset mais seulement .rvmrc. (RubyMine en particulier). Bien sûr, cela affecterait votre choix de passer au nouveau système. Je l'avais déjà souligné dans une réponse car il m'a fallu beaucoup de temps pour le retrouver. Cependant ma réponse a été supprimée pour une raison quelconque.
giorgio
2
Y a-t-il un lien vers une documentation "officielle" à ce sujet? J'ai commencé à voir comment cela fonctionne sur le site RVM, mais je viens de trouver une vague mention à ce sujet en tant que nouveau fichier rvmrc, mais rien à savoir comment cela devrait fonctionner.
eirc
2
Ce n'est pas entièrement documenté, mais voici ce que nous avons déjà rvm.io/workflow/projects/#ruby-versions
mpapis
4
Placez simplement 1.9.3-p194 dans .ruby-version ne fonctionne pas pour moi. Référez-vous au document ci-dessus, rvm --create --ruby-version use 1.9.3-p194faites le travail, et le contenu à l'intérieur est en faitruby-1.9.3-p194
Jinzhao Huo
2
Les versions actuelles de RubyMine prennent en charge le style de version .ruby. Peut confirmer avec 6.3.2
BeepDog
76

Un moyen rapide et facile de passer de .rvmrc à .ruby-version + .ruby-gemset

rvm rvmrc to .ruby-version
Sam Backus
la source
1
C'est vrai, mais cela met [] autour du. pour une raison que je n'ai pas compris. (Peut-être que c'est une convention que je ne connais pas.) J'ai en fait recherché le message sur Google et trouvé cette réponse parce que la formulation maladroite et le [] ne m'ont pas permis de savoir quoi exécuter réellement.
zem
2
@zem Le [] dans [.]ruby-versionindique que le point est facultatif ; les crochets sont une convention courante pour indiquer le caractère optionnel (en général, pas en ruby.) Vous pouvez donc utiliser un fichier appelé "ruby-version", sans le point, et qui serait également utilisé. Cela peut être utile si vous voulez plus de visibilité du fichier sur les systèmes qui cachent par défaut les "fichiers à points". Je suis d'accord, cependant, ce n'est pas si clair.
Matt Gibson
Il ditCould not load .rvmrc
Abdullah
4

Si vous souhaitez créer le fichier .ruby-versionet .ruby-gemsetd'une manière courte, vous pouvez utiliser les commandes comme ceci:

rvm use 2.1.1@nancy --create

rvm --create --ruby-version 2.1.1@nancy
user2627938
la source
2

Vous pouvez essayer les deux. Allez à la racine de votre projet, créez un fichier .rvmrc ( touch .rvmrc), puis éditez rvm use 2.0.0-p451@your_gemset(votre version ruby ​​et le nom du jeu de gemmes). Après avoir enregistré ce fichier, vous pouvez taper cette commande:

cd ../your_project(vous êtes dans le répertoire your_project ) et le script dans .rvmrc s'exécutera.

Le RVM recommande d'utiliser la version rubis. Vous pouvez exécuter cette commande pour passer de .rvmrc à .ruby-version

rvm rvmrc to .ruby-version

Il crée 2 fichiers nommés .ruby-version et .ruby-gemset et ajoute cette ligne

ruby-2.0.0-p451 en version .ruby

your_gemset dans .ruby-gemset

Vous pouvez essayer de le faire manuellement si vous le souhaitez :)

duykhoa
la source
0

Installez rvm en utilisant:

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

Installez différentes versions de rubis:

rvm install 1.8.7
rvm install 1.9.2

Passez à une version rubis spécifique. Par exemple, 1.8.7:

rvm use 1.8.7

Pour créer une gemme:

rvm gemset create project_gemset

Et pour utiliser un jeu de gemmes:

rvm gemset use project_gemset
Narasu Londave
la source