Oh je, Meta-Gems!

In meinen Beiträgen Nww-Devtools und Projekt-übergreifende RuboCop-Konfiguration habe ich darüber geschrieben, wie wir Gemeinsamkeiten in den Entwicklungsumgebungen unserer Projekte vereinheitlichen. Wir nutzen Gems, in denen wir genau diese Gemeinsamkeiten paketieren.

Von dieser Strategie werden wir jetzt wieder Abstand nehmen.

Wir pflegten eine Reihe von Meta-Gems (nww_devtools in zwei Versionslinien für Ruby 1.9.x und Ruby 2.x, nww_devtools_rails und rubocop-nww), um alle für die Entwicklung in Ruby-Projekten sinnvollen Gems zu installieren und die ein oder andere Einstellung vorzunehmen.

Es stellte sich heraus, dass wir uns damit sehr schnell auf die Abhängigkeitshölle zubewegt hatten. Jede kleine Änderung z. B. einer RuboCop-Konfigurationsparameters löste ein Bumpen aller vier Gems aus. Das hat uns effektiv dermaßen verlangsamt, dass diese Gems nicht aktiv gepflegt wurden.

Wir wollen in der Tool-Ecke aber Aktivität und Kreativität fördern, statt zu bremsen. Also haben wir jetzt eine ganz simple Lösungsstategie gewählt. Wir beschreiben alle unsere Abhängigkeiten einfach in einem Dokument und prüfen regelmäßig unsere Projekte dagegen.

Das scheint uns als viel günstigere Lösung. Mal abwarten, wie das funktioniert und ob sich das dann bewährt…

PS: Die Gems verbleiben auf Rubygems.org und Github, weil sie doch recht viele Downloads haben. Updates wird es bis auf Weiteres keine mehr geben, eine entsprechende “deprecation notice” haben wir in die READMEs eingefügt.