Warum sollten Sie RVM verwenden?

Sobald Sie von der Entwicklung von Ruby abhängig sind, sollten Sie mit verschiedenen Ruby-Versionen experimentieren. Auf den ersten Blick könnte man denken, dass es etwas schwierig ist. RVM macht dies zu einer absoluten Brise. In diesem Tutorial werde ich Sie mit RVM vertraut machen.


0 - Was ist RVM??

Ohne RVM ist es ziemlich schwierig, mehr als eine Version von Ruby auf Ihrem Computer zu haben.

RVM steht für Ruby deVIronment MAnager Hier ist die Idee. Als Ruby-Entwickler kann es vorkommen, dass Sie mehrere Versionen von Ruby benötigen. Sie haben beispielsweise mit Ruby 1.8.6 begonnen, möchten jetzt aber mit 1.9.2 experimentieren. Normalerweise arbeiten Sie mit dem 1.9-Zweig, möchten jedoch zu einem Open-Source-Projekt beitragen, das sich noch im 1.8-Zweig befindet.

Ohne RVM ist es ziemlich schwierig, mehr als eine Version von Ruby auf Ihrem Computer zu haben. Oder was ist, wenn Sie einen der alternativen Ruby-Interpreter wie Rubinius oder JRuby ausprobieren möchten? Wie können Sie eine Runde drehen, ohne Ihre treue MRI-Installation aufzugeben? Hier setzt RVM an. Es handelt sich im Grunde um ein Framework, das mehrere Installationen von Ruby für Sie abwickelt und es Ihnen leicht macht, zwischen ihnen zu wechseln.

Heute gelten zwei Vorbehalte:

  1. Sie sollten mit der Befehlszeile ziemlich vertraut sein.

  2. Sie sollten sich auf einem Unix-System befinden. Dies bedeutet, dass Sie wahrscheinlich entweder Mac OS X oder eine Linux-Version verwenden. So sehr ich auch wünsche, dass RVM unter Windows verfügbar war, ist es nicht. Wenn Sie unter Windows arbeiten, können Sie Pik versuchen. Ich verstehe, dass es ähnlich ist, aber ich hatte noch keine Chance, es zu benutzen.


1 - Wie installiere ich RVM??

Die Installation von RVM ist etwas umständlich. Zuerst müssen Sie Git installiert haben. Dann laden Sie ein Skript herunter und führen es aus, um die Installation durchzuführen. Die RVM-Site empfiehlt, dies folgendermaßen zu tun:

bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

Selbst wenn Sie mit der Befehlszeile ziemlich vertraut sind, werden Sie wahrscheinlich anhalten, wenn Sie dies sehen. Es ist einfacher, es rückwärts zu lesen: Wir verwenden es locken das Skript herunterladen, auf das die URL verweist; das -s Befehl lässt locken wissen, dass Sie das Skript im Hintergrund herunterladen möchten (ohne Ausgabe). Dies ist das Skript, das RVM installiert.

Um dieses Skript automatisch auszuführen, übergeben wir das Skript an den Befehl auf der linken Seite des Operators. In unserem Fall ist das so bash. Sie kennen vielleicht bash als Shell oder das Terminal, das Sie wahrscheinlich gerade ausführen. Dadurch wird das Skript in einer Bash-Shell (die innerhalb der Bash-Shell in Ihrem Terminal ausgeführt wird) ausgeführt..

Der obige Befehl lädt das Skript herunter und führt es aus, wodurch RVM installiert wird.

Aber wir sind noch nicht ganz fertig. Um sicherzustellen, dass RVM ordnungsgemäß ausgeführt wird, müssen Sie das folgende Snippet zu Ihrem hinzufügen ~ / .bash_profile oder ~ / .bashrc Datei.

