Verwenden Sie eine rvmrc- oder Ruby-Versionsdatei, um ein Projekt-Gemset mit RVM festzulegen?

230

Ich verwende RVM, den Ruby-Versionsmanager , um eine Ruby-Version und eine Reihe von Edelsteinen für jedes meiner Rails-Projekte anzugeben.

Ich habe eine .rvmrcDatei, um automatisch eine Ruby-Version und ein Gemset auszuwählen, wenn ich cdin ein Projektverzeichnis gehe .

Nach der Installation von RVM 1.19.0 wird eine Meldung angezeigt

Sie verwenden .rvmrc, es erfordert Vertrauen, es ist langsamer und es ist nicht kompatibel mit anderen Ruby-Managern, Sie können zur .ruby-versionVerwendung rvm rvmrc to [.]ruby-versionoder Ignorieren dieser Warnungen wechseln rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc, .rvmrcwird weiterhin die Standardprojektdatei in RVM 1 und RVM 2 sein, um das zu ignorieren Warnung für alle ausgeführten Dateien rvm rvmrc warning ignore all.rvmrcs.

Soll ich meine .rvmrcDatei weiter verwenden oder zu einer .ruby-versionDatei wechseln ? Welches ist optimal? Was sind die Konsequenzen?

Daniel Kehoe
quelle

Antworten:

372

Wenn Ihre .rvmrcDatei benutzerdefinierten Shell-Code enthält, verwenden Sie ihn weiter, .rvmrcda Sie damit beliebigen Shell-Code einfügen können.

Wenn Sie nur Ruby-Versionen wechseln möchten , verwenden Sie .ruby-versiondiese, die von anderen Ruby-Versionswechseln wie rbenv oder chruby unterstützt werden . Diese Datei erfordert auch kein Vertrauen, da es sich nur um den Namen einer Ruby-Version handelt und in keiner Weise ausgeführt wird.

Wenn Sie verwenden .ruby-version, können Sie @gemsetin die Datei aufnehmen, dies ist jedoch nicht mit anderen Switchern kompatibel. Um die Kompatibilität aufrechtzuerhalten, verwenden Sie den Gemset-Namen in einer separaten Datei, .ruby-gemsetdie von anderen Tools ignoriert wird (funktioniert nur zusammen mit .ruby-version) .

Zum Beispiel, wenn Sie eine einfache haben .rvmrc:

rvm use 1.9.3@my-app

Es kann umgewandelt werden in .ruby-version:

1.9.3

Und .ruby-gemset:

my-app

Stellen Sie sicher, dass Sie die .rvmrcDatei entfernen , da sie Vorrang vor allen anderen Projektkonfigurationsdateien hat:

rm .rvmrc
mpapis
quelle
9
Beachten Sie, dass noch nicht alle Anwendungen die neueren .ruby-Versions- und .ruby-gemset-Dateien unterstützen, sondern nur .rvmrc. (Insbesondere RubyMine). Dies würde sich natürlich auf Ihre Entscheidung auswirken, ob Sie auf das neue System umsteigen möchten. Ich hatte bereits in einer Antwort darauf hingewiesen, da ich viel Zeit brauchte, um dies aufzuspüren. Meine Antwort wurde jedoch aus irgendeinem Grund entfernt.
Giorgio
2
Gibt es einen Link zu einer "offiziellen" Dokumentation dazu? Ich fing an zu untersuchen, wie dies auf der RVM-Site funktioniert, fand aber nur eine vage Erwähnung als neue rvmrc-Datei, aber nichts darüber, wie dies funktionieren sollte.
Eirc
2
Es ist nicht vollständig dokumentiert, aber hier ist, was wir bereits haben rvm.io/workflow/projects/#ruby-versions
mpapis
4
Einfach 1.9.3-p194 in die .ruby-Version einfügen funktioniert bei mir nicht. Beziehen Sie sich auf das obige Dokument, rvm --create --ruby-version use 1.9.3-p194machen Sie die Arbeit, und der Inhalt darin ist tatsächlichruby-1.9.3-p194
Jinzhao Huo
2
Aktuelle Versionen von RubyMine unterstützen den .ruby-Versionsstil. Kann mit
6.3.2
76

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

rvm rvmrc to .ruby-version
Sam Backus
quelle
1
Stimmt, aber es setzt [] um die. aus irgendeinem Grund, den ich nicht herausgefunden habe. (Vielleicht ist dies eine Konvention, mit der ich nicht vertraut bin.) Ich habe die Nachricht tatsächlich gegoogelt und diese Antwort gefunden, weil die unangenehme Formulierung und das [] mich unsicher gemacht haben, was ich tatsächlich ausführen soll.
zem
2
@zem Das [] in [.]ruby-versionzeigt an, dass der Punkt optional ist . Die eckigen Klammern sind eine übliche Konvention, um die Optionalität anzuzeigen (im Allgemeinen nicht in Ruby). Sie können also eine Datei namens "Ruby-Version" ohne den Punkt verwenden, und diese wird auch verwendet. Dies kann nützlich sein, wenn Sie eine bessere Sichtbarkeit der Datei auf Systemen wünschen, auf denen "Punktdateien" standardmäßig ausgeblendet sind. Ich bin damit einverstanden, dass es nicht so klar ist.
Matt Gibson
Es heißtCould not load .rvmrc
Abdullah
4

Wenn Sie die Datei .ruby-versionund .ruby-gemsetin kurzer Zeit erstellen möchten, können Sie die folgenden Befehle verwenden:

rvm use 2.1.1@nancy --create

rvm --create --ruby-version 2.1.1@nancy
user2627938
quelle
2

Sie können beide versuchen. Gehen Sie zum Stammverzeichnis Ihres Projekts, erstellen Sie eine .rvmrc- Datei ( touch .rvmrc) und bearbeiten Sie sie rvm use 2.0.0-p451@your_gemset(Ihre Ruby-Version und Ihren Gemset-Namen). Nach dem Speichern dieser Datei können Sie folgenden Befehl eingeben:

cd ../your_project(Sie befinden sich in Ihrem_Projektverzeichnis ), und das Skript in .rvmrc wird ausgeführt.

Die RVM empfiehlt die Verwendung der Ruby-Version. Sie können diesen Befehl ausführen, um von .rvmrc zu .ruby-Version zu wechseln

rvm rvmrc to .ruby-version

Sie erstellen zwei Dateien mit den Namen .ruby-version und .ruby-gemset und fügen diese Zeile hinzu

ruby-2.0.0-p451 in .ruby-version

your_gemset in .ruby-gemset

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

duykhoa
quelle
0

Installieren Sie rvm mit:

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

Installieren Sie verschiedene Ruby-Versionen:

rvm install 1.8.7
rvm install 1.9.2

Wechseln Sie zu einer bestimmten Ruby-Version. Zum Beispiel 1.8.7:

rvm use 1.8.7

So erstellen Sie ein Juwel:

rvm gemset create project_gemset

Und um ein Gemset zu verwenden:

rvm gemset use project_gemset
Narasu Londave
quelle