حل تحذير `this-property-fallback` القديم

الخلفية

بشكل أساسي، إذا كنت تستخدم شيئًا مثل {{foo}} في قالب handlebars للإشارة إلى خاصية في وحدة التحكم/المكون، فيجب تحديثها إلى {{this.foo}}.

معلومات المصدر: Property Fallback Lookup | Ember.js - Deprecations

لجعل Discourse يمر بترقية Ember 4.x، قدمنا طبقة توافق خلفي حتى لا تحتاج السمات والإضافات إلى الاستعجال في هذا التغيير. ومع ذلك، ليس من الممكن الحفاظ على هذه الطبقة إلى أجل غير مسمى، لذلك نحتاج إلى تحديث السمات والإضافات إلى الصيغة الحديثة.

الإهمال

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

DEPRECATION: [PLUGIN discourse-calendar] تم استخدام مسار الخاصية `loading` في قالب `discourse/plugins/discourse-calendar/discourse/templates/admin-plugins-calendar.hbs` دون استخدام `this`. تم إهمال سلوك الرجوع هذا، ويجب البحث عن جميع الخصائص في `this` عند استخدامها في القالب: {{this.loading}}

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

ترقية الكود الخاص بك

بالنسبة للسمات/الإضافات الصغيرة، يمكنك تحديث القوالب يدويًا لإضافة this. قبل أي اسم خاصية.

لجعل الانتقال أسهل للسمات/الإضافات الكبيرة، قدمنا قاعدة ember-template-lint جديدة تتضمن مُصلحًا تلقائيًا.

لذلك، إذا كنت تستخدم أحدث إصدار من تكوين التدقيق القياسي الخاص بنا (وفقًا لـ هيكل الإضافة و هيكل السمة)، فسيتم تحديث جميع التعليمات البرمجية المتأثرة تلقائيًا في المرة التالية التي تقوم فيها بتشغيل ember-template-lint --fix.

إذا كانت لديك أي أسئلة/مخاوف، فيرجى إخبارنا أدناه!

6 إعجابات

هذا رائع! في أحد المكونات الإضافية الخاصة بي حيث (أعتقد أنني قمت) بتحديث تكوين التدقيق بشكل صحيح، أرى عددًا كبيرًا من الحالات من {{this.blah}} التي أنا متأكد تمامًا أنها لم تكن موجودة حتى وقت قريب. لا يمكنني المبالغة في تقدير مدى روعة ذلك. :tada: :clinking_glasses: :beers:

سيكون من الجيد لو كانت هناك طريقة آلية لنسخ/إزالة الملفات المناسبة في كل مكون إضافي عند حدوث تحديث للهيكل. (قد أكون قد اختلقت طريقة للقيام بذلك يدويًا هذه المرة، وقد لا أكون.) ربما يكون من الممكن وضع نص برمجي صغير bash في الهيكل يتحقق من وجود plugin.rb في الدليل الحالي، وإذا كان موجودًا، فيمكنه نسخ الأشياء من المكان الذي يوجد فيه النص البرمجي إلى الدليل الحالي. شيء من هذا القبيل.

إعجاب واحد (1)

لم نعلن عن ذلك حقًا، ولكن قد تكون مهتمًا بـ GitHub - discourse/mass-pr: A tool for applying automated changes across a large number of GitHub repositories. نستخدمه لتطبيق هذه الأنواع من التغييرات عبر مستودعات السمات/الإضافات التي نحافظ عليها والتي يزيد عددها عن 600.

لذلك في هذه الحالة، أقوم بتشغيل شيء مثل:

GITHUB_TOKEN=... pnpm mass-pr \
  --message "DEV: Update linting" \
  --branch "update-linting" \
  --script scripts/update-js-linting.sh \
  discourse-solved \
  discourse-assign \
  ...

ويقوم بتحديث أشياء الهيكل، وإصلاح جميع عمليات التدقيق تلقائيًا، وإنشاء طلب السحب على GitHub.

ثم لدينا نص برمجي آخر للتعامل مع الدمج: GitHub - discourse/mass-merge: A script for mass-approving and merging Dependabot pull requests

بالتأكيد pr-welcome على نص برمجي تحديث أخف وزنًا! هذه النصوص ثقيلة جدًا إذا كان لديك مستودع واحد فقط لتحديثه.

5 إعجابات

لا. طريقة. هذا مذهل!

لا أستطيع الانتظار لتجربته، ولكنني لم أستطع الانتظار لشكرك أيضًا.

لا. نص برمجي واحد أسهل في الصيانة بـ 4 مرات من نصين، وإذا كنتم تستخدمون هذا النص البرمجي، فهذا هو النص الذي أريد استخدامه.

رائع جداً.

شكراً لك ديفيد! هذا رائع.

أولاً، استغرق الأمر مني بعض الوقت لأكتشف أنني بحاجة إلى pnpm install.

والآن لدي هذا:

#!/usr/bin/env bash
# sync-with-skeleton -- يفترض أنك في
today=$(date +"%Y-%m-%d")
repo=$(grep url .git/config | sed -E 's/.*:([^/]+/[^.]+).*/\1/')
cd ~/src/discourse-repos/mass-pr
GITHUB_TOKEN=$GITHUB_TOKEN pnpm mass-pr \
--message "DEV: Update GitHub workflows" \
--branch "sync-with-skeleton-$today" \
--script scripts/update-workflows.sh \
$repo

سيكون من الأفضل لو، على سبيل المثال، تحقق من وجود plugin.rb في الدليل الحالي وربما تحقق مما إذا كان المستودع موجودًا، ولكنه كل ما كان لدي وقت له اليوم. أو يمكنني تقديمه كـ PR ويمكنه الانتقال إلى الدليل حيث عاش.

وقد علمني أيضًا لماذا يجب علي تقديم الأشياء كـ PRs حتى عندما أكون أنا فقط. شكراً جزيلاً.

إعجابَين (2)