2013-03-29 3 views
221

Ich benutze RVM, die Ruby Version Manager, um eine Ruby-Version und eine Reihe von Edelsteinen für jedes meiner Rails-Projekte anzugeben.Verwenden Sie rvmrc oder ruby-version file, um ein Projekt-Gemset mit RVM zu setzen?

Ich habe eine .rvmrc Datei, um automatisch eine Ruby-Version und einen Edelstein zu wählen, wenn ich cd in ein Projektverzeichnis.

Nach RVM Installation 1.19.0, erhalte ich eine Nachricht

Sie .rvmrc verwenden, es vertrauensvoll erfordert, ist es langsamer und es ist nicht kompatibel mit anderen Ruby-Manager können Sie auf wechseln .ruby-version mit rvm rvmrc to [.]ruby-version oder ignorieren diese Warnungen mit rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc, .rvmrc wird auch weiterhin die Standard-Projektdatei in RVM 1 und RVM 2, um die Warnung zu ignorieren für alle Dateien rvm rvmrc warning ignore all.rvmrcs laufen.

Sollte ich weiterhin meine .rvmrc Datei verwenden oder sollte ich zu einer .ruby-version Datei wechseln? Was ist optimal? Was sind die Auswirkungen?

Antwort

362

Wenn Ihre .rvmrc Datei benutzerdefinierten Shell-Code enthält, verwenden Sie weiterhin .rvmrc, da Sie damit beliebigen Shell-Code einschließen können.

Wenn Sie nur Ruby-Versionen wechseln möchten, verwenden Sie .ruby-version, das von anderen Switches der Ruby-Version unterstützt wird, z. B. rbenv oder chruby. Diese Datei muss auch nicht vertrauenswürdig sein, da sie nur der Name einer Ruby-Version ist und in keiner Weise ausgeführt wird.

Wenn Sie .ruby-version verwenden, können Sie @gemset in die Datei einfügen, dies ist jedoch nicht mit anderen Switchen kompatibel. Um die Kompatibilität zu gewährleisten, verwenden Sie den Namen des Gemsets in einer separaten Datei .ruby-gemset, die von anderen Tools ignoriert wird (funktioniert nur zusammen mit .ruby-version).

Zum Beispiel, wenn Sie eine einfache .rvmrc:

rvm use [email protected] 

Es kann zu .ruby-version umgewandelt werden:

1.9.3 

Und .ruby-gemset:

my-app 

Seien Sie sicher, dass die entfernen .rvmrc Datei, wie es vorausgeht e über alle anderen Projektkonfigurationsdateien:

rm .rvmrc 
+9

Beachten Sie, dass nicht alle Anwendungen noch unterstützen die neuere .ruby- Versions- und .ruby-gemset-Dateien, jedoch nur .rvmrc. (Insbesondere RubyMine). Dies würde natürlich Ihre Entscheidung beeinflussen, ob Sie zu dem neuen System wechseln möchten. Ich hatte dies bereits in einer Antwort darauf hingewiesen, da ich viel Zeit gebraucht habe, um das aufzuspüren. Allerdings wurde meine Antwort aus irgendeinem Grund entfernt. – giorgio

+2

Gibt es einen Link zu irgendeiner "offiziellen" Dokumentation? Ich habe angefangen zu sehen, wie das auf der RVM-Seite funktioniert, fand aber nur eine vage Erwähnung als die neue rvmrc-Datei, aber nichts darüber, wie das funktionieren sollte. – eirc

+2

Es ist nicht vollständig dokumentiert, aber hier ist, was wir bereits haben https://rvm.io/workflow/projects/#ruby-versions – mpapis

74

Schnelle und einfache Möglichkeit von .rvmrc zu wechseln .ruby-Version + .ruby-gemset

rvm rvmrc to .ruby-version 
+10

das ist, was die rvm-Nachricht vorschlägt ... – mpapis

+1

Stimmt, aber es setzt [] um die. aus irgendeinem Grund, den ich nicht herausgefunden habe. (Vielleicht ist das eine Konversation, mit der ich nicht vertraut bin.) Ich habe die Nachricht gegoogelt und diese Antwort gefunden, weil die ungeschickte Formulierung und die [] mich unsicher gemacht haben, was ich eigentlich tun soll. – zem

+1

@zem Die [] in '[.] Ruby-version' zeigt an, dass [der Punkt optional ist] (https://github.com/wayneeseguin/rvm/issues/1708#issuecomment-22437586); die eckigen Klammern sind eine übliche Konvention, um die Optionalität anzugeben (im Allgemeinen nicht in Ruby). Sie könnten also eine Datei namens "Ruby-Version" ohne den Punkt verwenden, die ebenfalls verwendet wird. Dies kann hilfreich sein, wenn Sie die Datei auf Systemen anzeigen möchten, die standardmäßig "Dot-Dateien" ausblenden. Ich stimme zu, dass es nicht so klar ist. –

2

Sie beide versuchen. Gehen Sie zum Stamm Ihres Projekts, erstellen Sie eine .rvmrc Datei (touch .rvmrc), dann bearbeiten Sie rvm use [email protected]_gemset (Ihre Ruby-Version und Gemset-Name). Nachdem diese Datei speichern, können Sie diesen Befehl eingeben:

cd ../your_project (du bist in your_project Verzeichnis), und das Skript in .rvmrc wird ausgeführt.

Die RVM empfehlen, Ruby-Version zu verwenden. Sie können diesen Befehl ausführen von .rvmrc wechseln .ruby-Version

rvm rvmrc to .ruby-version

Was sie tut, ist erstellen 2 Dateien benennen .ruby-Version und .ruby-gemset und diese Zeile hinzufügen

ruby-2.0.0-p451 in .ruby-Version

your_gemset in .ruby-gemset

Y ou können versuchen, es manuell zu tun, wenn Sie :) wollen

0

installieren rvm mit:

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

installieren verschiedene Versionen Rubin:

rvm install 1.8.7 
rvm install 1.9.2 

Schalter t o spezifische Rubinversion. Zum Beispiel 1.8.7:

rvm use 1.8.7 

Um eine Gemse zu erstellen:

rvm gemset create project_gemset 

Und ein gemset zu verwenden:

rvm gemset use project_gemset