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)

Konfiguration

RVM wird über »~/.rvmrc« bzw »/etc/rvmrc« konfiguriert. Die Konfiguration ist optional, ermöglicht aber das Setzen spezifischer Compiler-Flags und Pfadangaben. Eine Liste möglicher Optionen liefert die Datei »~/.rvm/examples/rvmrc« . Interessanter ist der Einsatz projektspezifischer ».rvmrc« -Konfigurationen. Der eingangs erwähnte RVM-Bootstrapper für Bash und Zsh lädt nicht nur »rvm« , sondern prüft bei jedem Verzeichniswechsel, ob im aktuellen Verzeichnis eine ».rvmrc« -Datei vorhanden ist und bietet nach einmaliger Prüfung an, diese automatisch zu laden.

Die entsprechende Datei ».rvmrc« kann bereits bei Erstellung eines Gem-Sets automatisch im aktuellen Ordner geschrieben werden: »rvm --rvmrc --create 1.9.2@projekt3« . Beim ersten Wechsel in das Verzeichnis muss einmalig die Vertrauenswürdigkeit der Datei bestätigt werden. Danach löst jeder Wechsel in das Verzeichnis einen automatischen Wechsel in die entsprechende Ruby-Version und das Gem-Set aus. Für Entwickler ergibt sich so eine einfache Möglichkeit, durch eine gemeinsam bearbeitete ».rvmrc« Ruby-Version den Namen des Gem-Sets für alle am Projekt Beteiligten bekanntzumachen. Neue Entwickler erhalten automatisch die richtige Version. Einziger Nachteil ist, dass nur Gem-Sets automatisch erstellt werden – eventuell nicht vorhandene Ruby-Versionen müssen einmalig per »rvm install« nachinstalliert werden.

Letztlich handelt es sich bei der ».rvmrc« nur um ein Bash-Skript. Ein Blick in die automatisch erstellte Datei zeigt, dass hier mit Umgebungsvariablen und Shell-Logik gearbeitet wird. Es bietet sich also an, innerhalb der ».rvmrc« weitere Umgebungsvariablen zu setzen oder das RVM-Bootstrapping weiter ans Projekt anzupassen, um zum Beispiel die Verwendung von 32- oder 64-Bit-Versionen eines Ruby-Interpreters sicherzustellen.

Integration und Skripting

Benutzt man auf Ruby und Rubygems aufbauende Dienste wie Passenger, ist der Einsatz von RVM teils nicht ganz trivial [7]. Je nach verwendeter Software muss geprüft werden, wie RVM eingebunden werden kann. Hilfreich ist oft die Verwendung absoluter Pfadangaben zu Ruby-Interpretern. Für jede Ruby-Version legt RVM symbolische Links an, die direkt aufrufbar sind. »rvm info« zeigt die entsprechenden Pfadangaben. Auch, wenn Pfadangaben wie »/home/ccm/.rvm/rubies/ruby-1.9.2-p290/bin/ruby« ungewohnt aussehen, verweisen sie auf eine vollständige Ruby-Installation.

Das Laden von Gem-Sets wird je nach Dienst über Umgebungsvariablen, Start-Skripte oder weitere Bootstrapper geregelt. Für Passenger und Rails3 kann zum Beispiel eine Datei »config/setup_load_paths.rb« im Rails-Projekt die entsprechenden Pfade setzen.

Für den täglichen Einsatz von RVM gibt es weitere hilfreiche Skripte. Soll ein Befehl per »sudo« unter Beibehalten der aktuellen RVM-Umgebung ausgeführt werden, kann »rvmsudo« als Wrapper genutzt werden. Für den Einsatz in Shellskripten bietet »rvm-shell« als RVM-Bash-Wrapper die Möglichkeit, auch für nicht-interaktive Sitzungen den Einsatz von ».rvmrc« -Dateien zu ermöglichen. Für Cronjobs bietet sich zum Beispiel an, die Variable »SHELL« auf die entsprechende RVM-Shell zu setzen, sodass Skripte korrekt ausgeführt werden.

Ä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