مشكلة في قائمة انتظار Webhooks post_created و post_edited

مؤخرًا، واجهنا مشكلة في مكون الإضافات الخاص بالتقييمات حيث كانت بيانات قديمة/فارغة تُمرَّر إلى الويب هوكس. اتضح أن السبب هو الاعتماد على أحداث DiscourseEvent في طابور استدعاءات الويب هوك.

هذا يؤدي إلى طابور استدعاء الويب هوك قبل أن تقوم بعض أو جميع الإضافات بتشغيل تعديلاتها، نظرًا لعدم وجود آلية لضمان ترتيب التنفيذ. خاصةً، أن الكود الأساسي يأخذ أولوية أعلى.

أقترح أن تُطابَر هذه الويب هوكس بعد استدعاء DiscourseEvent.trigger، بحيث تكون جميع الإضافات قد نفذت تعديلاتها على النموذج بحلول تلك النقطة.

آراؤكم؟

ربما قم بإنشاء طلب سحب (PR) للتغيير، فهو يبدو مقبولاً من حيث المبدأ.

لقد ناقشنا هذا الأمر مع @angus ووجدنا حلاً بسيطاً جداً لهذه المشكلة. يبدو أنه يعمل بشكل جيد.

كتابة كود on() خارج after_initialize تحل المشكلة. أعتقد أن هذا هو الطريقة التي يجب أن تتبعها جميع الإضافات. أعتقد أن المشكلة كانت من جانبنا.

السبب في أن هذا يعمل هو أن التحكم يدخل إلى ملف plugin.rb قبل تشغيل مبادرات Rails، وبالتالي تُسجل استدعاءات on() قبل تكديس الويب هوكس.