إضافات Discourse وإعدادات config/initializers لـ Rails 6

أظن أنني أضللّتك في المنشورات أعلاه. 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
  • يتم تنفيذ التصحيحات القابلة لإعادة التحميل
  • (يا له من رائع، لا يزال تجاوز الإضافة يعمل)