أظن أنني أضللّتك في المنشورات أعلاه. reloadable_patch مفيد لتطوير Discourse، لكن @david شرح استخدامه بشكل ممتاز:
أي شيء داخل كتلة after_initialize في ملف plugin.rb يتم تحميله فقط أثناء بدء تشغيل التطبيق، وليس عند إعادة التحميل اللاحقة.
لذا، بافتراض أنك تريد إضافة شيء ما إلى مُسلسل المستخدم (user serializer). السلوك الطبيعي يكون كالتالي:
أثناء بدء التشغيل:
- يقوم Discourse بتحميل
user_serializer.rb - يقوم Discourse بتحميل
plugin.rb، الذي يحتوي على تجاوز لـuser_serializer
أثناء إعادة التحميل:
- يقوم Discourse بإعادة تحميل
user_serializer.rb - (لا يتم إعادة تحميل تصحيح plugin.rb، ويتم فقدان تجاوز الإضافة)
مع نظام reloadable_patch الخاص بنا:
أثناء بدء التشغيل:
- يقوم Discourse بتحميل
user_serializer.rb - يقوم Discourse بتحميل
plugin.rbويسجلreloadable_patchالخاص بـ user_serializer - يتم تنفيذ التصحيحات القابلة لإعادة التحميل
أثناء إعادة التحميل:
- يقوم Discourse بإعادة تحميل
user_serializer.rb - يتم تنفيذ التصحيحات القابلة لإعادة التحميل
- (يا له من رائع، لا يزال تجاوز الإضافة يعمل)