Ich habe rbenv gemäß den Github-Anweisungen installiert. Ich verwende OSX, habe dies jedoch auf einer Ubuntu 12.04-VM versucht und die gleichen Ergebnisse erzielt. Folgendes wird in meinem Terminal angezeigt, 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 jemand eine Idee, warum rbenv die Ruby-Version nicht so wechselt, wie es denkt? Außerdem befindet sich im lokalen Verzeichnis keine .rbenv-Datei, die dazu führen würde, dass die Ruby-Version standardmäßig 1.8.7 ist
rbenv local
rbenv: no local version configured for this directory
Antworten:
Überprüfen Sie, ob PATH $ HOME / .rbenv / shims und $ HOME / .rbenv / bin enthält
Überprüfen Sie auch, ob in Ihrem ~ / .bash_profile Folgendes enthalten ist, wenn Sie bash verwenden, oder ~ / .zshenv, wenn Sie zsh verwenden
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.
Stellen Sie schließlich sicher, dass Ihr
$HOME
Ordner keine.ruby-version
Datei enthält, die Sie möglicherweise versehentlich erstellt haben, wenn Sie dies$ rbenv local <ruby-version>
in Ihrem$HOME
Ordner getan hätten . Doing$ rbenv global <ruby-version>' modifies the
$ HOME / .rbenv / Versionfile, and the existence of a
.ruby-Versionfile in the
$ HOMEfolder would override the version set by
$ HOME / .rbenv / version`.Aus den Dokumenten:
quelle
exec $SHELL -l
(unteres L)export RBENV_ROOT="$HOME/.rbenv" if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
ziemlich gut :) Überprüfen Sie auch nach der rbenv-Deklaration, ob PATH-Inits vorhanden sind.Ich habe dies behoben, indem ich meinem ~ / .bash_profile Folgendes hinzugefügt habe:
Dies ist unter https://github.com/sstephenson/rbenv dokumentiert .
Soweit ich weiß, gibt es kein ~ / .rbenv / bin-Verzeichnis, das in dem Beitrag von @rodowi erwähnt wurde.
quelle
export PATH="$HOME/.rbenv/bin:$PATH
funktionieren (da es für mich fehlgeschlagen ist)?~/.rbenv/bin/
wenn Sie über Homebrew oder Linuxbrew installiert haben. Und Sie sollten den Shims-Pfad nicht selbst einrichten müssen, ebensorbenv init
wie dies (und mehr) für Sie .Dies mag eine alte Frage sein, aber Google hat mich hierher geführt und aus Gründen der Nachwelt gedacht, ich würde sie teilen.
Mein Problem blieb nach vielen der oben empfohlenen Lösungen bestehen. Wie das OP habe ich rbenv und dann eine Ruby-Version installiert, aber mein Laptop hat standardmäßig das System verwendet. Was ich übersehen hatte, war das, als ich rannte:
IOW, es war immer noch Standard auf System. Ein schnelles
wechselte es auf die neue Version.
quelle
Der erste Schritt besteht darin herauszufinden, welcher Rubin genannt wird:
which ruby
Ihr System sagt:
/usr/bin/ruby
Dies ist NICHT die von rbenv verwendete Unterlegscheibe, die (unter MacOS) folgendermaßen aussehen sollte:
/Users/<username>/.rbenv/shims/ruby
Das Shim ist eigentlich ein Skript, das sich wie eine Umleitung zu der von Ihnen festgelegten Ruby-Version verhält.
rbenv global 1.9.3 rbenv local --unset rbenv shell --unset
Ich empfehle, dass Sie zur Fehlerbehebung die projektspezifische "lokale" Version und die Shell-spezifische "Shell" -Version deaktivieren und einfach mit der "globalen" Versionseinstellung testen, die in einer Nur-Text-Datei in ~ / .rbenv / verion welche festgelegt ist wird in Ihrem Fall nur die Versionsnummer "1.9.3" sein. Sie können "ls -laG" im Stammverzeichnis Ihres Projektordners (nicht im Home-Ordner) ausführen, um sicherzustellen, dass dort keine ".ruby-version" -Datei mehr vorhanden ist.
Sie können "rbenv-Versionen" verwenden, um zu identifizieren, welche Version rbenv verwendet werden soll (und den Speicherort und den Namen der Datei, die dies festlegt).
rbenv versions
Nichts davon: bis Sie den Pfad richtig eingestellt haben.
Verwenden Sie diese Option, um sicherzustellen, dass Ihr * MacOS Ihnen gehorcht:
eval "$(rbenv init -)"
Gefolgt von:
which ruby
Um sicherzustellen, dass es so aussieht: /Users//.rbenv/shims/ruby
Fügen Sie dann die Zeile zu Ihrem Profil hinzu, damit sie jedes Mal ausgeführt wird, wenn Sie ein neues Terminalfenster öffnen:
~/.bash_profile eval "$(rbenv init -)"
Es gibt andere Möglichkeiten, den Pfad zu ändern. Sie können ihn auch ersetzen, anstatt den rbenv-Init auszuführen.
HINWEIS: Installieren Sie Rails neu mit:
gem install rails
Wenn Sie versucht haben, Ruby on Rails auszuführen, muss dies alles zuerst funktionieren und dann das Rails-Juwel erneut installieren. Bei einer früheren Installation von Rails wird ein fest codierter Pfad zum falschen Rubin verwendet, und einige andere Dinge befinden sich am falschen Ort. Installieren Sie den Edelstein also erneut.
PS Wenn Ihr MacOS Ihnen nicht gehorcht (* oben erwähnt), müssen Sie möglicherweise einen anderen Weg finden, um Ihren Pfad zu ändern, aber das ist wahrscheinlich kein Problem, da "Macs funktionieren einfach";)
quelle
Ich habe gerade das gleiche Problem gefunden. Ich habe rbenv (via homebrew) deinstalliert und neu installiert. Ich habe auch hinzugefügt
in ~ / .bash_profile, als ich rbenv neu installiert habe. Funktioniert jetzt perfekt.
quelle
In meinem Fall hat das Ändern
~/.zshenv
nicht funktioniert. Ich musste die Änderungen im Inneren vornehmen~/.zshrc
.Ich habe gerade hinzugefügt:
oben
~/.zshrc
gestartet, die Shell neu gestartet und abgemeldet.Überprüfen Sie, ob es funktioniert hat:
quelle
Führen Sie diesen Befehl aus
Fügen Sie rbenv zu bash hinzu, damit es jedes Mal geladen wird, wenn Sie ein Terminal öffnen
Dies wird Ihr Problem Referenz lösen
quelle
Wenn Sie bash verwenden , gehen Sie zu
und fügen Sie die folgende Zeile hinzu (falls noch nicht vorhanden)
Wenn Sie Zsh verwenden, gehen Sie zu
und fügen Sie am Ende der .zshrc-Datei dieselbe Codezeile hinzu.
Starten Sie dann einfach Ihr Terminal neu und es sollte jetzt in Ordnung sein.
quelle
rbenv help shell
"Legt eine Shell-spezifische Ruby-Version fest, indem die Umgebungsvariable 'RBENV_VERSION' in Ihrer Shell festgelegt wird. Diese Version überschreibt lokale anwendungsspezifische Versionen und die globale Version. Sollte eine Zeichenfolge sein, die einer Ruby-Version entspricht, die rbenv bekannt ist. Das System der speziellen Versionszeichenfolge ' 'verwendet Ihr Standardsystem Ruby. Führen Sie rbenv-Versionen aus' für eine Liste der verfügbaren Ruby-Versionen. "
Vorausgesetzt, rbenv wurde korrekt installiert, entspricht ruby -v
rbenv shell 1.9.3-p125
quelle
Was mir der einfachste Weg , zu verwenden
rbenv
mit zusammenzsh
ist das Hinzufügenrbenv
zu Plugins Abschnitt in.zshrc
Config. In meinem Fall sieht es ähnlich aus wie:Danach gibt es keine Probleme beim Installieren, Wechseln, Verwenden von Ruby-Versionen mit Hilfe von
rbenv
.Denken Sie daran, Ihre Terminalsitzung nach vorgenommenen Änderungen neu zu starten.
quelle
Ich hatte das gleiche Problem, wurde aber von Homebrew verursacht:
Irgendwie hatte ich Ruby auch über Homebrew installiert, und der Homebrew-Pfad war dem rbenv-Pfad in meinem voraus
$PATH
. Laufen hatbrew uninstall ruby
es für mich behoben.quelle
Lauf:
Nachdem ich das ausgeführt habe, als ich meine lokale rbenv-Version eingestellt habe:
dann stimmten meine
ruby -v
und meinerbenv local
Versionen überein.Hinweis: Möglicherweise möchten Sie auch das Verzeichnis, in dem Sie sich befinden, beenden und dann wieder in dieses Verzeichnis zurückkehren. Ich habe festgestellt, dass dies für mich erforderlich war, damit die Dinge funktionieren.
quelle
Ich bin auf das gleiche Problem gekommen. Dies wurde behoben, indem der Befehl "rbenv global" mit "sudo" ausgeführt wurde. Ich denke, es war ein Erlaubnisproblem.
Update: Ich habe endlich die Lösung gefunden. Auf meinem Mac befand sich dieselbe Datei "version" unter "/usr/local/Cellar/rbenv/0.3.0/". Ich denke, es wurde gelegentlich versehentlich erstellt. Sie sollten es entfernen.
quelle
Als ich diese Symptome hatte, stellte sich heraus, dass die Installation für die neue Ruby-Version, zu der ich wechseln wollte, zur Hälfte fehlgeschlagen war, ohne dass ich es bemerkte. Das Update bestand darin, es zu löschen und neu zu installieren.
(Dies bedeutete, dass Ruby 1.9.3 zwar in der Liste der verfügbaren Versionen von rbenv angezeigt wurde, jedoch keine ausführbare Datei in dem Pfad hatte, in dem rbenv dies angenommen hatte. Da rbenv versucht, Ihre Ruby-Version zu ändern, indem nur ein Speicherort vorangestellt wird Ihr Pfad, wenn sich an dem vorangestellten Speicherort tatsächlich nichts befindet, sucht Ihr Betriebssystem gerne weiter nach Ihrem Standardpfad und findet Ihre Systemversion, in meinem Fall wie in der Frage 1.8.7.)
quelle
für Benutzer von Fischschalen
quelle
Dies ist mir direkt nach der Neuinstallation passiert
rbenv
. Anscheinend hatte ich eine.ruby-version
Datei in meinem Home-Verzeichnis, in der eine Version angegeben war, die nicht mehr existierte. Nachdem ich die Datei gelöscht hatte, funktionierte alles.quelle
Stellen Sie sicher, dass die letzte Zeile von Ihnen
.bash_profile
lautet:quelle
Die akzeptierte Antwort schlägt vor, Folgendes hinzuzufügen:
Dies funktioniert nicht unter Mac OS X, auf das das OP verweist. Wenn Sie rbenv via installieren
brew install rbenv
, was wirklich die einzige Installationsmethode unter Mac OS X ist, dacurl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash
FAIL unter OSX fehlschlägt, wird die ausführbare Datei rbenv installiert in:Selbst unter OSX verbleibt das rbenv-Stammverzeichnis jedoch im Verzeichnis $ HOME:
Was bedeutet das? Wenn Sie Rubine installieren, werden diese im angegebenen Home-Verzeichnis unter .rbenv installiert:
Jetzt hat die Brew-Installation einige Arbeiten ausgeführt, die Sie unter Linux manuell ausführen müssten. Unter Linux müssten Sie beispielsweise Ruby-Build manuell als Plugin installieren:
Dies ist bereits mit der Homebrew-Installation geschehen. Es gibt einen wichtigen Schritt, der bei der Homebrew-Installation wie bei der Linux-Installation ausgeführt werden muss. Sie müssen die Rbenv-Shims zu Ihrem Pfad hinzufügen. Um dies zu tun, müssen Sie beim Start Ihrer Shell den folgenden Befehl auswerten (der wiederum die rbenv-Shims am Anfang Ihres $ PATH hinzufügt):
Wenn Sie jetzt laufen
echo $PATH
, sehen Sie die Rbenv-Unterlegscheiben:Überprüfen Sie nun Ihre Ruby-Version und sie wird den installierten Rbenv-Ruby widerspiegeln:
quelle
Seltsamerweise hat die rbenv-Version die .rbenv-Datei nicht festgelegt. Überprüfen Sie mit: ls -ltra ->, ob ein rbenv geschrieben wurde
quelle
Sie könnten versuchen, chruby zu verwenden ? chruby verlässt sich nicht auf Beilagen, sondern es nur ändert
PATH
,GEM_HOME
,GEM_PATH
.quelle
Ich habe vergessen, rvm vor der Installation von rbenv zu löschen. Ich habe rvm gelöscht und rbenv neu installiert, aber das System verwendete immer noch nicht die Version von Ruby, die von rbenv als global festgelegt wurde. Ich habe versucht, Terminal zu schließen, aber es hat nur funktioniert, nachdem ich den gesamten Computer neu gestartet habe.
quelle