أنشأنا توجيه Sprockets مخصصًا لمكون الإضافي Custom Wizard الإضافي

إن إضافة Custom Wizard تنشئ تطبيق Ember خاص بها وتستعير بعض الأصول من جوهر Discourse.

ولهذا الغرض، نستخدم ملفًا جافاسكريبتًا يُسمى wizard-custom.js يحتوي على تعليمات Sprockets تستهدف ملفات فردية.

في بعض الحالات، نحتاج إلى عدد كبير من الملفات من نفس المجلد، وكنا نميل إلى استخدام require_tree لفترة طويلة، لكن للأسف، هذا غير ممكن للأسباب التالية:

  • يقع ملف wizard-custom.js داخل الإضافة، لذا فإن مسار التحميل الخاص به يختلف عن مسار تحميل Discourse، ولا يمكننا إلا استدعاء الملفات الموجودة داخل مسار التحميل.
  • لا تسمح Sprockets باستخدام المسارات المطلقة عند استخدام require_tree.

حل هذه المشكلة يعني أيضًا أن الإضافة ستتعطل بشكل أقل بسبب التغييرات في جوهر Discourse.

للتخفيف من ذلك، قمنا بإنشاء توجيه مخصص لـ Sprockets يُسمى require_tree_discourse يبحث تحديدًا عن الأصول داخل مجلد Discourse باستخدام مسارات مطلقة. إليك رابط طلب الدمج (PR) الذي يحتوي على هذا الكود:

اعتقدنا أن الأمر سيكون مثيرًا للاهتمام لمطوري Discourse ومطوري Rails بشكل عام.

للأسف، اضطررنا إلى التراجع عن هذا التغيير، لأنه لا يعمل في بيئة الإنتاج.

يبدو أن الإضافات تُحمّل لاحقًا قليلاً مقارنة بوقت قراءة ملفات الجافا سكريبت.

إنه يعمل بالفعل. سنعيد إدخال التغيير قريبًا.

أدخلنا هذا في كودنا أخيرًا.
https://github.com/paviliondev/discourse-custom-wizard/pull/114

تذكّر، أتوقع أننا سنتخلى عن التروس (sprockets) لصالح عمليات البناء القائمة على ember-cli خلال 12 شهرًا. لقد بدأ @eviltrout بالفعل في العمل على استكشاف هذا الانتقال.

شكرًا على التنبيه المبكر. أي توجيهات في هذا الاتجاه ستكون ذات فائدة كبيرة. cc @angus