Como solucionar erros de banco de dados em um plugin desatualizado?

Sou novo no desenvolvimento de plugins do Discourse e, para começar, estou tentando atualizar este plugin de quiz para funcionar com a versão mais recente do Discourse.

Se não for muito incômodo, gostaria de ajuda para entender como solucionar este erro que aparece sempre que tento criar ou visualizar um tópico com o plugin ativado:

Mensagem

Exceção de Job: PG::UndefinedTable: ERRO:  relação \"quizzes\" não existe
LINHA 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'

Existem problemas comuns que devo procurar que possam ser a razão pela qual a relação não existe? Esses problemas geralmente seriam encontrados em /db?

Caso seja relevante: estou usando o ambiente de desenvolvimento Docker no Linux, conforme descrito neste guia e você pode ver o que fiz até agora aqui.

Parece que você não executou as migrações.

Você precisa de uma variável de ambiente extra para executá-las para plugins, veja:

2 curtidas

Obrigado pela rápida resposta! Acabei de notar d/migrate, que pareceu corrigir o problema depois que o executei. Como isso se compara a LOAD_PLUGINS=1 RAILS_ENV=test rake db:migrate?

d/migrate é um wrapper de script docker.

o comando que compartilhei é o comando real do rails que é executado.

alternativamente, você pode entrar no container em execução e executar o comando do rails.

(mas sim, você não precisa direcionar o ambiente de teste!)

Parece bom! Obrigado pela ajuda.

Abri o d/migrate e vi que ele tem tudo do comando que você compartilhou, exceto LOAD_PLUGINS=1. Não tenho certeza por que funcionou sem isso, mas tudo bem para mim.

2 curtidas

Bom homem!

Sempre bom levantar as coberturas! Muitas pessoas simplesmente não leem o código-fonte e isso é muitas vezes mais útil do que você imagina!

Sim, essa é uma distinção interessante - será que só é necessária ao fazer isso para o ambiente de teste :thinking:

2 curtidas

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