التحضير للترقية الخاصة بـ Discourse إلى Ember 5

سيقوم Discourse قريبًا بترقية إصدار إطار عمل Ember Javascript الخاص بنا من الإصدار 3 إلى الإصدار 5. تم إنجاز الغالبية العظمى من أعمال التحضير، والعديد من المواقع تعمل بالفعل على Ember 5 (بما في ذلك Meta!). :ember:

هذه الترقية متاحة حاليًا خلف علامة ميزة! هذا هو الإعداد الافتراضي لتثبيتات Discourse المستضافة ذاتيًا بدءًا من 10 يناير. في البداية، سيظل دعم Ember 3 متاحًا عبر علامة، ولكن سيتم إزالته خلال الربع الأول من عام 2024.

على الاستضافة المُدارة discourse.org الخاصة بنا، سنقوم بتطبيق مرحلي للعلامة على مدار الشهرين القادمين:

:discourse: مستوى استضافة discourse.org تاريخ الترقية
أساسي 2023-12-07 :white_check_mark:
مجاني 2023-12-12 :white_check_mark:
احترافي 2024-01-15 :white_check_mark:
أعمال 2024-01-22 :white_check_mark:
مؤسسي (حسب الحالة)

:eyes: ماذا يعني هذا بالنسبة لي ولموقعي؟

إذا كنت تشغل Discourse بدون أي سمات أو إضافات أو مكونات سمات إضافية… فأنت جاهز! لا حاجة لرفع إصبع، أو القلق بشأن هذا على الإطلاق.

وبالمثل، إذا كنت تستخدم السمات/الإضافات الرسمية فقط، فقد قمنا بتغطيتك! سنتأكد من أن جميع سماتنا ومكونات السمات وإضافاتنا الرسمية جاهزة للترقية.

بالنسبة لأولئك الذين يستخدمون تخصيصات طرف ثالث، يجب على مطوريها إجراء التغييرات اللازمة عليها حتى تتمكن من الاستمرار في استخدامها بسلاسة طوال هذا الانتقال.

ومع ذلك، إذا كان لديك أي سمات مخصصة أو مكونات سمات أو إضافات قمت بإنشائها أو تكليفها لمواقعك، فهذا المنشور لك! سنستعرض كيفية تحديد وحل أي مشكلات قبل الترقية.

:face_with_monocle: تحديد المشكلات

يمكن تحديد جميع مشكلات الترقية المتعلقة بـ ember-5 قبل الترقية عن طريق التحقق من استخدام واجهات برمجة التطبيقات المهملة. في الإصدارات الأخيرة من Discourse (بدءًا من Discourse 3.2.0.beta4-dev)، ستؤدي هذه الإهمالات الحرجة إلى ظهور لافتة تحذير للمسؤولين:

يمكنك العثور على مزيد من المعلومات حول الإهمالات التي تم تشغيلها في وحدة تحكم مطوري المتصفح. من الممارسات الجيدة عمومًا حل جميع الإهمالات التي تراها. ولكن بالنسبة لترقية إصدار Ember هذا، فإن الإهمالات الرئيسية التي يجب حلها هي:

عند طباعة الإهمالات إلى وحدة التحكم، يحاول Discourse تحديد السمة/الإضافة ذات الصلة.

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

  • عند تشغيل اختبارات QUnit، يتم طباعة تقرير في النهاية مع قائمة بجميع الإهمالات التي لم يتم حلها. في GitHub actions، يتم إضافة نسخة markdown من هذا إلى صفحة ملخص سير العمل.

  • بالنسبة لمقدمي خدمات الاستضافة، لدينا المكون الإضافي discourse-deprecation-collector الذي يزيد عدادات prometheus كلما تم الوصول إلى الإهمالات في الإنتاج.

:technologist: حل الإهمالات

بشكل عام، ستتضمن رسالة وحدة التحكم وصفًا للمشكلة والخطوات المطلوبة لحلها. في بعض الحالات، ستربط بموارد خارجية مثل موقع Ember deprecations أو Discourse Meta.

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

:rocket: الاختبار على Ember 5

