Probleme beim Migrieren der Testdatenbank

Danke, @Mittineague!

Nach einer Weile ergab das Sinn. Ich habe sogar eine Spezifikation geschrieben, aber schon bevor ich meine Spezifikation hinzugefügt habe (und als ich auf den Zustand vor dem Hinzufügen von Code zurückgesetzt habe), schlagen die Tests fehl, weil:

An error occurred while loading ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb.
Failure/Error: Group.find_by(id: id)

ActiveRecord::StatementInvalid:
  PG::UndefinedTable: ERROR:  relation "groups" does not exist
  LINE 8:  WHERE a.attrelid = '"groups"'::regclass
                              ^
# (eval):24:in `async_exec'
# (eval):24:in `async_exec'
# ./app/models/group.rb:529:in `lookup_group'
# ./app/models/group.rb:513:in `block in ensure_automatic_groups!'
# ./app/models/group.rb:512:in `each_key'
# ./app/models/group.rb:512:in `ensure_automatic_groups!'
# (eval):3:in `block (2 levels) in run_file'
# ./spec/rails_helper.rb:79:in `<top (required)>'
# ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb:3:in `require'
# ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb:3:in `<top (required)>'
# ------------------
# --- Caused by: ---
# PG::UndefinedTable:
#   ERROR:  relation "groups" does not exist
#   LINE 8:  WHERE a.attrelid = '"groups"'::regclass
#                               ^
#   (eval):24:in `async_exec'
No examples found.

Das scheint bei fast allen Tests auf der Seite aufzutreten. Ich denke, ich habe git reset --hard upstream/master korrekt ausgeführt, um den funktionierenden Zustand zu erreichen, und habe dann die Datenbank gelöscht und neu erstellt, aber ich bekomme immer noch diesen Fehler.

Ich gebe zu, dass ich nicht gut darin bin, Fehlermeldungen zu lesen. Ich habe mir die Datei angesehen, auf die sie sich meiner Meinung nach bezogen haben, aber keine Zeile mit „group(s)

Ich habe nichts mit Gruppen gemacht (die Gruppe erscheint nicht in meinem Plugin), und diese Spezifikationen schlagen überall in Discourse fehl. Ich werde noch einmal den Master klonen, um zu sehen, ob es irgendwie an meinem Fork liegt. Nochmals vielen Dank!

Es sieht so aus, als müssten Sie Ihre Testdatenbank migrieren

RAILS_ENV=test bin/rake db:migrate

Wenn das nicht funktioniert, löschen Sie sie und beginnen Sie von vorne

RAILS_ENV=test bin/rake db:drop
RAILS_ENV=test bin/rake db:create
RAILS_ENV=test bin/rake db:migrate

Stellen Sie unbedingt sicher, dass Sie RAILS_ENV=test angeben, andernfalls löschen Sie versehentlich Ihre Entwicklungsdatenbank (das ist mir diese Woche auch passiert :man_facepalming:)

Vielleicht ist das mein Problem! Vielleicht habe ich Development statt Test gewählt. Danke. Oh, und ich muss vor dem Flug zum Flughafen eine frische Development-Umgebung auf meinem Laptop installieren.

Ich habe am Anfang der Spezifikationssuite eine Prüfung auf ausstehende Migrationen hinzugefügt, sodass es in Zukunft einfacher sein sollte, solche Probleme zu identifizieren.

Danke, David! Ich habe gesehen, dass jetzt eine Warnung ausgegeben wird. Ich verstehe nicht ganz, warum es so schwierig war, die Testdatenbank zu migrieren, aber nachdem ich eine Reihe von destroy, create und migrate durchgeführt und dann den von dir empfohlenen Befehl RAILS_ENV=test bin/rake db:migrate ausgeführt habe, habe ich festgestellt, dass meine Spezifikation kaputt ist! Jetzt kann ich sie reparieren, und ich bin auf dem Weg zu lernen, wie man Spezifikationen schreibt! Nochmals vielen Dank für deinen Anstoß, @Mittineague.

Der Hintergrund meines Commits ist, dass ich einen Fehler entdeckt habe, bei dem

RAILS_ENV=test rake db:drop db:create db:migrate

keine post_deploy-Migrationen ausführt. Man muss db:migrate separat ausführen.

Das werden wir definitiv beheben, aber bis dahin sollte diese Warnung die Frustration verringern!

Ist das bereits behoben? Es sieht so aus, als würde ./bin/rake db:drop db:create die Testdatenbank löschen und neu erstellen, aber ./bin/rake db:migrate führt die Migrationen scheinbar nicht auch für die Testdatenbank aus.