الرموز التعبيرية المخصصة لا تستخدم CDN للأصول المخزنة في S3 في بعض الصفحات

لقد قمت مؤخرًا بتكوين تثبيتات discourse الخاصة بي لاستخدام شبكة توصيل محتوى (CDN) وتخزين التحميلات وملفات الموقع في خدمة متوافقة مع S3. حتى الآن، كل شيء آخر يعمل بشكل صحيح، لكن صور الرموز التعبيرية المخصصة تفشل في التحميل.
عند فحص كود HTML، لاحظت أن عنوان URL لأحد الرموز التعبيرية هو: //thrivecommunityforum.s3.eu-central-1.wasabisys.com/original/2X/6/6b7f95a2cfc7810d26c7e170ebf926ba8634261b.png
(لا يتم تحميل هذا الرابط لأنني قمت بتعيين تجاوز لمنع الوصول العام إلى الدلو بعد أن لاحظت في مدير الملفات تحذيرًا بأن الكتابة العامة مفعلة للملفات)
في المقابل، تشير جميع الصور المحملة الأخرى وملفات الموقع بشكل صحيح إلى شبكة توصيل المحتوى (CDN) التي قمت بتكوينها: https://thrivecommunity-uploads.b-cdn.net/original/2X/6/62f6697da0e3cd71a7d4f1eed518641f8428150b.jpeg

تبدو عناوين URL للرموز التعبيرية المدمجة على هذا النحو: https://thrivecommunity-cdn.b-cdn.net/images/emoji/twitter/thinking.png?v=9
لذا فإن استنتاجي هو أنه قد يكون هناك خطأ في معالجة الرموز التعبيرية المخصصة عند إنشاء روابط الصور، مما يتجاوز استخدام شبكة توصيل المحتوى (CDN) المكونة لتكون أمام الملفات المخزنة في S3.

حاولت العثور على مواضيع ذات صلة، لكنني وجدت فقط هذا: Custom Emoji does not use Amazon S3 والذي يبدو قديمًا، حيث أن discourse يحاول استخدام S3 لتقديم الرموز التعبيرية المخصصة في موقعي.

إيموجي مخصص للاختبار

:facepalm:

:mdr:

إيموجي غير مخصص

:slightly_smiling_face:

إذن، الإيموجي القياسية تستخدم شبكة توصيل محتوى (CDN) واحدة بينما الإيموجي المخصصة تستخدم أخرى، لكن كلاهما مغطى بشبكة التوصيل إذا قمت بإعدادات صحيحة تلتزم حرفياً بـ استخدام التخزين الكائني للرفع (نسخ S3).

ليست عيبًا، بل هذا السلوك متوقع لأن الإيموجي القياسية مُخزَّنة داخل كود التطبيق، بينما الإيموجي المخصصة هي مجرد رفع عادي للموقع.

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

  DISCOURSE_CDN_URL: https://thrivecommunity-cdn.b-cdn.net
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: eu-central-1
  DISCOURSE_S3_ENDPOINT: https://s3.eu-central-1.wasabisys.com
  DISCOURSE_S3_INSTALL_CORS_RULE: false
  DISCOURSE_S3_ACCESS_KEY_ID: aaaa
  DISCOURSE_S3_SECRET_ACCESS_KEY: aaaa
  DISCOURSE_S3_CDN_URL: https://thrivecommunity-uploads.b-cdn.net
  DISCOURSE_S3_BUCKET: thrivecommunityforum
  DISCOURSE_S3_BACKUP_BUCKET: thrivecommunityforum-backup
  DISCOURSE_BACKUP_LOCATION: s3

واجهتُ مشكلة مشابهة (لم يتم تحديد المنشورات التي تحتوي على رموز تعبيرية مخصصة لإعادة المعالجة أثناء الترحيل إلى S3 إذا لم تكن هناك تحميلات أخرى في نص المنشور الخام، وبالتالي فإن الرابط المعالج لم يكن يشير إلى CDN).

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

أرى المشكلة في admin/customize/emojis وكذلك في معاينة محرر المنشورات، كما أن ردود الفعل (Retort reactions) على المنشورات التي نُشرت خلال الساعة الماضية تفشل.
إذن، هذه المشكلة لا تؤثر فقط على المنشورات القديمة التي تستخدم الرموز التعبيرية، بل أيضًا على المنشورات الجديدة وأجزاء من واجهة المستخدم (حيث يستخدم مختار ردود الفعل Retort reaction picker عنوان URL خاطئًا مثل منطقة إدارة الرموز التعبيرية في لوحة الإدارة).

هذا يتعلق بـ S3 CDN URL ignored when uploading into posts. تمت إضافته إلى الموضوع الأصلي.

يرجى الإبلاغ عن ذلك في موضوع الإضافة الخارجية، حيث إنها من طرف ثالث.

هذه مشكلة حقيقية، لكن تأثيرها منخفض لأنها صفحة مخصصة للمسؤولين فقط.

إذن هو كذلك. إذا قمت بالنشر فعليًا، فإن رمز التعبيرات (الإيموجي) سيظهر بشكل صحيح فيه.

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

حاولت إصلاح هذا بنفسي بعد إلقاء نظرة سريعة. يبدو أن المشكلة تكمن في أن طريقة JavaScript الخاصة بـ Discourse buildEmojiUrl تستقبل عنوان URL الخاص بالتخزين بدلاً من عنوان URL الخاص بشبكة CDN للرموز التعبيرية المخصصة. وهذا يبدو هو نفسه ما يستخدمه إضافة retort. لذا، بإصلاح ذلك، من المرجح أن يتم حل جميع المشاكل، أليس كذلك؟

بعد هذه النظرة السريعة، وجدت مكانًا يبدو أنه يبني عناوين URL للرموز التعبيرية المخصصة وقمت بتغييره إلى هذا:

اختبرت الأمر عبر وحدة تحكم Rails، ويبدو أن ذلك يصلح عناوين URL في موقعي الإنتاجي. لذا، حاولت نشر هذا التغيير هناك، لكنه لم ينجح. بعد أن لم ينجح ذلك، حاولت أيضًا تغيير EMOJI_VERSION إلى 10 لمحاولة تحديث شيء ما، لكن هذا أيضًا لم ينجح. عندما أقوم بتشغيل launcher enter وأعرض سجل git، أرى تعديلي هناك. لقد اتبعت النهج الوارد هنا: