GitHub Actions schlägt fehl: Schritt "Check SKIP_DB_AND_REDIS bootability"

Ich hatte ein Problem, bei dem der kürzlich hinzugefügte Schritt „Check SKIP_DB_AND_REDIS bootability

Interessant, danke für den Bericht!

Das ist eine ziemlich spezifische Sache, die wir wahrscheinlich vorher nicht bedacht haben.

Könntest du versuchen, diese Zeile auf deiner lokalen Installation auf false zu ändern:

Und dann den Befehl zur Reproduktion erneut ausführen?

Wenn sich das Problem dadurch erfolgreich reproduzieren lässt, sollten wir prüfen, ob wir eine ENV-Variable hinzufügen können, um die Einstellung schema_cache_dump zu steuern.

Das hatte keine Wirkung. Ebenso wenig das Löschen der Datei db/schema_cache.yml.

Könnten Sie bitte diese beiden versuchen:

Im Entwicklungsmodus, mit einer anderen Umgebung zum Festlegen der Datenbank:

SKIP_DB_AND_REDIS=1 DISCOURSE_DEV_DB=„nonexistent“ bin/rails runner „puts ‚booted successfully'"

Im Testmodus, mit geladenen Plugins:

LOAD_PLUGINS=1 RAILS_ENV=test SKIP_DB_AND_REDIS=1 RAILS_DB=„nonexistent“ bin/rails runner „puts ‚booted successfully'"

Nein, immer noch erfolgreich.

Nur um zu überprüfen, dass der Plugin-Code geladen wird, habe ich „puts DiscourseKofi::Engine.to_s“ verwendet, und es hat den Namen ausgegeben. Aber als ich auf die Klasse verwiesen habe, die eine Datenbankverbindung herstellen würde, also „puts DiscourseKofi::Admin::AccountsController.to_s“, schlug es schließlich fehl.

Es sieht also so aus, als würde der Plugin-Code lokal nicht vollständig geladen werden, wie es in der GitHub-Action der Fall ist.

Der vollständige fehlgeschlagene Befehl:

LOAD_PLUGINS=1 SKIP_DB_AND_REDIS=1 DISCOURSE_DEV_DB=nonexistent bin/rails runner "puts DiscourseKofi::Admin::AccountsController.to_s"

Ohne LOAD_PLUGINS=1 oder mit RAILS_DB=nonexistent trat kein Fehler auf.

Korrektur: LOAD_PLUGINS spielte keine Rolle.

Also wird dies fehlschlagen:

SKIP_DB_AND_REDIS=1 DISCOURSE_DEV_DB=nonexistent bin/rails runner "puts DiscourseKofi::Admin::AccountsController.to_s"
-> Fehler

Dieses nicht:

SKIP_DB_AND_REDIS=1 DISCOURSE_DEV_DB=nonexistent bin/rails runner "puts 'booted successfully'"
-> kein Fehler

Ebenso wenig das Referenzieren einer Klasse, die keine Verbindung zur Datenbank herstellt:

SKIP_DB_AND_REDIS=1 DISCOURSE_DEV_DB=nonexistent bin/rails runner "puts DiscourseKofi::Admin::PaymentsController.to_s"
-> kein Fehler

Verstanden. Der korrekte Befehl, um das Problem lokal zu reproduzieren, lautet:

CI=true RAILS_ENV=test LOAD_PLUGINS=1 SKIP_DB_AND_REDIS=1 RAILS_DB=nonexistent bin/rails runner "puts 'booted successfully'"

Alle diese Umgebungsvariablen sind wichtig. Ich konnte es nicht für RAILS_ENV=development zum Laufen bringen. Ohne CI=true und LOAD_PLUGINS=1 im test-Modus scheinen nicht alle Plugin-Klassen geladen zu werden.