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.