Data Explorer ist als Teil eines Plugin-Workflows immer nützlicher geworden, aber:
Wie fügen wir Data Explorer-Abfragen von einem Drittanbieter-Plugin zuverlässig, aber tolerant hinzu, damit wir Fehler elegant behandeln können, ohne den Build zu gefährden, aber auch jedes Mal erneut versuchen können, falls Data Explorer schließlich installiert wird?
Optionen, die ich untersucht habe:
Plugin abfragen: das schummelt – die Abfragen werden vom Data Explorer-Plugin selbst hinzugefügt
Plugin-Fixtures – dies scheint problematisch zu sein, da die Data Explorer-Artefakte während der Plugin-Initialisierung nicht garantiert verfügbar zu sein scheinen – vielleicht, weil das Data Explorer-Plugin selbst ein Drittanbieter-Plugin ist und nicht garantiert geladen wurde? Ich schätze, ich könnte versuchen, SQL über Ruby-Code zu verwenden, um zu identifizieren, ob die Tabelle existiert?
Migrationen – ich habe Migrationen geschrieben, aber sie müssen harmlos fehlschlagen, ABER NICHT ABGESCHLOSSEN werden, wenn das Data Explorer-Plugin nicht installiert ist und keine Abfragetabelle vorhanden ist – die Migrationen sollten immer bei einem Neubau ausgeführt werden, bis das Data Explorer-Plugin installiert ist und die Tabelle verfügbar ist, damit die Abfragen hinzugefügt werden können – auf diese Weise ist die Lösung aus Administratorsicht flexibel und hängt nicht von der Installationsreihenfolge ab. Eine fehlschlagende Migration sollte den Build nicht gefährden – gibt es eine Möglichkeit, eine Migration fehlschlagen zu lassen/aufzuschieben, ohne den Build zu stoppen?
Verwendung eines periodischen geplanten Jobs, um die Anwesenheit sowohl des Data Explorer-Plugins/der Abfragetabelle als auch der erforderlichen Abfragen zu überprüfen.
Den Administrator bitten, sie manuell hinzuzufügen … igitt.
Ich schätze, ich werde als nächstes die SQL-Version von 2 ausprobieren, oder vielleicht übersehe ich etwas?
Ja, genau das. Data Explorer entwickelt sich zu einem Werkzeug, das Sie für Verwaltungsaufgaben für Personen mit erhöhten Rollen in einem Prozess verwenden können.
Sie könnten einen Job einrichten, der prüft, ob sie installiert sind. Er würde erst starten, wenn alles läuft.
Aber um sicherzustellen, dass nichts kaputt ist, können Sie prüfen, ob ein Daten-Explorer-Aufruf verfügbar ist. Ich glaube, das mache ich für Abonnements, vielleicht. (Es ist früh und ich habe meinen Laptop noch nicht geöffnet.)
Sie haben letzte Woche Code hinzugefügt, der prüft, ob das Chat-Plugin geladen ist.
Ich glaube, Ihr Problem ist jedoch ein Race Condition.
Vielleicht reihen Sie es einfach ein, damit es einmal beim Start ausgeführt wird? Und es würde so lange laufen, bis der Test für das Plugin erfolgreich ist oder nach einigen Minuten beendet wird?
Ich finde die Idee mit der Initialisierung durch Enqueue gut. Das umgeht potenziell das Ladeproblem. Das gefällt mir besser als die Option einmal alle 24 Stunden. Vielleicht probiere ich das mal aus! Danke!
Ich denke, es reicht, wenn Sie Ihren Test an einem Ort ablegen, an dem er gerettet wird, falls er fehlschlägt. Aber kann man nicht einfach testen, ob etwas wie DataExplorer.irgendwas existiert?
Ich weiß zu wenig über die Verwendung von Migrationen, um in Erwägung gezogen zu haben, sie für Ihren Anwendungsfall zu verwenden. Sie könnten auch einen Endpunkt haben, den beispielsweise das Admin-Panel aufruft, und der überprüft, ob Ihre Abfragen installiert sind.
Jetzt, wo ich darüber nachdenke, befürchte ich, dass das einzige Problem, das ich tatsächlich gelöst habe, das Hinzufügen des anderen Plugins ist, damit Tests funktionieren.