Как устранить ошибки базы данных в устаревшем плагине?

Я новичок в разработке плагинов для Discourse и для начала пытаюсь обновить этот плагин для викторин, чтобы он работал с последней версией Discourse.

Если это не слишком хлопотно, я был бы признателен за помощь в понимании того, как устранить эту ошибку, которая возникает каждый раз, когда я пытаюсь создать или просмотреть тему с включенным плагином:

Сообщение

Исключение в задаче: PG::UndefinedTable: ОШИБКА: отношение "quizzes" не существует
СТРОКА 9:  WHERE a.attrelid = '"quizzes"'::regclass
                            ^



Обратная трассировка

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 `block 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'

Есть ли какие-то распространённые проблемы, на которые мне стоит обратить внимание, которые могли бы объяснить отсутствие отношения? Обычно такие проблемы можно найти в папке /db?

На всякий случай, если это имеет значение: я использую Docker-окружение для разработки на Linux, как описано в этом руководстве, и вы можете увидеть, что я сделал на данный момент здесь.

Похоже, вы не запустили миграции.

Для запуска миграций плагинов требуется дополнительная переменная окружения. См.:

Спасибо за быстрый ответ! Я только что заметил d/migrate, который, похоже, исправил проблему после запуска. Как это соотносится с LOAD_PLUGINS=1 RAILS_ENV=test rake db:migrate?

d/migrate — это обертка для Docker-скрипта.

Команда, которую я привел, является реальной командой Rails, которая выполняется.

Альтернативно, вы можете войти в запущенный контейнер и выполнить команду Rails.

(но да, вам не нужно указывать тестовое окружение!)

Звучит отлично! Спасибо за помощь.

Я открыл d/migrate и увидел, что там есть всё из команды, которую вы поделили, кроме LOAD_PLUGINS=1. Не совсем понимаю, почему это сработало без него, но для меня это не проблема.

Отлично!

Всегда полезно заглянуть под капот! Многие просто не читают исходный код, а это часто гораздо полезнее, чем вы думаете!

Да, это интересное различие — интересно, нужно ли это только при работе в тестовой среде :thinking: