Come risolvere errori del database in un plugin obsoleto?

Sono nuovo allo sviluppo di plugin per Discourse e, per iniziare, sto cercando di aggiornare questo plugin quiz per funzionare con l’ultima versione di Discourse.

Se non è troppo disturbo, potrei ricevere un aiuto per capire come risolvere questo errore che si verifica ogni volta che provo a creare o visualizzare un argomento mentre il plugin è abilitato:

Messaggio

Errore nel job: PG::UndefinedTable: ERRORE:  la relazione \"quizzes\" non esiste
LINEA 9:  WHERE a.attrelid = '\"quizzes\"'::regclass
                            ^


Backtrace

rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:110:in `exec'
rack-mini-profiler-3.3.0/lib/patches/db/pg.rb:110:in `async_exec'
activerecord-7.0.8/lib/active_record/connection_adapters/postgresql/database_statements.rb:19:in `block (2 levels) in query'
activesupport-7.0.8/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport-7.0.8/lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
activerecord-7.0.8/lib/active_record/connection_adapters/postgresql/database_statements.rb:18:in `block in query'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `synchronize'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'

Ci sono problemi comuni che dovrei cercare che potrebbero essere la causa per cui la relazione non esiste? Questi problemi si troverebbero tipicamente in /db?

Nel caso fosse rilevante: sto usando l’ambiente di sviluppo Docker su Linux come descritto in questa guida e puoi vedere cosa ho fatto finora qui.

Sembra che tu non abbia eseguito le migrazioni.

È necessaria una variabile d’ambiente aggiuntiva per eseguirle per i plugin, vedi:

2 Mi Piace

Grazie per la rapida risposta! Ho appena notato d/migrate, che sembra aver risolto il problema dopo averlo eseguito. Come si confronta con LOAD_PLUGINS=1 RAILS_ENV=test rake db:migrate?

d/migrate è un wrapper di script docker.

il comando che ho condiviso è il vero comando rails che viene eseguito.

in alternativa, puoi entrare nel container in esecuzione ed eseguire il comando rails.

(ma sì, non è necessario puntare all’ambiente di test!)

Ottimo! Grazie per l’aiuto.

Ho aperto d/migrate e ho visto che contiene tutto dal comando che hai condiviso tranne LOAD_PLUGINS=1. Non sono sicuro del perché abbia funzionato senza, ma per me va benissimo così.

2 Mi Piace

Bravo!\n\nÈ sempre bene dare un’occhiata! Molte persone semplicemente non leggono il codice sorgente, e questo è spesso più utile di quanto si pensi!\n\nSì, è una distinzione interessante: mi chiedo se sia necessaria solo quando si fa questo per l’ambiente di test :thinking:

2 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.