Со временем это стало понятным. Я даже написал спецификацию, но ещё до того, как я добавил её (и даже когда откатился к состоянию до добавления любого кода), тесты падают по следующей причине:
Произошла ошибка при загрузке ./plugins/discourse-prometheus/spec/middleware/metrics_spec.rb.
Failure/Error: Group.find_by(id: id)
ActiveRecord::StatementInvalid:
PG::UndefinedTable: ERROR: relation "groups" does not exist
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)>'
# ------------------
# --- Caused by: ---
# PG::UndefinedTable:
# ERROR: relation "groups" does not exist
# LINE 8: WHERE a.attrelid = '"groups"'::regclass
# ^
# (eval):24:in `async_exec'
No examples found.
Похоже, эта ошибка затрагивает почти все тесты на сайте. Я думаю, что правильно выполнил git reset --hard upstream/master, чтобы вернуться к рабочему состоянию, затем удалил и создал базу данных заново, но всё равно получаю эту ошибку.
Признаюсь, я не очень хорошо умею читать сообщения об ошибках. Я посмотрел на файл, который, как мне казалось, они упоминают, но не нашёл строки с «group(s)».
Если это ваш собственный случай, возможно, это одна из тех проблем, с которыми я тоже иногда сталкиваюсь. Например: когда множественное число означает более одного объекта, а когда это просто устоявшаяся форма.
То есть вы можете думать «groups», тогда как синтаксис требует «group» без «s».
Аналогично, иногда код требует определённого регистра, например «Group» против «group».
Хотел бы я сказать, что знаю, но не знаю. Предлагаю действовать по принципу «обезьяна видит, обезьяна делает», если только кто-то более сведущий не вмешается.
Я ничего не делал с группами (группа не отображается в моем плагине), и эти тесты падают по всему Discourse. Я сделаю ещё один клон master-ветки, чтобы проверить, не связано ли это как-то с моим форком. Спасибо ещё раз!
Возможно, в этом и проблема! Может быть, я указал development вместо test. Спасибо. О, и мне нужно установить свежую среду разработки на ноутбук перед вылетом в аэропорт.
Спасибо, Дэвид! Я заметил, что теперь выводится предупреждение. Не совсем понимаю, почему было так сложно выполнить миграцию тестовой базы данных, но после того, как я выполнил несколько операций destroy, create, migrate и затем команду RAILS_ENV=test bin/rake db:migrate, которую вы порекомендовали, я увидел, что мой spec сломан! Теперь я могу его исправить и двигаюсь дальше к тому, чтобы научиться писать specs! Ещё раз спасибо за вашу поддержку, @Mittineague.
Это уже исправлено? Похоже, что команда ./bin/rake db:drop db:create удаляет и создаёт тестовую базу данных, но, кажется, ./bin/rake db:migrate не выполняет миграции для тестовой базы.