Problemas al migrar la base de datos de pruebas

¡Gracias, @Mittineague!

Con el tiempo, eso tuvo sentido. Incluso escribí una especificación, pero incluso antes de agregar mi especificación (y cuando volví al estado anterior a la adición de cualquier código), las pruebas fallan debido a:

Se produjo un error al cargar ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb.
Failure/Error: Group.find_by(id: id)

ActiveRecord::StatementInvalid:
  PG::UndefinedTable: ERROR: la relación "groups" no existe
  LINE 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)>'
# ------------------
# --- Causado por: ---
# PG::UndefinedTable:
#   ERROR: la relación "groups" no existe
#   LINE 8:  WHERE a.attrelid = '"groups"'::regclass
#                               ^
#   (eval):24:in `async_exec'
No se encontraron ejemplos.

Parece afectar a casi todas las pruebas del sitio. Creo que ejecuté correctamente git reset --hard upstream/master para volver a lo que debería funcionar y luego eliminé y volví a crear la base de datos, pero aún obtengo ese error.

Admito que no soy el mejor leyendo mensajes de error. Revisé el archivo que creía que estaban mencionando, pero no vi ninguna línea de “group(s)”.

Si este es tu propio caso, podría ser algo con lo que yo también tengo dificultades, es decir: cuándo la pluralización significa más de uno o cuándo es una convención.

Es decir, es posible que estés pensando en “groups” cuando la sintaxis requiere “group” sin la “s”.

De manera similar, a veces el código requiere un caso específico, por ejemplo: “Group” frente a “group”.

Me gustaría decir que lo sé, pero no lo sé. Sugiero programar con el método “monos ven, monos hacen”, a menos que alguien que sepa más intervenga.

No hice nada con los grupos (el grupo no aparece en mi plugin) y esas pruebas fallan en todo Discourse. Haré un clon más de la rama master para ver si de alguna manera mi fork… ¡Gracias de nuevo!

Parece que necesitas migrar tu base de datos de pruebas

RAILS_ENV=test bin/rake db:migrate

Si eso no funciona, bórrala y vuelve a empezar

RAILS_ENV=test bin/rake db:drop
RAILS_ENV=test bin/rake db:create
RAILS_ENV=test bin/rake db:migrate

Asegúrate bien de incluir RAILS_ENV=test, de lo contrario podrías borrar por error tu base de datos de desarrollo (yo lo hice sin querer esta semana :man_facepalming:)

¡Quizás ese sea mi problema! Quizás bajé el entorno de desarrollo y no el de pruebas. Gracias. Ah, y necesito instalar un entorno de desarrollo nuevo en mi portátil antes de ir al aeropuerto.

Acabo de agregar una verificación de migraciones pendientes al inicio del conjunto de pruebas, por lo que debería ser más fácil identificar este tipo de problemas en el futuro

¡Gracias, David! Vi que ahora imprime una advertencia. No termino de entender por qué fue tan difícil migrar la base de datos de pruebas, pero después de ejecutar varios comandos de destroy, create y migrate, y luego el RAILS_ENV=test bin/rake db:migrate que recomendaste, logré ver que mi spec está roto. Ahora puedo arreglarlo y estoy en camino de aprender a escribir specs. ¡Gracias de nuevo por tu empujón, @Mittineague!

El contexto de mi commit es que encontré un error donde

RAILS_ENV=test rake db:drop db:create db:migrate

no incluye las migraciones post_deploy. Tienes que ejecutar db:migrate por separado.

Definitivamente lo solucionaremos, pero mientras tanto, esta advertencia debería reducir la frustración.

¿Se ha solucionado eso? Parece que ./bin/rake db:drop db:create elimina y crea la base de datos de prueba, pero parece que ./bin/rake db:migrate no ejecuta también las migraciones en la base de datos de prueba.