Dieser Artikel erschien ursprünglich in einem kurzlebigen Rails-Weblog mit dem schönen Namen railssprech, das in den Jahren 2009 und 2010 aktiv war. Der Text ist mittlerweile wahrscheinlich hoffnungslos veraltet und wurde hier archiviert.

Eine rubygems-Liste von einer Installation auf eine andere übernehmen

Mitunter steht man vor dem Problem, die Liste der in einer Ruby-Installation installierten rubygems in ein anderes System zu übernehmen. Dazu kann man sich z.B. Narnach-Gems herunterladen und benutzen, es geht aber auch recht umkompliziert mit den »Bordmitteln« eines unizoiden Systems.

Im ersten Schritt erstellt man auf dem Ausgangssystem eine Liste der installierten Gems. Da gem list die Versionsnummern mit ausgibt, muss die Ausgabe mit Hilfe von sed bereinigt werden und in einer Textdatei aufgefangen werden:

sudo gem list|sed 's/(.*)//' > alle_meine_gems.txt</notextile>

Diese Textdatei alle_meine_gems.txt kopiert man auf das Zielsystem und lässt die darin aufgelisteten gems mit einem kleinen Shell-Skript installieren:

#!/bin/bash
GEMS=`cat alle_meine_gems.txt`
for g in $GEMS ;
do
 echo "Installiere $g"
 echo ""
 gem install $g
 echo ""
done

Es kann sein, dass man das Skript zweimal laufen lassen muss, wenn gems ihre Abhängigkeiten nicht automatisch installieren, wie z.B. bei Rails 2.3 und rack. Und noch ein Nachteil soll nicht verschwiegen werden: Dieser Weg installiert nur die aktuellste Version der gems aus der Liste. Aber z.B. zur Installation älterer Rails-Versionen wäre dann nur noch ein wenig Handarbeit nötig, oder s.o., Narnach-gems.