Обновление не удалось завершить, и форум стал недоступен. Мы использовали codex для исправления проблемы с обновлением, и всё снова заработало.
Размещено на Digital Ocean
Странно, что лаги наблюдаются только в моей панели администратора.
Результаты:
Плагин discourse-question-answer устарел в репозитории. Ваша версия датируется 2022-08-17.
Работа сайта не была нарушена из-за этого. После восстановления успешно отдавались файлы categories.json, latest.json и главная страница.
Фактическая проблема была более узкой: во время пересборки/загрузки инициализация категорий чата один раз вызывала хук BasicCategorySerializer плагина, который слишком агрессивно использовал вызов object.send(key).
Это привело к ошибке в логе пересборки: Error seeding chat category - #<NoMethodError: undefined method ‘qa_enabled’ for an instance of Category>.
Что я изменил:
Исправил работающий сериализатор плагина, чтобы он использовал безопасный запасной вариант вместо бездумного вызова send.
Добавил тот же патч совместимости в /var/discourse/containers/app.yml, чтобы будущие пересборки применяли его автоматически.
Сохранил резервные копии в /var/discourse/containers/app.yml.bak-2026-04-08 и /var/discourse/containers/app.yml.bak-2026-04-08-qa.
Проверка:
https://forum.longevitybase.org/ возвращает статус 200.
https://forum.longevitybase.org/latest.json возвращает статус 200.
https://forum.longevitybase.org/categories.json корректно возвращает поля qa_enabled.
Один нюанс:
Я не запускал полную пересборку после добавления постоянного хука, так как работающее приложение исправно, а эквивалентный патч уже успешно применён в работающем контейнере. Следующая
пересборка должна сохранить изменения, но этот конкретный путь ещё не был выполнен повторно.
Если хотите, я могу провести дополнительную проверку, стоит ли в будущем форкнуть этот плагин и зафиксировать его версию, вместо прямого клонирования из заброшенного репозитория.