Duell der Datenbanken: In einem Shootout messen sich MySQL und PostgreSQL. Der Schwerpunkt vom ADMIN 06/2011 überprüft, wer schneller ist und gibt einen ... (mehr)

Erste Schritte

»rvm help« und »man rvm« geben einen Überblick über die generelle Benutzung. Je nach gewünschter Ruby-Installation müssen eventuell noch Abhängigkeiten erfüllt werden. »rvm requirements« zeigt je nach Distribution eine Liste mit den erforderlichen Abhängigkeiten je Ruby-Version und deren Auflösung mit dem jeweils spezifischen Paketmanager. Die »aptget« -Aufrufe zur Vorbereitung von klassischen Ruby- und etwas exotischeren JRuby-Installationen zeigt entsprechend Abbildung 1.

Abbildung 1: Auflistung der Abhängigkeiten per

Die Installation von Ruby-Interpretern gestaltet sich nach Erfüllen der Abhängigkeiten einfach: »rvm install ruby-1.9.2« installiert den klassischen Ruby-Interpreter im aktuellsten stabilen Patchlevel der Version 1.9.2. Dabei werden die Quellen heruntergeladen und auf dem Zielsystem kompiliert. RVM warnt, wenn dazu nötige Pakete fehlen und gibt die zur Installation nötigen Kommandos aus, spezifisch nach Betriebssystem oder Linux-Distribution.

Konfigurationsparameter des eigentlichen Configure-Skripts können direkt übergeben werden, etwa »rvm install 1.9.2 --without-readline« . Auch JRuby und andere Ruby-Interpreter werden auf diese Weise installiert, etwa »jruby-1.6.3« oder »ree-1.8.7« . Eine Liste aller über »rvm« installierbaren Ruby-Derivate und -Versionen erhält man über »rvm list known« . Hier wird ersichtlich, dass neben der genauen Angabe eines Patchlevels (wie in »ruby-1.8.7-p352« ) auch die jeweils aktuellste Version (»-head« ) oder ein bestimmter Release-Status (zum Beispiel »-rc1« ) gewählt werden kann. Beim klassischen Ruby-Interpreter kann der Name weggelassen werden, sodass auch »rvm install 1.9.2« funktioniert. Nach erfolgreicher Installation wechselt man per »rvm use« die Ruby-Umgebung. »rvm use 1.9.2« führt in die soeben installierte Version. Die vom System bereitgestellte Version kann jederzeit per »rvm use system« wieder aktiviert werden. Der Wechsel in eine spezifische RVM-Version ist immer sitzungsspezifisch. Es ist also problemlos möglich, in zwei verschiedenen Terminalfenstern zugleich zwei völlig verschiedene Ruby-Versionen zu nutzen. Eine genaue Auskunft über die aktuell verwendete Version erhält man mit »rvm info« . Abbildung 2 zeigt die Ausgabe nach dem Wechsel in die installierte Version 1.9.2. Hier wird auch deutlich, wie RVM arbeitet: Die Veränderung der PATH- und weiterer Umgebungsvariablen ermöglichen den bequemen Wechsel in andere Umgebungen, ohne auf dem Dateisystem Änderungen durchführen zu müssen.

Abbildung 2: Die Ausgabe des Kommandos

Gem-Sets

Besonders hilfreich ist RVM im Umgang mit Rubygems. Während es mit noch vertretbarem Aufwand möglich ist, mehrere Ruby-Versionen nebeneinander zu betreiben, sprengt spätestens der Umgang mit verschiedenen Gem-Sets den Rahmen. Unter einem Gem-Set versteht man eine spezifische Zusammenstellung von Gems. Rubygems selbst unterstützt den parallelen Betrieb mehrerer Versionen desselben Gems. Rails, das selbst ein Gem ist, kann theoretisch also nebst seiner Abhängigkeiten in verschiedenen Versionen installiert sein. Innerhalb von Ruby lassen sich dann spezifische Gems laden. Leider sind Programme jedoch oft fehlerhaft und laden zum Beispiel immer die neueste statt einer spezifischen Version eines Gems, was nicht selten zu Kompatibilitätsproblemen führt.

Hilfreich ist hier der Ansatz, Gems nicht mehr beliebig zu installieren, sondern pro Projekt zu pflegen, um nur die benötigten Gems vorzuhalten. RVM bietet hierfür Gem-Sets als Container für spezifische Zusammenstellungen von Gems an. »rvm gemset create projekt1« erstellt ein Gemset »projekt1« in der aktuellen Umgebung. Nun kann man mit »rvm use 1.9.2@projekt1« in das Gem-Set wechseln. Alle per »gem install« installierten Gems werden nur innerhalb dieses Gem-Sets dieser Ruby-Version ausgerollt. Schneller kann man per »rvm use 1.9.2@projekt2 --create« gleichzeitig ein Gem-Set erstellen und hineinwechseln. Benötigt man direkten Zugriff auf das Gem-Verzeichnis, lässt man sich den Pfad über »rvm info« oder »echo $GEM_HOME« anzeigen.

Über Gem-Sets lassen sich nicht nur Projekte klar voneinander trennen, sondern auch neue Gemversionen problemlos testen. Mit »rvm gemset copy 1.9.2@projekt1 1.9.2@projekt2« werden komplette Gem-Sets kopiert. Dies ist auch zwischen verschiedenen Ruby-Versionen möglich. Ebenso können mit »rvm gemset export/import« Gem-Sets in einer ».gems« -Datei gesichert oder aus dieser importiert werden. Wer auch bei neu angelegten Gem-Sets immer wieder dieselben Gems benötigt, kann in »~/.rvm/gemsets/global.gems« eine Liste von Standard-Gems pflegen. Sie werden bei Erstellen neuer Gem-Sets automatisch ausgerollt. Listing 1 zeigt ein Beispiel.

Listing 1

~/.rvm/gemsets/global.gems

 

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019