448 Stimmen

rbenv ändert nicht die Ruby-Version

Ich installierte rbenv gemäß der Github-Anleitung. Ich bin OSX ausgeführt, aber ich habe versucht, diese auf einem Ubuntu 12.04 VM und erhielt die gleichen Ergebnisse. Das Folgende ist, was ich in meinem Terminal erhalte, wenn ich versuche, Ruby-Versionen zu ändern:

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

Hat irgendjemand eine Idee, warum rbenv die Ruby-Version nicht umschaltet, wie es glaubt, dass es ist? Es gibt auch keine .rbenv-Datei im lokalen Verzeichnis, die dazu führen würde, dass die Ruby-Version standardmäßig auf 1.8.7 gesetzt wird.

rbenv local
rbenv: no local version configured for this directory

864voto

defvol Punkte 12612

Überprüfen Sie, ob PATH Folgendes enthält $HOME/.rbenv/shims et $HOME/.rbenv/bin

$ env | grep PATH

Vergewissern Sie sich auch, dass Sie Folgendes in Ihrem ~/.bash_profile (bei Verwendung der Bash) bzw. ~/.zshenv (bei Verwendung der Zsh) haben

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

HINWEIS: Stellen Sie sicher, dass dies die letzte Einstellung in Ihrem ~/.bash_profile ist. Ich bin auf ein Problem gestoßen, bei dem ich ein Programm installiert habe, das mein .bash_profile aktualisiert und PATH zurückgesetzt hat.

Vergewissern Sie sich schließlich, dass Ihr $HOME Ordner hat keinen .ruby-version Datei, die Sie möglicherweise versehentlich erstellt haben, wenn Sie die $ rbenv local <ruby-version> in Ihrem $HOME Ordner. Unter $ rbenv global <ruby-version> $HOME/.rbenv/version Datei und das Vorhandensein einer .ruby-version Datei in der $HOME würde die Version überschreiben, die durch $HOME/.rbenv/version .

Aus den Unterlagen:

Auswahl der Ruby-Version Wenn Sie ein Shim ausführen, bestimmt rbenv die zu verwendende Ruby-Version, indem es sie aus den folgenden Quellen in dieser Reihenfolge liest:

Die Umgebungsvariable RBENV_VERSION, falls angegeben. Sie können den Shell-Befehl rbenv verwenden, um diese Umgebungsvariable in Ihrer aktuellen Shell-Sitzung zu setzen.

Die erste .ruby-version-Datei, die gefunden wird, indem das Verzeichnis des Skripts, das Sie ausführen, und jedes seiner übergeordneten Verzeichnisse durchsucht wird, bis das Wurzelverzeichnis Ihres Dateisystems erreicht ist.

Die erste .ruby-version-Datei, die beim Durchsuchen des aktuellen Arbeitsverzeichnisses und aller übergeordneten Verzeichnisse gefunden wird, bis sie das Wurzelverzeichnis Ihres Dateisystems erreicht. Sie können die Datei .ruby-version im aktuellen Arbeitsverzeichnis mit dem Befehl rbenv local ändern.

Die globale Datei ~/.rbenv/version. Sie können diese Datei mit dem Befehl rbenv global ändern. Wenn die globale Versionsdatei nicht vorhanden ist, geht rbenv davon aus, dass Sie den "System"-Ruby verwenden möchten, d. h. die Version, die ausgeführt werden würde, wenn rbenv nicht in Ihrem Pfad wäre.

198voto

mjmdavis Punkte 2143

Ich habe das Problem behoben, indem ich folgendes zu meiner ~/.bash_profile :

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

Dies ist dokumentiert unter https://github.com/sstephenson/rbenv .

Soweit ich das beurteilen kann, gibt es ist nicht ~/.rbenv/bin Verzeichnis, das in dem Beitrag von @rodowi erwähnt wurde.

96voto

alphadogg Punkte 12400

Diese Frage ist vielleicht schon alt, aber Google hat mich hierher geführt, und der Nachwelt zuliebe dachte ich, ich würde sie mit Ihnen teilen.

Mein Problem blieb auch nach vielen der oben empfohlenen Lösungen bestehen. Wie der OP habe ich rbenv und dann eine Ruby-Version installiert, aber mein Laptop war auf System eingestellt. Was ich übersehen hatte, war, dass, wenn ich lief:

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

