Почему мой плагин перестал работать спустя месяцы?

Здравствуйте! Я написал очень простой плагин, который добавляет JWT-токен после входа пользователя, и он работал без сбоев почти год. Сегодня наш форум перестал работать, потому что, как ни странно, истёк срок действия сертификата. Я попытался выполнить ./launcher app rebuild, но сборка не удалась из-за ошибки в плагине.

I, [2022-01-27T00:16:48.616458 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
** ОШИБКА ПЛАГИНА **

Сборка Discourse не может быть завершена из-за следующей ошибки при инициализации плагина:

uninitialized constant Auth::DefaultCurrentUserProvider

/var/www/discourse/plugins/discourse-jwt-session/lib/jwt_current_user_provider.rb:3:in `<main>'

Соответствующая строка в плагине выглядит так:

class JwtCurrentUserProvider < Auth::DefaultCurrentUserProvider

Не могу понять, почему это вдруг перестало работать, поскольку в файле lib/auth/current_user_provider.rb не видно никаких значимых изменений, поэтому этот константа должна всё ещё существовать. Неужели изменился порядок загрузки библиотек и плагинов?

Если закомментировать плагин в файле app.yaml, сборка завершается успешно. Если раскомментировать — ошибка возникает снова.

Для справки: мы используем версию 2.8.0beta4. Есть ли у вас идеи, что могло произойти внезапно?

Я только что наткнулся на эту тему, когда искал решение той же проблемы, и тем временем нашёл решение.

Подключение определения класса теперь должно находиться внутри блока after_initialize, иначе оно больше не работает.

Ссылка:

Подтверждаю, что ваше исправление, похоже, решило проблему для @wilson29thid :slight_smile: