ملحق يسبب أخطاء أثناء إعادة البناء

ما يحدث هنا هو كالتالي:

  1. يمتلك بعض الأشخاص إصدارًا قديمًا جدًا من المكون الإضافي للسؤال والجواب مع اسم مستخدم GitHub الشخصي الخاص بي في عنوان URL للمستودع في ملف app.yml الخاص بهم.

  2. قمت بنقل المكون الإضافي QnA إلى paviliondev منذ سنوات. يقوم GitHub بإعادة توجيه عناوين URL للمستودعات عند نقلها، لذا استمرت عناوين URL القديمة التي تحتوي على اسم المستخدم الشخصي الخاص بي في العمل.

  3. بعد سنوات، نقلت Pavilion المكون الإضافي للسؤال والجواب إلى Discourse. احتفظت Discourse في البداية بالاسم discourse-question-answer.

  4. قبل بضعة أشهر، أنشأت نسخة خاصة بي من المكون الإضافي مستضافة في discourse، بينما كان لا يزال يسمى discourse-question-answer.

  5. الأشخاص الذين لديهم روابط قديمة جدًا للمكون الإضافي QnA مع حساب GitHub الشخصي الخاص بي في عناوين URL الخاصة بهم كانوا يستنسخون الآن نسختي الجديدة من المكون الإضافي المحدث بشكل كبير discourse-question-answer المستضاف في discourse. بمعنى آخر، كان عنوان URL قديم جدًا يشير الآن إلى نسخة من مكون إضافي جديد. على الرغم من السنوات التي مرت، كان ينبغي أن أتوقع ذلك، لذا أعتذر عن ذلك. لقد قمت بإزالة هذه النسخة.

  6. غيرت Discourse اسم discourse-question-answer إلى discourse-upvotes. لم يكن لهذا التغيير في الاسم تأثير مادي على حالتك @Jaap-Jan_Swijnenburg، ولكنه السبب في أنك تقوم الآن (بشكل غير متوقع) باستنساخ نسخة من هذا المستودع.

  7. يفترض الترحيل في discourse/discourse-upvotes (سابقًا discourse-question-answer) أن عمود value في post_custom_fields آمن من حيث النوع كـ JSON.

  8. البيانات القديمة التي تم إنشاؤها بواسطة المكون الإضافي عندما كان angusmcleod/discourse-question-answer (منذ سنوات) لم يتم حفظها كـ JSON صالح بواسطة HasCustomFields في discourse/discourse. أنا أخمن، ولكن ربما تمت إضافة هذه البيانات قبل إضافة التحقق من نوع JSON قبل 4 سنوات (لا يزال من الممكن أن ينتهي بك الأمر بـ JSON غير صالح في الحقول المخصصة المسجلة كـ JSON في حالات الحافة).

لذلك

  1. عندما يقوم الأشخاص الذين لديهم عنوان URL القديم جدًا (angusmcleod/discourse-question-answer) في ملف app.yml الخاص بهم بتحديث Discourse الخاص بهم، يتم استنساخ الترحيل في الإصدار الجديد من المكون الإضافي، ويتم تشغيل الترحيل وربما يؤدي إلى هذا الخطأ.

هناك عدد قليل من الحلول لهذا:

  1. @Jaap-Jan_Swijnenburg في حالتك، تحتاج فقط إلى إزالة الإشارة إلى المكون الإضافي QnA القديم الخاص بي وستتمكن من إعادة بناء موقعك. هذا كل شيء؛ لا شيء أكثر. يبدو أنك فعلت ذلك :+1:

  2. يمكن تحديث ترحيل المكون الإضافي discourse/discourse-upvotes للتعامل مع القيم غير JSON في عمود value في post_custom_fields.

أود أن أشير إلى أن 2 سيتعامل أيضًا مع الحالة الإضافية للأشخاص الذين يرغبون بالفعل في التبديل من إصدار قديم من المكون الإضافي QnA إلى discourse-upvotes. في هذه الحالة، سيتم تشغيل الترحيل وسيفشل إذا كانت أي إدخالات في عمود value في post_custom_fields ليست JSON صالحة.

5 إعجابات