لاختبار الأشياء على Ember 5 في بيئة تطوير محلية، يمكنك بدء مساعد ember-cli الخاص بنا باستخدام متغير البيئة EMBER_VERSION. على سبيل المثال:

EMBER_VERSION=5 bin/ember-cli -u

للتأكد من أن الأمور تعمل كما هو متوقع، تحقق من إصدار Ember الذي يطبعه Discourse في وحدة تحكم المتصفح.

في الإنتاج، يمكنك تحقيق نفس الشيء عن طريق إضافة EMBER_VERSION: 5 إلى قسم env: في ملف app.yml الخاص بك.

42 إعجابًا

تهانينا للفريق، لا بد أن ذلك كان عملاً كثيراً! :sweat_smile:

11 إعجابًا

ديفيد، أفترض أن هذا قابل للعكس تمامًا مع التراجع عن هذه السمة وإعادة البناء؟

5 إعجابات

نعم، قابل للعكس تمامًا :+1:

3 إعجابات

عمل رائع يا رفاق. كيف يمكنني العثور على قائمة بالمكونات/السمات المدعومة رسميًا. تمكنت من العثور على أن 3 أو 4 من مكونات الإضافات الخاصة بي رسمية. (تم إدراج العلامة “رسمي” في الموضوع)

ولكن بالنسبة للرابع لم أتمكن من العثور إلا على عنوان URL هذا: GitHub - discourse/discourse-full-width-component: Make Discourse occupy the full browser width

كيف يمكنني معرفة ما إذا كان رسميًا / لن يتسبب في كسر التحديث؟

تعديل: يبدو أنه يمكنني التصفية هنا: Topics tagged official

ثم البحث عن سمة معينة في القائمة. لقد حاولت سابقًا البحث في أعلى يمين المنتديات.

عندما أبحث في قائمة المواضيع، فهي غير مدرجة ولكنني أرى موظفين كمساهمين في GitHub:

4 إعجابات

كإرشادات تقريبية جدًا، إذا كان عنوان URL يبدأ بـ github.com/discourse/، فسنقوم بالتعامل معه. في حالة discourse-full-width-component، لا أرى أي سبب للقلق - يجب أن يعمل بشكل جيد مع Ember 5.

6 إعجابات

هل هناك طريقة لمعرفة ما إذا كان موقع Discourse مستضافًا وأنا مسؤول عنه يعمل على Ember 5؟

ألقيت نظرة على صفحة المسؤول ولم أر أي مؤشر على ذلك. الموقع الذي أنا مسؤول عنه هو

5 إعجابات

حتى الآن، يعمل Ember 5 على Meta وعلى مستوى الاستضافة “الأساسي” لدينا.

في الإصدارات الحديثة من Discourse، نطبع معلومات الإصدار الحالية إلى وحدة التحكم. لذا يمكنك فتح وحدة تحكم أدوات المطور والتحقق من السطر الأول:

10 إعجابات

لديك وصول إلى أدوات المطور على كل موقع على الإنترنت! في نظام التشغيل Windows/Linux على متصفح Chrome، يمكنك الضغط على مفتاح F12. بالنسبة لنظام Mac، يوجد في… قائمة ما.

8 إعجابات

شكرا لك.

كنت أعتقد أنه يعني وحدة تحكم Discourse التي يمكن الوصول إليها إذا قمت بتثبيت الموقع من موجه أوامر نظام التشغيل.


