Wo soll der Quellcode für den benutzerdefinierten Importer aufbewahrt werden?

Hallo,

ich habe an einem benutzerdefinierten Importer gearbeitet, um Daten von unserem Woltlab-Forum nach Discourse zu importieren. Ich habe das getan, indem ich Discourse direkt auf meiner Entwicklungsmaschine ohne Docker ausgeführt habe, und jetzt habe ich eine Reihe von Dateien in script/import_scripts/, die meinen Migrationscode enthalten. Diese Dateien befinden sich vorerst in einem Fork des offiziellen Discourse GitHub-Repositorys.

Ich möchte jetzt zu einer offiziellen, Docker-basierten Installation wechseln, aber ich benötige meinen Importer-Code noch einige Zeit in der neuen Installation, da die Migration schrittweise erfolgen muss. Wenn möglich, möchte ich den Importer-Code in einem separaten Repository aufbewahren und ihn auf saubere Weise in der Produktionsinstallation verfügbar machen.

Meine Kenntnisse von Rails sind begrenzt, daher fehlt mir vielleicht ein offensichtlicher Ansatz. Kann mir jemand in die richtige Richtung weisen?

Danke!
Hans

3 „Gefällt mir“

In diesem Fall würde ich eines der folgenden vorschlagen:

  1. Richten Sie Ihre Instanz während der rollierenden Migration an Ihrer Fork aus. Wenn Sie neue Funktionalität einbeziehen möchten, synchronisieren Sie Ihre Fork einfach regelmäßig mit dem Upstream. Wenn die Migration abgeschlossen ist, wechseln Sie zurück zu discourse/discourse

  2. Klonen Sie Ihr Repository außerhalb von Docker und kopieren Sie die Dateien hinein. Tun Sie dies nach einem Rebuild, da das Precompile-Skript andernfalls feststellt, dass das Repository nicht sauber ist, und der Build viel länger dauert.

Ich denke, #1 wäre das Beste.

4 „Gefällt mir“

Danke, @RGJ! Ich werde diesen Weg gehen.

Ich habe die Repository-URL innerhalb des Docker-Containers geändert und konnte meinen Importer ausführen. Als ich jedoch ./launcher rebuild app ausführte, wurde das Repository auf das Upstream-Repository zurückgesetzt. Ich habe mir die Dockerfile angesehen und es scheint, dass der Repository-Pfad fest codiert ist, aber es scheint auch nicht so zu sein, als ob der Basiscontainer lokal erstellt wird, sodass Änderungen an der Dockerfile nicht den gewünschten Effekt haben. Gibt es eine genehmigte Möglichkeit, wie ich dies zum Laufen bringen kann?

Ich schlage vor, mit zwei Containern zu arbeiten. Sie können dies tun, indem Sie eine Kopie Ihrer aktuellen app.yml-Datei erstellen (Sie finden sie unter /var/discourse/containers) und sie in etwas anderes wie import.yml umbenennen. Aktualisieren Sie dann den Parameter version auf Ihren benutzerdefinierten Import-Branch.

params:
  version: your-branch

Jedes Mal, wenn Sie den Import ausführen müssen, stoppen Sie den app-Container, starten Sie den import-Container und führen Sie das Skript im import-Container aus. Wenn signifikante Änderungen in Discourse vorgenommen wurden, müssen Sie möglicherweise Ihren Branch mit dem neuesten Commit aus dem Core neu aufbauen und den Container neu erstellen.

cd /var/discourse
./launcher enter import

# möchten Sie zu einem anderen Branch wechseln?
su discourse -c 'git checkout <branch>'

# möchten Sie neuen Code ziehen?
su discourse -c 'git pull'

Sobald Sie mit der Migration fertig sind, stoppen Sie den Import-Container und starten Sie den App-Container neu.

cd /var/discourse
./launcher stop import
./launcher start app

Credits an @gerhard, der mir beigebracht hat, wie man das alles macht :backhand_index_pointing_up:

6 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.