Проблема с очередью вебхуков post_created, post_edited

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

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

Я предлагаю ставить эти вебхуки в очередь после вызова DiscourseEvent.trigger, чтобы к этому моменту все плагины уже внесли свои изменения в модель.

Что думаете?

Может быть, создайте PR для этого изменения; в принципе, звучит нормально.

Я и @angus обсудили это и нашли очень простое решение проблемы. Похоже, что оно работает корректно.

Вынесение кода on() за пределы after_initialize решает проблему. Мне кажется, что так должны поступать все плагины. Думаю, проблема была на нашей стороне.

Причина, по которой это работает, заключается в том, что выполнение переходит в файл plugin.rb до запуска инициализаторов Rails, поэтому колбэки on() регистрируются до того, как вебхуки будут помещены в очередь.