Dopo un po’ ha iniziato a avere senso. Ho persino scritto una specifica, ma anche prima di aggiungerla (e quando ho ripristinato la versione precedente all’aggiunta di qualsiasi codice), le specifiche falliscono perché:
Si è verificato un errore durante il caricamento di ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb.
Errore durante l'esecuzione: Group.find_by(id: id)
ActiveRecord::StatementInvalid:
PG::UndefinedTable: ERRORE: la relazione "groups" non esiste
LINEA 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)>'
# ------------------
# --- Causa da: ---
# PG::UndefinedTable:
# ERRORE: la relazione "groups" non esiste
# LINEA 8: WHERE a.attrelid = '"groups"'::regclass
# ^
# (eval):24:in `async_exec'
Nessun esempio trovato.
Sembra che questo problema si verifichi per quasi tutte le specifiche del sito. Penso di aver eseguito correttamente git reset --hard upstream/master per tornare a una versione funzionante, quindi ho eliminato e ricreato il database, ma ricevo ancora quell’errore.
Ammetto di non essere il migliore nel leggere i messaggi di errore. Ho controllato il file che pensavo venisse citato, ma non ho trovato nessuna riga “group(s)”.
Se si tratta del tuo caso, potrebbe trattarsi di qualcosa con cui anch’io faccio fatica. Cioè: quando la pluralizzazione indica più di uno o quando è una convenzione.
Cioè, potresti pensare “groups” mentre la sintassi richiede “group” senza la “s”.
Allo stesso modo, a volte il codice richiede un caso specifico, ad esempio “Group” invece di “group”.
Vorrei dire di saperlo, ma non è così. Consiglio di adottare un approccio “scimmia vede, scimmia fa” a meno che qualcuno che ne sappia di più non intervenga.
Non ho fatto nulla con i gruppi (il gruppo non appare nel mio plugin) e quelle specifiche falliscono ovunque su Discourse. Farò un altro clone del master per vedere se in qualche modo il mio fork ha causato il problema. Grazie ancora!
Assicurati bene di inserire RAILS_ENV=test, altrimenti potresti cancellare per sbaglio il tuo database di sviluppo (sono riuscito a farlo per sbaglio questa settimana )
Forse è questo il mio problema! Forse ho usato l’ambiente di sviluppo invece di quello di test. Grazie. Ah, e devo installare un nuovo ambiente di sviluppo sul mio portatile prima di andare in aeroporto.
Ho appena aggiunto un controllo per le migrazioni in sospeso all’inizio della suite di test, quindi sarà più semplice identificare questo tipo di problema in futuro
Grazie, David! Ho visto che ora stampa un avviso. Non capisco bene perché fosse così difficile migrare il database di test, ma dopo aver eseguito una serie di destroy, create, migrate e poi il comando RAILS_ENV=test bin/rake db:migrate che hai consigliato, sono riuscito a vedere che il mio spec è rotto! Ora posso correggerlo e sto imparando come scrivere gli spec! Grazie ancora per il tuo incoraggiamento, @Mittineague.
È stato risolto? Sembra che ./bin/rake db:drop db:create elimini e ricrei il database di test, ma pare che ./bin/rake db:migrate non esegua anche le migrazioni sul database di test.