Kurz-Tipp: Pakete installieren wenn RubyGems nicht läuft

Wenn ein Service immer verfügbar ist macht man sich oft gar keine Gedanken wie man ohne diesen arbeiten kann. RubyGems.org ist so ein Service, der seit ich mich mit Ruby beschäftige, immer wie gewünscht seinen Zweck erfüllt hat. Egal was für ein Gem ich gesucht habe, RubyGems hat immer schnell und zuverlässig die benötigten Abhängigkeiten aufgelöst.

Anfang Dezember war dies für einmal nicht so. Infolge einer grossen DDOS-Attacke auf DNSimple war auch RubyGems.org nicht mehr erreichbar. Und ohne RubyGems.org gab es auch keine Chance mehr eine fehlende Bibliothek zu installieren.

Glücklicherweise liess sich das Problem schnell beheben. Um beim nächsten Ausfall weiterhin Gems installieren zu können beschreibe ich heute 2 mögliche Ansätze.

 

Gemfile anpassen

Nutzt man Bundler um mit einem Gemfile die Abhängigkeiten zu verwalten lässt sich bei einem Ausfall sehr einfach eine andere Paketquelle verwenden. Dazu genügt es die Zeile source mit einer alternativen Quelle zu versehen:

#source 'https://rubygems.org'
source 'http://production.cf.rubygems.org'

 

Neue Quelle hinzufügen

Abseits von Bundler kommt oft der Befehl gem install zum Einsatz. Da es dafür keine projektspezifische Konfigurationsdatei gibt muss man eine alternative Paketquelle für dass ganze System hinzufügen. Dazu kann man diesen Befehl verwenden:

gem sources --add http://production.cf.rubygems.org

Sobald RubyGems.org wieder funktioniert kann man diesen Eintrag nach dem gleichen Prinzip entfernen:

gem sources --remove http://production.cf.rubygems.org

 

Fazit

Ein solch wichtiger Dienst wie RubyGems.org schätzt man erst so richtig wenn dieser nicht mehr läuft. Wenn man aber weiss wie man eine alternative Paketquelle definieren kann muss man auch bei einem Ausfall seine Arbeit nicht unterbrechen.