Forum mit Code neu aufbauen?

Ich hatte ein paar zufällige Ideen, die mir in den Sinn kamen, und eine davon war ein Plugin zur Installation von Plugins. Das erfordert einen Forum-Neustart. Gibt es eine Möglichkeit, mit Ruby neu zu starten? Ich möchte wirklich nicht versuchen:

p `cd ../../`
p `. /launcher rebuild app`
3 „Gefällt mir“

Bei einer Standardinstallation laufen Discourse (und damit auch Plugins) in einem Docker-Container. Dieser Container hat keinen vollständigen Zugriff auf das Dateisystem des Hosts, daher kann er nicht auf das /var/discourse-Verzeichnis des Hosts zugreifen, um app.yml zu ändern oder launcher auszuführen.

Und selbst wenn er könnte… gibt es hier eine kleine zirkuläre Abhängigkeit. Das Ausführen von ./launcher rebuild würde den Docker-Container beenden… was den launcher rebuild beenden würde, den Sie vom Plugin aus gestartet haben :boom:

Hierfür gibt es mögliche Lösungen. z. B. das Hinzufügen zusätzlicher Docker-Volume-Mounts, damit die Konfiguration/der Launcher aus dem Container heraus aufgerufen werden kann. Aber das ist nicht trivial.

Ich meine, jemand hat einmal ein “Plugin-Manager”-Plugin erstellt… das einige Anpassungen an der app.yml erforderte, um Dinge wie den Volume-Mount hinzuzufügen. Aber ich kann jetzt keine Themen mehr dazu finden, daher gehe ich davon aus, dass es nicht mehr gepflegt wird. Vielleicht kann jemand anderes einen Link teilen, wenn er ihn findet? (oder vielleicht war das alles nur ein Traum :sweat_smile:)

Auf der CDCK-Seite neigen wir definitiv dazu, Themes zu verwenden, wenn wir möchten, dass Kunden nach Belieben installieren/aktualisieren/deinstallieren können. Das Ermöglichen der willkürlichen Installation von Plugins ist keine Option, da dies andere Kunden auf demselben Server beeinträchtigen würde.

5 „Gefällt mir“

Ja, hier ist er:

5 „Gefällt mir“

Hmm… Ich verstehe.

Oh, hoppla, daran habe ich nicht gedacht!

1 „Gefällt mir“

Dashboard.literatecomputing.com installiert und entfernt Plugins, indem es die app.yml (oder web_only.yml) bearbeitet und den Rebuild durchführt (eigentlich bootstrap, destroy, rebuild). Bei einer Installation mit zwei Containern ist die Ausfallzeit minimal.

Es führt auch Dinge wie das Upgrade von Docker und PostgreSQL, Docker Prune und so weiter durch. Da es sich um die Verwaltung einer Standardinstallation handelt, sind Sie nicht daran gebunden und es kann nichts kaputt machen, es sei denn, es führt tatsächlich etwas aus (wie die Installation eines fehlerhaften Plugins).

Es ist ein (privates) Discourse-Plugin, das ein Ansible-Playbook steuert. Sie können der kostenlosen Testgruppe beitreten und es kostenlos nutzen (mit eingeschränktem Support).

4 „Gefällt mir“

Dieses Plugin scheint das Repository einfach in das Verzeichnis /plugins zu klonen. Interessant.

ProCourse Installer war großartig! Es ist schade, dass es bei einigen Plugins Probleme verursacht hat.

3 „Gefällt mir“

Sie können etwas wie dies innerhalb des Containers tun, um ein Plugin zu einem vorhandenen Container hinzuzufügen:

cd /var/www/discourse/plugins
git clone my-plugin-url
rake db:migrate assets:precompile
sv restart unicorn

Aber die Probleme, die Plugins im Container und in der app.yml für den nächsten Neuaufbau aufzubewahren, bestehen weiterhin.

Ich wurde schon einige Male verbrannt, als ich ./launcher destroy app;./launcher start app ausgeführt habe, um neue Umgebungsvariablen aus app.yml anzuwenden, nur um festzustellen, dass der “neue” Container hinter der Version zurückliegt, die die Datenbank hat. Es ist noch schlimmer, wenn jemand nur einige Plugins im Container aktualisiert hat, die mit der Version von Discourse funktionierten, die sich im alten Container befand, aber nicht mit der, die Sie beim Neuaufbau erhalten. . .

3 „Gefällt mir“

Das ist also der Grund, warum das ProCouese-Plugin die Repositories nur geklont hat und nur über diese Plugin-Seite entfernt werden kann, um den geklonten Plugin-Ordner mit rm -rf zu löschen.

1 „Gefällt mir“

Es hat als Proof of Concept eigentlich ganz gut funktioniert. Es könnte zwar ein paar Anpassungen vertragen, da, wie gesagt, die Fehlersuche erschwert werden könnte. Vielleicht braucht es also einige Informationen über die Befehlszeile, wie man auf den procouree installer zugreift. Vielleicht eine bessere Log-Datei.

Der Vorteil ist jedoch, dass Sie alle Plugins einfach deaktivieren können, indem Sie den pro course installer entfernen/auskommentieren. Obwohl er jetzt kaputt ist.

Joe hat sehr fortschrittliche Ideen. Soweit ich weiß, hat er das ursprüngliche Post Voting Plugin entwickelt?