Com o tempo, isso fez sentido. Eu até escrevi uma especificação, mas mesmo antes de adicionar minha especificação (e quando reverti para antes de adicionar qualquer código), os testes falham porque:
Ocorreu um erro ao carregar ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb.
Erro ao executar: Group.find_by(id: id)
ActiveRecord::StatementInvalid:
PG::UndefinedTable: ERRO: a relação "groups" não existe
LINHA 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:
# ERRO: a relação "groups" não existe
# LINHA 8: WHERE a.attrelid = '"groups"'::regclass
# ^
# (eval):24:in `async_exec'
Nenhum exemplo encontrado.
Isso parece afetar quase todos os testes no site. Acredito que executei corretamente git reset --hard upstream/master para voltar ao estado que deveria estar funcionando e depois excluí e recriei o banco de dados, mas ainda estou recebendo esse erro.
Eu admito que não sou muito bom em ler mensagens de erro. Olhei para o arquivo que achei que eles estivessem referenciando, mas não vi nenhuma linha de “grupo(s)”.
Se isso for seu próprio caso, pode ser algo com o que eu também luto às vezes. Ou seja, quando a pluralização significa mais de um ou quando é uma convenção.
Ou seja, você pode estar pensando em “grupos”, mas a sintaxe quer “grupo”, sem o “s”.
Da mesma forma, às vezes o código exige um caso específico, por exemplo, “Grupo” vs. “grupo”.
Gostaria de dizer que sei, mas não sei. Sugiro seguir a abordagem de “macaco vê, macaco faz” na programação, a menos que alguém que saiba melhor se manifeste.
Não fiz nada com os grupos (o grupo não aparece no meu plugin) e essas especificações falham em todo o Discourse. Vou fazer mais um clone do master para ver se de alguma forma meu fork… Obrigado novamente!
Certifique-se de incluir RAILS_ENV=test, caso contrário, você pode acabar apagando acidentalmente seu banco de dados de desenvolvimento (eu mesmo cometi esse erro essa semana )
Talvez esse seja o meu problema! Talvez eu tenha usado desenvolvimento em vez de teste. Obrigado. Ah, e preciso instalar um ambiente de desenvolvimento novo no meu laptop antes de ir ao aeroporto.
Acabei de adicionar uma verificação para migrações pendentes no início do conjunto de testes, o que deve facilitar a identificação desse tipo de problema no futuro
Obrigado, David! Vi que agora ele exibe um aviso. Não entendo muito bem por que foi tão difícil migrar o banco de dados de teste, mas depois de fazer vários comandos de destroy, create e migrate, e em seguida executar o RAILS_ENV=test bin/rake db:migrate que você recomendou, consegui perceber que minha spec está quebrada! Agora posso corrigi-la e estou no caminho certo para aprender a escrever specs! Obrigado novamente pelo empurrão, @Mittineague.
Isso já foi corrigido? Parece que o ./bin/rake db:drop db:create remove e cria o banco de dados de teste, mas parece que o ./bin/rake db:migrate não executa as migrações no banco de teste também.