¿Cómo solucionar errores de base de datos en un plugin obsoleto?

Soy nuevo en el desarrollo de plugins de Discourse y, para empezar, estoy intentando actualizar este plugin de cuestionarios para que funcione con la última versión de Discourse.

Si no es mucha molestia, ¿podrían ayudarme a entender cómo solucionar este error que aparece cada vez que intento crear o ver un tema mientras el plugin está habilitado?

Mensaje

Job exception: PG::UndefinedTable: ERROR:  relation "quizzes" does not exist
LINE 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'

¿Hay algún problema común que deba buscar y que pueda ser la razón por la que la relación no existe? ¿Esos problemas se encontrarían típicamente en /db?

En caso de que sea relevante: estoy usando el entorno de desarrollo Docker en Linux como se describe en esta guía y pueden ver lo que he hecho hasta ahora aquí.

Parece que no has ejecutado las migraciones.

Necesitas una variable de entorno adicional para ejecutarlas para los plugins, consulta:

2 Me gusta

¡Gracias por la rápida respuesta! Acabo de notar d/migrate, que pareció solucionar el problema después de ejecutarlo. ¿Cómo se compara eso con LOAD_PLUGINS=1 RAILS_ENV=test rake db:migrate?

d/migrate es un wrapper de script de docker.

el comando que compartí es el comando real de rails que se ejecuta.

alternativamente, puede ingresar al contenedor en ejecución y ejecutar el comando de rails.

(¡pero sí, no necesita apuntar al entorno de prueba!)

¡Suena bien! Gracias por la ayuda.

Abrí d/migrate y vi que tiene todo lo del comando que compartiste excepto LOAD_PLUGINS=1. No estoy seguro de por qué funcionó sin eso, pero está bien para mí.

2 Me gusta

¡Buen hombre!

¡Siempre es bueno levantar las cubiertas! Mucha gente simplemente no lee el código fuente y eso suele ser más útil de lo que crees.

Sí, esa es una distinción interesante. Me pregunto si solo es necesario cuando se hace esto para el entorno de prueba :thinking:

2 Me gusta

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