D.h., es war immer noch auf das System eingestellt. Eine schnelle

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

auf die neue Version umgestellt.

86voto

Sky Notify Punkte 799

Der erste Schritt besteht darin, herauszufinden, welcher Ruby aufgerufen wird:

$ which ruby

Ihr System sagt:

/usr/bin/ruby

Dies ist NICHT das von rbenv verwendete Shim, das (unter MacOS) wie folgt aussehen sollte:

/Users/<username>/.rbenv/shims/ruby

Das Shim ist eigentlich ein Skript, das wie eine Umleitung auf die von Ihnen eingestellte Ruby-Version wirkt.

Zur Fehlersuche empfehle ich, die projektspezifische "lokale" Version und die shellspezifische "Shell"-Version zu deaktivieren und nur mit der "globalen" Versionseinstellung zu testen, die in einer einfachen Textdatei in ~/.rbenv/version festgelegt ist, die in Ihrem Fall einfach die Versionsnummer "1.9.3" ist.

$ rbenv global 1.9.3
$ rbenv local --unset
$ rbenv shell --unset

Das können Sie tun ls -laG im Wurzelverzeichnis Ihres Projektordners (nicht im Home-Ordner), um sicherzustellen, dass dort keine ".ruby-version"-Datei mehr vorhanden ist.

Sie können verwenden rbenv versions um festzustellen, welche Version rbenv verwenden soll (und den Ort und den Namen der Datei, die dies festlegt):

$ rbenv versions

Das alles spielt keine Rolle, solange Sie den Pfad nicht richtig einstellen.

Verwenden Sie dies, um sicherzustellen, dass Ihr *MacOS Ihnen gehorchen wird:

$ rbenv init -

Gefolgt von:

$ which ruby

Um sicherzustellen, dass es auch so aussieht:

/Users/<username>/.rbenv/shims/ruby

Führen Sie dann diesen Befehl aus, um die Zeile zu Ihrem Profil hinzuzufügen, damit sie jedes Mal ausgeführt wird, wenn Sie ein neues Terminalfenster öffnen:

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

Es gibt noch andere Möglichkeiten, den Pfad zu ändern. Sie können jede davon verwenden, anstatt rbenv init auszuführen.

HINWEIS: Schienen wieder einbauen mit:

$ gem install rails

Wenn Sie versucht haben, Ruby on Rails auszuführen, müssen Sie das alles erst einmal hinbekommen und dann den Rails-Gem erneut installieren. Eine frühere Rails-Installation verwendet einen fest programmierten Pfad zum falschen Ruby und einige andere Dinge sind an der falschen Stelle, also installieren Sie das Gem einfach erneut.

P. S. Wenn Ihr MacOS Ihnen nicht gehorchen will (*oben erwähnt), müssen Sie vielleicht einen anderen Weg finden, um Ihren Pfad zu ändern, aber das ist wahrscheinlich kein Problem, denn "Macs funktionieren einfach" ;)

76voto

Promise Preston Punkte 15324

Ich hatte dieses Problem beim Einrichten von Ruby mit rbenv auf MacBook Pro Catalina OS et MacBook Pro Big Sur .

So habe ich es repariert:

Führen Sie zunächst den folgenden Befehl aus, um rbenv zu initialisieren:

rbenv init

So erhalten Sie eine Anleitung, was zu tun ist. Im Wesentlichen müssen Sie die ~/.zshrc und fügen Sie der Datei Folgendes hinzu eval "$(rbenv init -)" . Sie können dies erreichen, indem Sie den folgenden Befehl ausführen:

echo 'eval "$(rbenv init -)"' >> ~/.zshrc

Führen Sie dann den folgenden Befehl aus, um Ihre Ruby-Version einzustellen:

rbenv local <your-desired-ruby-version>

In meinem Fall war die gewünschte Ruby-Version 3.0.1, und so war es auch:

rbenv local 3.0.1

Wenn Sie fertig sind, beenden Sie Ihr Terminal mit Befehl + Q und öffnen Sie dann ein neues Terminal, wenn Sie den Befehl ausführen:

ruby -v 
rbenv versions

Sie werden sehen, dass die von Ihnen gewünschte Ruby-Version bereits für Sie eingerichtet worden ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X