Ошибка Oops

Я пересобрал свой сайт, и при открытии браузера появилось следующее сообщение:

Ой
Программное обеспечение, управляющее этим форумом, столкнулось с неожиданной проблемой. Приносим извинения за неудобства.

Подробная информация об ошибке была зафиксирована в логах, и автоматически было сгенерировано уведомление. Мы разберёмся в этом.

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

Помню, что перед появлением этой проблемы я заходил на страницу конфигурации плагина AI.

Для файла containers/app.yml я просто добавил в конец:

params:
  version: esr

Теперь я пробовал пересобирать сайт много раз, но после каждого обновления страницы появляется это сообщение об ошибке.

Столкнулся ли кто-нибудь с этой проблемой?

Содержимое лога log/production.log:

Я выполнил команду sv restart unicorn внутри контейнера.

Shutting down
Terminating quiet threads for default capsule
Scheduler exiting...
Pausing to allow jobs to finish...
Bye!
Sidekiq 7.3.9 connecting to Redis with options {size: 10, pool_name: "internal", host: "localhost", port: 6379, db: 1, url: nil}
Sidekiq 7.3.9 connecting to Redis with options {size: 10, pool_name: "internal", host: "localhost", port: 6379, db: 1, url: nil}
Sidekiq 7.3.9 connecting to Redis with options {size: 10, pool_name: "internal", host: "localhost", port: 6379, db: 1, url: nil}
Sidekiq 7.3.9 connecting to Redis with options {size: 10, pool_name: "internal", host: "localhost", port: 6379, db: 1, url: nil}
Booted Rails 8.0.4 application in production environment
Running in ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +PRISM [x86_64-linux]
See LICENSE and the LGPL-3.0 for licensing details.
Upgrade to Sidekiq Pro for more features and support: https://sidekiq.org
Sidekiq 7.3.9 connecting to Redis with options {size: 5, pool_name: "default", host: "localhost", port: 6379, db: 1, url: nil}
Sidekiq 7.3.9 connecting to Redis with options {size: 10, pool_name: "internal", host: "localhost", port: 6379, db: 1, url: nil}
Sidekiq 7.3.9 connecting to Redis with options {size: 10, pool_name: "internal", host: "localhost", port: 6379, db: 1, url: nil}
Sidekiq 7.3.9 connecting to Redis with options {size: 10, pool_name: "internal", host: "localhost", port: 6379, db: 1, url: nil}
Sidekiq 7.3.9 connecting to Redis with options {size: 10, pool_name: "internal", host: "localhost", port: 6379, db: 1, url: nil}
Sidekiq 7.3.9 connecting to Redis with options {size: 10, pool_name: "internal", host: "localhost", port: 6379, db: 1, url: nil}
Sidekiq 7.3.9 connecting to Redis with options {size: 10, pool_name: "internal", host: "localhost", port: 6379, db: 1, url: nil}
Started GET "/" for 220.173.137.204 at 2026-03-31 08:28:24 +0000
Processing by ListController#latest as HTML
  Rendered layout layouts/application.html.erb (Duration: 11252.1ms | GC: 410.6ms)
Completed 500 Internal Server Error in 14209ms (ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 560.5ms)

Удали свои изменения из файла app.yml

и выполни ./launcher rebuild app

У тебя, вероятно, синтаксическая ошибка в файле

После этого, я не специалист, я не знаю, что именно ты изменил в файле app.yml, но чтобы как можно быстрее запустить свой форум обратно, удали свои изменения и выполни rebuild.

Спасибо за ответ, но проблема, скорее всего, не в app.yml, так как этот файл я уже успешно использовал для сборки множество раз.

После выполнения следующей команды главная страница сайта восстановилась, но при попытке войти в систему снова возникла ошибка Oops.

redis-cli flushall

sv restart unicorn

sv reload nginx

Вы понизили версию своего сайта с latest до esr? Это могло бы объяснить такую ошибку.

1 лайк

Возможно, это откат. Я развернул этот сервер несколько недель назад и тестировал функциональность для конкретной версии, но теперь считаю, что лучшим решением является ESR. И тут я столкнулся с этой ошибкой «Oops».

Но всё работало нормально в течение нескольких недель, и вдруг только что возникла ошибка.

Как решить эту проблему? Нужно ли обязательно обновляться до последней версии?

К сожалению, откат к предыдущей версии не поддерживается. Таким образом, вам либо нужно восстановить резервную копию за период работы на ESR, либо использовать версию latest до выхода следующего релиза ESR (июль).

Ты имеешь в виду проблему, вызванную конфликтом между данными и кодом? Я могу вернуться только к той версии кода, которая соответствует моим данным?

Да, именно. Схема базы данных регулярно меняется. Поэтому, если ваша схема базы данных уже обновлена до latest, она будет несовместима со старым кодом в ESR.

То есть, если я установил новый сервер, так как стандартная установка по умолчанию — это версия latest, то в этом случае, если я захочу развернуть ESR, может возникнуть эта проблема.

Если же это старый сервер с версией, например, 3.5.0, и я обновлю его до ESR, то проблем не будет, верно?

Или я могу удалить все данные, а затем развернуть версию ESR — это тоже должно сработать.

Этот сценарий подходит для случаев, когда данные не важны, или для новых серверов, которые только что развернуты и ещё не имеют данных. Все данные будут потеряны, поэтому действуйте осторожно!!!

Добавлю конкретные шаги:

# Удалить смонтированную директорию
rm -rf /var/discourse/shared/standalone

# Уничтожить старый контейнер (не уверен, нужен ли этот шаг)
./launcher destroy app

# После изменения app.yml пересоздать контейнер
./launcher rebuild app

Да, всё верно :+1:

1 лайк