Automatische Migration des Testdatenbank-Schemas

Verwandt: Db:drop, create & migrate behavior with RAILS_ENV=development - #2 by taylorthurlow - A May Of WTFs - Ruby on Rails Discussions

Ich bin mir nicht sicher, ob wir das bereits untersucht haben, aber Rails kann das Test-Datenbankschema automatisch mit ActiveRecord::Migration.maintain_test_schema! verwalten (Methodendefinition, in rails/test_help, im neuesten rspec/rails-Helfer-Generator).

Hier ist ein Diff, um dies in Discourses spec/rails_helper zu integrieren:

Allerdings schlägt dies in meiner Docker-basierten Entwicklungsumgebung fehl:

ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR:  must be owner of database discourse_test

Der Grund dafür ist, dass maintain_test_schema! db:test:prepare verwendet und versucht, die Testdatenbank zuerst zu löschen, auf die (wie ich vermute) der discourse-Benutzer in einer Docker-basierten Umgebung keinen Zugriff hat.

Könnte jemand mit einer nativen Entwicklungsumgebung dies ausprobieren? Wenn es funktioniert, wäre die Änderung vielleicht eine Überlegung wert?

Ich habe diesen Diff angewendet, meine Datenbanken gelöscht und dann ausgeführt:
bin/rails db:create
bin/rails db:migrate

Anschließend habe ich eine zufällige Spez ausgewählt:

▶ bundle exec rspec spec/requests/permalinks_controller_spec.rb 
Ein Fehler ist beim Laden von ./spec/requests/permalinks_controller_spec.rb aufgetreten.
Failure/Error: Group.find_by(id: id)

ActiveRecord::StatementInvalid:
  PG::UndefinedTable: ERROR: relation "groups" existiert nicht
  LINE 8:  WHERE a.attrelid = '"groups"'::regclass
                              ^
# ./app/models/group.rb:532:in `lookup_group'
# ./app/models/group.rb:516:in `block in ensure_automatic_groups!'
# ./app/models/group.rb:515:in `each_key'
# ./app/models/group.rb:515:in `ensure_automatic_groups!'
# (eval):3:in `block (2 levels) in run_file'
# ./spec/rails_helper.rb:79:in `<top (required)>'
# ./spec/requests/permalinks_controller_spec.rb:3:in `require'
# ./spec/requests/permalinks_controller_spec.rb:3:in `<top (required)>'
# ------------------
# --- Verursacht durch: ---
# PG::UndefinedTable:
#   ERROR: relation "groups" existiert nicht
#   LINE 8:  WHERE a.attrelid = '"groups"'::regclass
#                               ^
#   ./app/models/group.rb:532:in `lookup_group'
Keine Beispiele gefunden.


Abgeschlossen in 0,00003 Sekunden (Dateien benötigten 1,6 Sekunden zum Laden)
0 Beispiele, 0 Fehler, 1 Fehler außerhalb der Beispiele aufgetreten

Ich bin nie in config.before('suite') gelangt.