Ich habe letztes Jahr ein Plugin entwickelt und wollte überprüfen, ob es auch in der neuesten Version von Discourse funktioniert. Nachdem ich meine Entwicklungsumgebung neu initialisiert hatte (ich hatte Probleme mit Datenbank-Migrationen), konnte ich manuell bestätigen, dass das Plugin weiterhin funktioniert. Wenn ich jedoch meine Spez-Tests ausführe (die letztes Jahr, als ich sie geschrieben habe, bestanden haben), erhalte ich folgenden Fehler:
Failure/Error: DB.test_transaction = ActiveRecord::Base.connection.current_transaction
NoMethodError:
undefined method `test_transaction=' for #<MiniSqlMultisiteConnection:0x00007fb8b3815c40>
Ich hatte auch Discourse Footnote lokal installiert und erhalte denselben Fehler, wenn ich diese Tests ausführe.
Kann jemand vorschlagen, wie ich meine Umgebung und/oder meine Tests so reparieren kann, dass sie in der aktuellen Version von Discourse bestehen?
Stellen Sie sicher, dass Sie LOAD_PLUGINS=1 angeben, wenn Sie bin/rspec aus dem discourse-Quellverzeichnis ausführen (wobei das Plugin-Repo über einen Symlink im Ordner plugins/ eingebunden ist).
Ich führe den folgenden Befehl aus dem Verzeichnis discourse aus:
d/rake plugin:spec['discourse-ruby']
@riking Ich gebe LOAD_PLUGINS=1 nicht explizit an, aber das scheint trotzdem zu passieren (ich nehme an, weil ich plugin:spec verwende). Die erste Zeile nach der Ausführung des Befehls lautet:
Es sieht so aus, als ob das d/rake-Skript standardmäßig die development-Umwelt verwendet. Du musst stattdessen den folgenden Befehl ausführen: RAILS_ENV=test d/rake plugin:spec['discourse-ruby']