الخطوات

  1. افتح متصفح الإنترنت (Chrome لهذا المثال)
  2. انتقل إلى موقع Discourse (https://swi-prolog.discourse.group/ لهذا المثال)
  3. اضغط على F12
  4. إذا لم يكن علامة التبويب Console في الأعلى نشطة، فحدد علامة التبويب Console.
  5. يجب أن يلاحظ السطر الأول إصدار Ember.

4 إعجابات

وإذا كان شخص ما يحاول القيام بأشياء على جهاز iPad، فيمكن العثور على وحدة التحكم (Safari فقط) عبر تطبيق:

<shttps://apps.apple.com/app/id1064318327

أوه، لم يعد متاحًا. مؤسف.

5 إعجابات

أحببت هذا الإضافة. عمل رائع يا ديفيد وفريق ModernJS. :rocket:

ههه. يمكنك تشغيل Chrome على MacOS وأدوات المطور هي نفسها. نظام iOS وشاشات اللمس هي التي تجعل استخدامه صعبًا / شبه مستحيل (على سبيل المثال: جهاز iPad في وضع سطح المكتب لديه أداة فحص الويب ولكنها ليست مثالية).

5 إعجابات

بالضغط على F12؟ اعتقدت أنني كنت أعرف أن هذا لا يعمل.

5 إعجابات

optioncommandJ

5 إعجابات

لا أعرف كيف يكون ذلك أصعب في التذكر من F12. كلاهما غير قابل للاكتشاف تقريبًا على أي حال. وربما لن يساعد البحث في قائمة كما اقترحت.

6 إعجابات

option command J يجب أن يكون سهلاً لـ لك تذكره :ضحك:

5 إعجابات

[زر الفأرة الأيمن] [فحص العنصر] هو خياري المعتاد - أعتقد أن هذا ثابت في كل المتصفحات وأنظمة التشغيل

6 إعجابات

صحيح!

أوه. هذا سهل ويعمل دائمًا. لطيف. ويوفر عليّ حوالي اثني عشر نقرة نظرًا لأن هذا هو ما تريد فعله غالبًا. بالطبع، يبدو أنني اختطفت هذا الإعلان Announcements . آسف.

7 إعجابات

أعلم أن هذا سيكلفني بعض وقت التطوير :grimacing: (شريط جانبي جديد، إزالة شارات الفئات… غالبًا ما يكون الأمر كذلك - امتلاك سمة مخصصة مكلف!).

هل هناك طريقة لـ Ember 5 في منتدى الخاص بي دون كسر كل شيء في الإنتاج؟ أنا على خطة الأعمال المستضافة.

  • شكرًا على التنبيه ورسائل الإهمال على أي حال. ولكن عند إصلاح الإهمال، هل يجب عليّ ترميز السمة الخاصة بي لكل من Ember 3 و Ember 5؟
  • هل لدينا خيار للترقية أم لا؟ أم أنك الوحيد الذي يقرر؟

نوع من بيئة “ما قبل الإنتاج” أو “الاختبار” سيكون لطيفًا على ما أعتقد.

6 إعجابات

مرحباً داميان :wave:.

يقوم Discourse و Ember فقط بإهمال الأشياء بمجرد توفر بديل للاستخدام الفوري. لذلك، إذا كانت هناك أي تغييرات تحتاج إلى إجرائها، فيمكن إجراؤها على الفور وستعمل ضمن Ember 3.

هذا هو النهج الذي نتبعه في Discourse core وفي جميع القوالب والإضافات الرسمية الخاصة بنا. نحن لا ننشئ رمزًا منفصلاً لـ Ember 3 / Ember 5.

أخشى أنه ليس اختياريًا. الحفاظ على تحديث تبعيات Discourse core أمر ضروري لنا من حيث الأمان والأداء والميزات. ستصبح الميزات التي يوفرها Ember 5 ضرورية للتحسينات المستقبلية لـ Discourse نفسه.

هذا سؤال جيد! نحن نبذل الكثير من الجهد في الوقت الحالي لجعل هذا الانتقال سلسًا قدر الإمكان، ونعمل على تحسينات مختلفة للأدوات.

وصل أحد هذه التحسينات قبل ساعات قليلة، ويجب أن يساعدك هنا.

إذا قمت بزيارة /safe-mode على منتداك، فهناك الآن مربع اختيار لـ “جعل إهمالات Javascript تثير خطأ”.

سيسمح لك ذلك برؤية كيفية عمل موقعك بأمان مع تحويل جميع الإهمالات المعلقة إلى أخطاء.

من الناحية الفنية، هذا ليس بالضبط نفس “اختبار Ember 5 على المنتدى”. ولكنه طريقة جيدة لمحاكاة التغييرات الكاسرة القادمة دون الحاجة إلى بيئة اختبار منفصلة بالكامل.

8 إعجابات