351 votes

rbenv ne change pas la version de ruby

J'ai installé rbenv en suivant les instructions de github. Je suis sous OSX mais j'ai essayé sur une VM Ubuntu 12.04 et j'ai obtenu les mêmes résultats. Ce qui suit est ce que j'obtiens dans mon terminal lorsque j'essaie de changer les versions de ruby :

rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125

rbenv global
1.9.3-p0

rbenv rehash

ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]

which ruby
/usr/bin/ruby

Quelqu'un a-t-il une idée de la raison pour laquelle rbenv ne change pas la version de ruby comme il le pense ? Il n'y a pas non plus de fichier .rbenv dans le répertoire local qui pourrait causer la version de ruby par défaut à 1.8.7.

rbenv local
rbenv: no local version configured for this directory

0 votes

Avez-vous bien mis l'init dans votre bashrc correctement ? À quoi ressemble votre $PATH ?

0 votes

Aucune de ces commandes ne change la version de Ruby que rbenv utilise, mais il semble qu'il n'utilise pas votre Ruby par défaut.

0 votes

@d11wtq avait raison. Ce n'était pas dans mon ~/.bash_profile correctement apparemment.

688voto

rodowi Points 2242

Vérifiez que PATH contient $HOME/.rbenv/shims et $HOME/.rbenv/bin

$ env | grep PATH

Vérifiez également que vous avez les éléments suivants dans votre ~/.bash_profile si vous utilisez bash ou ~/.zshenv si vous utilisez zsh

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

NOTE : Assurez-vous que c'est le dernier paramètre de votre ~/.bash_profile . J'ai rencontré un problème lorsque j'ai installé un programme qui a mis à jour mon .bash_profile et réinitialisé PATH.

Enfin, assurez-vous que votre $HOME ne possède pas de .ruby-version que vous auriez pu créer par accident si vous aviez fait $ rbenv local <ruby-version> dans votre $HOME dossier. Faire $ rbenv global <ruby-version> modifie le $HOME/.rbenv/version et l'existence d'un fichier .ruby-version dans le fichier $HOME remplacerait la version définie par $HOME/.rbenv/version .

Dans la documentation :

Choix de la version de Ruby Lorsque vous exécutez un shim, rbenv détermine la version de Ruby à utiliser en la lisant dans les sources suivantes, dans cet ordre :

La variable d'environnement RBENV_VERSION, si elle est spécifiée. Vous pouvez utiliser la commande shell rbenv pour définir cette variable d'environnement dans votre session shell actuelle.

Le premier fichier .ruby-version trouvé en recherchant le répertoire du script que vous exécutez et chacun de ses répertoires parents jusqu'à atteindre la Racine de votre système de fichiers.

Le premier fichier .ruby-version trouvé en cherchant dans le répertoire de travail actuel et dans chacun de ses répertoires parents jusqu'à atteindre la racine de votre système de fichiers. Vous pouvez modifier le fichier .ruby-version dans le répertoire de travail actuel avec la commande rbenv local.

Le fichier global ~/.rbenv/version. Vous pouvez modifier ce fichier en utilisant la commande rbenv global. Si le fichier global de version n'est pas présent, rbenv suppose que vous voulez utiliser la version "système" de Ruby - c'est-à-dire la version qui serait exécutée si rbenv n'était pas dans votre chemin.

43 votes

Sous OSX, n'oubliez pas de vous déconnecter de votre session OSX, puis de vous reconnecter pour que les modifications apportées à votre profil bash prennent effet.

20 votes

Ou bien exec $SHELL -l (L inférieur)

5 votes

Où dois-je ajouter "$HOME/.rbenv/shims" et "$HOME/.rbenv/bin" ?

139voto

pingbat Points 500

J'ai résolu ce problème en ajoutant ce qui suit à mon ~/.bash_profile :

#PATH for rbenv
export PATH="$HOME/.rbenv/shims:$PATH"

C'est ce qui est documenté à https://github.com/sstephenson/rbenv .

D'après ce que je peux dire, il y a no es ~/.rbenv/bin qui a été mentionné dans le billet de @rodowi.

0 votes

+1 pour le lien. +1 pour la réponse qui contredit une réponse mieux votée. Ce qui soulève une autre question - et si quelqu'un peut intervenir - comment peut-on export PATH="$HOME/.rbenv/bin:$PATH fonctionne (comme cela a échoué pour moi) ?

4 votes

Il n'y aura pas de ~/.rbenv/bin/ si vous avez installé via homebrew ou linuxbrew. Et vous ne devriez pas avoir à configurer le chemin des cales vous-même, car rbenv init fait tout cela (et plus encore) pour vous .

1 votes

Cela a réglé mon problème.

94voto

alphadogg Points 6020

C'est peut-être une vieille question, mais Google m'a conduit ici et, pour la postérité, j'ai pensé que je devais la partager.

Mon problème a persisté après plusieurs des solutions recommandées ci-dessus. Comme le PO, j'ai installé rbenv puis une version de ruby, mais mon ordinateur portable est passé au système par défaut. Ce que j'avais négligé, c'est que lorsque j'ai exécuté :

[~/.rbenv] $ rbenv versions
* system (set by /Users/alphadogg/.rbenv/version)
  2.0.0-p247

C'est à dire qu'il était toujours par défaut sur le système. Un rapide

[~/.rbenv] $ rbenv local 2.0.0-p247

l'a fait passer à la nouvelle version.

9 votes

Oui - c'est drôle que les guides d'installation de rbenv ne mentionnent pas du tout l'exécution de la commande locale. Beaucoup de blogs vous rappellent d'exécuter rbenv global mais pas local. Excellente réponse.

0 votes

Même problème. Même solution. (Il faudra peut-être envisager de soumettre un PR pour signaler que la version globale de Ruby est remplacée par une ~/.ruby-version...)

0 votes

J'ai dû me débarrasser du système en le supprimant avec YUM dans Centos 7, ce n'est qu'après que j'ai pu voir la bonne version sélectionnée dans rbenv

28voto

Neal Points 1594

Je viens de trouver le même problème. Ce que j'ai fait, c'est désinstaller rbenv (via homebrew) et le réinstaller. J'ai également ajouté

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

dans ~/.bash_profile quand j'ai réinstallé rbenv. Cela fonctionne parfaitement maintenant.

1 votes

Note à l'intention de ceux qui ont rencontré le même problème que moi : Pour certaines raisons, que rbenv fonctionnait avant donc cette ligne n'a jamais été exécutée. Je l'ai corrigé en utilisant directement eval "$(rbenv init -)".

0 votes

Belle petite déclaration d'évaluation pour ce cas d'utilisation !

3voto

Vincent Points 43

J'ai rencontré le même problème. Je l'ai résolu en exécutant le rbenv global avec sudo . Je pense que c'était un problème de permission.

mise à jour : J'ai enfin trouvé la solution. Il y avait une même "version" de fichier sur mon mac, qui est sous /usr/local/Cellar/rbenv/0.3.0/ . Je pense qu'il a été créé par erreur à l'occasion. Vous devriez le supprimer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X