[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Dadurch wird RVM in eine Shell-Sitzung geladen.

Wie Sie dem Kommentar entnehmen können, lädt dies RVM in eine Shell-Sitzung. Insbesondere, wenn Sie neugierig sind, lädt dies die rvm Befehl als Shell-Funktion (wie die, die Sie möglicherweise zu Ihrem hinzufügen ~ / .bash_profile Datei) statt als Binärdatei (ein Programm, das Sie in der Shell ausführen, wie ls oder Rubin).

Denken Sie jedoch daran, dass RVM eine schnell wachsende Bibliothek ist. Möglicherweise ändert sich auch die Installationsmethode. Die aktuellsten Installationsmethoden für RVM finden Sie in der Dokumentation.

Nun, da wir RVM installiert haben, verwenden wir es tatsächlich!


2 - Wie verwende ich RVM??

Die zwei großen Funktionen, die RVM bietet, sind Rubine und Gemsets. Schauen wir uns die einzelnen Elemente nacheinander an und betrachten Sie dann einige andere Anpassungen.

Rubine

Rubine sind die primäre (wenn auch nicht exklusive) Absicht von RVM. Erinnern Sie sich, für was RVM steht? Ruby deVIronment MAnager Also, lass uns ein paar Rubine installieren!

Wenn Sie Ruby schon länger verwenden, werden Sie wissen, dass es mehrere verschiedene Ruby-Implementierungen zur Auswahl gibt. Sie können sehen, welche in RVM verfügbar sind, indem Sie diesen Befehl verwenden:

rvm liste bekannt

Sehen Sie sich diese Syntax übrigens an; Die meisten RVM-Befehle, die Sie verwenden, sind wie folgt: rvm, eine Kategorie und einen Befehl für diese Kategorie. Vorhersehbar werden hier alle Ruby-Implementierungen (und Versionen von Implementierungen) aufgelistet, die Sie installieren können.

Lass uns also eine Version auswählen und installieren. Es gibt jedoch etwas, das wir zuerst tun sollten. Es ist möglich, dass einige Abhängigkeiten für Ihre Plattform erforderlich sind, bevor Sie den Ruby Ihrer Wahl installieren können. Unglaublich, RVM hat auch hier den Rücken: Führen Sie den Befehl aus rvm notizen um zu sehen, welche Abhängigkeiten Sie installieren sollten. Es werden die verschiedenen Rubine aufgelistet, die Sie installieren können, und was Sie zuerst für jeden von ihnen installieren sollten.

Normalerweise verwende ich ausschließlich Ruby 1.9.2, also installieren wir das. Verwenden Sie den Befehl, um einen Ruby zu installieren rvm installieren, gefolgt von der gewünschten Implementierung und Version, wie mit aufgeführt rvm liste bekannt.

rvm install ruby-1.9.2-p180

Sie können beliebig viele Versionen von Ruby installieren, indem Sie diesen Befehl verwenden.

Dieser Befehl kann einige Minuten dauern, aber sobald er fertig ist, haben Sie die ausgewählte Version von Ruby auf Ihrem Computer installiert.

Mit diesem Befehl können Sie beliebig viele Ruby-Versionen installieren. Aber jetzt, wo Sie mehr als eine Version installiert haben, wie können Sie sie verwenden oder zwischen ihnen wechseln? Und was ist mit der Ruby-Implementierung, die wahrscheinlich mit Ihrem Computer geliefert wurde??

Es ist ziemlich einfach. Verwenden Sie diesen Befehl, um einen bestimmten Ruby zu verwenden:

rvm verwenden  # im abstrakten rvm verwenden Sie 1.9.2-p180

In diesem Fall müssen Sie das jedes Mal eingeben, wenn Sie ein Terminal öffnen. Andernfalls verwenden Sie standardmäßig den integrierten Ruby. Um dies zu vermeiden, fügen Sie die Flagge hinzu --Standard. Auf diese Weise können Sie jederzeit zu Ihrem Standard-Ruby wechseln. Wenn Sie zu einem anderen Ruby gewechselt haben, tippen Sie einfach rvm default zurückschalten.

Um sicherzustellen, dass Sie die richtige Version verwenden, geben Sie Folgendes ein Rubin -v; Sie sollten die gerade ausgewählte Version von Ruby sehen.

Wenn Sie ein paar verschiedene Rubine verwenden, sollten Sie den Überblick behalten, was Sie haben. deshalb hast du die rvm liste Befehl. Hier ist mein aktuelles Inventar:

 Rubin-1.8.7-p302 [x86_64] Rubin-1.8.7-p334 [x86_64] Rubin-1.9.2-p0 [x86_64] Rubin-1.9.2-p180 [x86_64]

Wie Sie sich vorstellen können, die => Neben dem letzten bedeutet dies, dass ich gerade verwende.

Wenn Sie einen Ruby entfernen möchten, ist es genauso einfach. Benutzen rvm entfernen alles loszuwerden, was mit diesem Ruby zu tun hat. Wenn Sie der Meinung sind, dass Sie diesen Ruby in Zukunft erneut installieren möchten, verwenden Sie einfach Rvm deinstallieren; Der Quellcode und andere Teile bleiben dabei erhalten.

Gemsets

Während mehrere Rubine cool sind, sind Edelsteine ​​- zumindest für mich - da, wo sie sind. Im Grunde handelt es sich bei einem Gemset um eine Reihe von Edelsteinen, die Sie ausschließlich (oder fast ausschließlich) verwenden. Dies ist in zwei Fällen großartig:

  1. Sie möchten verschiedene Versionen eines Edelsteins verwenden, möglicherweise mit verschiedenen Ruby-Versionen.
  2. Sie möchten eine Sandbox? Ihre Edelsteine, also sind nur bestimmte Edelsteine ​​zu einer bestimmten Zeit verfügbar.

Mal sehen, wie das funktioniert.

rvm gemset erstellen 

Natürlich können Sie Ihrem Gemset jederzeit einen Namen geben. Um alle Ihre Edelsteine ​​zu sehen, verwenden Sie rvm gemset list. Wenn Sie dies jetzt tun, sehen Sie zwei Gemsets (vorausgesetzt, Sie haben gerade den obigen Befehl ausgeführt). Eins wird sein (oder wie auch immer du es nennst) und global. Das global gemset ist etwas besonderes; wie man sich wohl denken kann, sind die edelsteine ​​im global Gemset sind verfügbar, egal welches Gemset Sie verwenden.

Sie können den Vorteil sehen: Es gibt einige Edelsteine, die Sie immer wollen, egal was Sie tun. In Wirklichkeit gibt es ein anderes Gemset, das Standard-Gemset, das nicht aufgeführt ist und keinen Namen hat. Wenn Sie kein bestimmtes Gemset verwenden, stehen Ihnen die Edelsteine ​​im voreingestellten Gemset (und natürlich dem globalen Gemset) zur Verfügung.

Sie können Ihre Gemsets anzeigen, indem Sie den Befehl verwenden rvm gemset list; wie vorher, => markiert das derzeit verwendete Gemset. Wenn kein Gemset markiert ist, verwenden Sie das Standard-Gemset.

Nichts einfacher als das Wechseln von Gemsets:

rvm gemset verwenden 

Sobald Sie ein bestimmtes Gemset verwenden, können Sie mit Gems installieren gem install gem-name. Hier ist ein wichtiger Hinweis. Nicht verwenden Sudo bei der Installation; Dabei wird völlig ignoriert, dass RVM die Show hier ausführt und auf dem gesamten System außerhalb der RVM-Umgebung installiert. Also tu es einfach gem install gem-name.

Wie bereits erwähnt, werden die Standard- und globalen Gemsets erstellt, wenn Sie einen neuen Ruby installieren. Wenn Sie bestimmte Gems standardmäßig installiert haben möchten, wenn Sie einen neuen Ruby installieren, fügen Sie sie der entsprechenden Gems-Datei hinzu. Im ~ / .rvm / gemsets /, Sie finden zwei Dateien: default.gems und global.gems. Listen Sie die Edelsteine ​​einfach nach Namen auf, eine von jeder Zeile. Diese Edelsteine ​​werden in dem entsprechenden Gemset installiert, wenn Sie einen neuen Ruby installieren.

Diese Gems-Dateien sind auch eine gute Möglichkeit, eine Liste von Edelsteinen zu speichern. Sie können ein Gemset mit exportieren rvm gemset export; Dadurch wird eine Liste der Edelsteine ​​im aktuellen Gemset als gespeichert default.gems in dem Ordner, in dem Sie sich gerade befinden. Wenn Sie dieser Datei einen bestimmten Namen geben möchten, fügen Sie sie am Ende dieses Befehls hinzu. Anschließend können Sie die Liste der Edelsteine ​​in einem anderen Ruby oder sogar auf einem anderen Computer importieren (denken Sie in die Quellcodeverwaltung ein) rvm gemset importiert den Namen der Gem-List-Datei.

Noch etwas zu Edelsteinen: Sie können sie in Ihrem verwenden rvm verwenden Befehle. Mach das:

 rvm verwenden @

.RMVRC-Dateien

.Rvmrc-Dateien sind wirklich cool. Betrachten Sie sie als Einstellungsbereich von RVM. Sie können eine .rvmrc-Datei an drei verschiedenen Stellen haben: / etc / rvmrc legt Optionen für das gesamte System fest; ~ / .rvmrc legt Optionen für den aktuellen Benutzer fest; ein .rvmrc Datei in einem bestimmten Verzeichnis passt Dinge für dieses Projekt an.

Der Globale und Benutzer .rvmrc Dateien sind hauptsächlich Kompilierungsoptionen für die Installation neuer Rubies. Allerdings ist das projektspezifisch .rvmrc Dateien sind die lustigen.

So gehen Sie vor: Wenn Sie ein neues Projekt beginnen, erstellen Sie ein neues Projekt .rvmrc Datei in diesem Verzeichnis. Nehmen wir an, Sie haben eine Schienen-App, für die Ruby 1.8.6 erforderlich ist. Sie haben Ruby 1.9.2 als Standard, und Sie möchten nicht daran denken, Rubies zu wechseln, wenn Sie an diesem Projekt arbeiten. Also gib diesen Befehl ein:

 rvm --rvmrc - 1.8.6-p334 erstellen

Dies wird stark kommentiert .rmvrc Datei, die Ihre Ruby-Umgebung nahtlos ändert, wenn Sie in dieses Verzeichnis wechseln. Lesen Sie die Kommentare dort durch, um zu sehen, was genau zum Wechseln der Umgebung getan wird und was Sie damit tun können .rmvrc Dateien.

Mit Edelsteinen wird es noch besser. Ich verwende Ruby 1.9.2 für alle meine Projekte, aber ich möchte für jedes Projekt ein anderes Gemset haben. Wenn ich also ein Projekt habe, heißt es superproj, Ich kann dies tun:

 rvm --rvmrc --create 1.9.2@superproj

Fügen Sie einfach ein At-Zeichen hinter dem Ruby-Namen ein und folgen Sie diesem mit Ihrem Gemset-Namen. Wie erwartet, lädt dies nahtlos die richtigen Edelsteine ​​für dieses Projekt. Wenn dieses Gemset noch nicht erstellt wurde, übernimmt RVM dies auch für Sie.

Sofortige Anpassung

Möglicherweise möchten Sie herausfinden, welchen Rubin und Gemset Sie gerade verwenden. Es gibt zwei Möglichkeiten, dies zu tun: Erstens können Sie den Befehl einfach verwenden rvm info. Hier erfahren Sie, welchen Rubin und welches Gemset Sie verwenden (unter vielen anderen Dingen).

Wenn Sie etwas dauerhafteres wünschen, können Sie den Namen direkt in Ihre Eingabeaufforderung eingeben. Fügen Sie dazu eine Zeile hinzu ~ / .bash_profile. Das Beispiel der RVM-Dokumentation lautet wie folgt:

 PS1 = "\ $ (~ / .rvm / bin / rvm-prompt) $ PS1"

Was dies tut, ist das Skript auszuführen ~ / .rvm / bin / rvm-Eingabeaufforderung und fügen Sie die Ausgabe in Ihre Eingabeaufforderung ein (dann wird die aktuelle Eingabeaufforderung am Ende angehängt). Dadurch werden der Ruby-Name und der Name des Gemset am Anfang Ihrer Eingabeaufforderung angezeigt. Noch besser: Wenn Sie mit der Anpassung Ihrer Eingabeaufforderung vertraut sind, finden Sie in der Dokumentation weitere Möglichkeiten zum Anpassen dieser Ausgabe.


Fazit: Viel Spaß damit!

Ich hoffe, ich habe gut genug bewiesen, dass es wirklich keinen Grund gibt, RVM nicht zu verwenden, wenn Sie sich in einer Unix-Box befinden. Ich persönlich habe es noch nicht für nötig gehalten, mehr als einen Interpreter / eine Version von Ruby zu verwenden, aber ich finde die Gemsets und das Projekt spezifisch .rvmrc Dateien unglaublich praktisch sein.

Aber es gibt mehr zu erfahren über RVM, als ich hier gezeigt habe. Weitere Informationen finden Sie in der hervorragenden Dokumentation. Und lassen Sie mich in den Kommentaren wissen, wenn Sie Fragen haben.