Zum Inhalt springen

Updates

Lalabase aktualisierst du, indem du das neue Image ziehst und die Migrationen ausführst.

Vor dem Update

Immer zuerst sichern

Lege vor jedem Update ein frisches Backup an. Datenbank-Migrationen sind nicht immer rückwärtskompatibel.

Update durchführen

# Neue Version ziehen
docker compose pull

# Container mit neuem Image neu starten
docker compose up -d

# Migrationen ausführen
docker compose exec web bin/rails db:migrate

Datenaufgaben nach der Migration

Manche Updates bringen neben den Migrationen eine einmalige Datenaufgabe mit. Sie steht getrennt, weil sie Daten umschreibt und nicht das Schema, und sie gehört unmittelbar hinter db:migrate. Alle diese Aufgaben sind idempotent: ein zweiter Lauf kostet nichts.

Dieses Update bringt zwei mit. Der Betreiber-Schalter für die Code-Indexierung heißt jetzt code_indexing_enabled; er hieß vorher nach einer Oberfläche, die es nicht mehr gibt. Die Aufgabe kopiert den alten Wert in die neue Spalte:

docker compose exec web bin/rails organisations:backfill_code_indexing DRY_RUN=1
docker compose exec web bin/rails organisations:backfill_code_indexing
Ohne diesen Lauf schaltet sich die Code-Indexierung ab

Die Umbenennung läuft über drei Versionen. Der Zwischenschritt liest beide Spalten, damit nichts ausfällt. Wer den Lauf überspringt und die übernächste Version einspielt, dessen Organisationen verlieren die Code-Indexierung stillschweigend: die neue Spalte ist leer, und die alte wird nicht mehr gelesen. Der Lauf repariert das jederzeit nachträglich, und ein zweiter Lauf kostet nichts.

Codebase-Importe. Die Zuordnungen eines CodebaseHQ-Imports gehören jetzt zu der Organisation, die importiert hat. Vorher konnte der Import einer Organisation Tickets, Abrechnungsgruppen und Personen einer anderen Organisation aufgreifen, wenn beide denselben Export eingespielt hatten. Die Aufgabe ordnet die bestehenden Zuordnungen zu und listet importierte Zeitbuchungen, die ein früherer Import über Organisationsgrenzen verknüpft hat; diese Buchungen ändert sie nicht:

docker compose exec web bin/rails codebase_import:scope_mappings DRY_RUN=1
docker compose exec web bin/rails codebase_import:scope_mappings
Vor dem nächsten Import ausführen

Bis zu diesem Lauf sieht ein neuer Import die alten Zuordnungen nicht und legt schon importierte Tickets noch einmal an. Personen, die sich keiner Organisation eindeutig zuordnen lassen, bleiben ohne Zuordnung; ein erneuter Benutzer-Import in der Organisation ordnet sie per E-Mail wieder zu.

Architektur beachten

Lalabase wird auf x86_64 betrieben. Baust du eigene Images, baue sie immer auf der Zielarchitektur — native Erweiterungen sind nicht zwischen ARM und x86_64 übertragbar.

Rollback

Geht etwas schief, setze auf das vorherige Image-Tag zurück und stelle bei Bedarf das Backup wieder her. Pinne in der Produktion konkrete Versions-Tags statt latest, damit Rollbacks reproduzierbar bleiben.

Eine Ausnahme betrifft die Hilfetexte, die der Assistent liest. Lalabase gleicht sie nie von selbst an ältere Dateien an, damit ein Prozess der alten Version während eines Updates nichts zurückdreht. Nach einem Rollback liest der Assistent deshalb die neueren Texte weiter, bis du sie abgleichst:

docker compose exec web bin/rails product_knowledge:sync