حسنًا، تمكنت من إخفاء الخطأ وإعادة إنتاجه.
ملخص سريع
- العودة إلى إعداد S3 كان يعمل سابقًا وحذف وتثبيت مكون DiscoTOC يؤدي إلى تثبيت خالٍ من الأخطاء للمكون.
- تعطيل S3 عن طريق التعليق على جميع توجيهات S3 في ملف app.yml يؤدي إلى عودة ظهور الخطأ عند تثبيت المكون، ومن المفترض أن يعود الخطأ عند التحديث أيضًا.
- تعيين
DISCOURSE_USE_S3: falseلا يمنع Discourse من استخدام مسارات S3، هذا يبدو وكأنه خطأ برمجي أو أن هذا الإعداد لا يفعل ما أظنه يفعله.
نظرة تفصيلية
في البداية، قمت بإعادة إعداد Minio الخاص بي، وألغيت التعليق عن خيارات التكوين في app.yml، وأعدت بناء التطبيق، وتأكدت من تشغيل مهمة s3:upload_assets. بمجرد عودة الموقع للعمل، توجهت إلى قسم المكونات. لا زال مكون DiscoTOC المثبت يظهر الخطأ، ومع ذلك، عند حذفه وإعادة تثبيته، لم يعد الخطأ يظهر. أثناء تثبيت مكون DiscoTOC، تم طلب sprite.svg من خادم S3 الخاص بي.
كجزء من محاولة إعادة إنتاج المشكلة، واجهت مشكلة مثيرة للاهتمام. يبدو أنه عندما أترك جميع توجيهات S3 في ملف app.yml نشطة، أي غير معلقة، ولكن أعيّن DISCOURSE_USE_S3: false، فإن واجهة الموقع الأمامية لا تُحمّل إذا لم يكن Minio قيد التشغيل.
ربما أن DISCOURSE_USE_S3: false لا يهدف إلى تعطيل كل وصول S3، أظن ذلك بناءً على الاسم لكن من الواضح أنه لا يفعل. بمجرد أن أعيد تشغيل خدمة Minio وأنفّذ تحديث للواجهة الأمامية، يعمل كل شيء بشكل جيد. كما أنني قادر على إلغاء تثبيت وإعادة تثبيت مكون DiscoTOC دون إعادة إنتاج الخطأ في الحالة الحالية. يبدو أن هناك على الأقل خطأ برمجي واحد.
إليك الحالة الثالثة التي أدت إلى تكرار الخطأ:
لكي يعمل موقعي بدون تشغيل Minio مرة أخرى، علّقت جميع الإدخالات التي تتعلق بـ S3 في التكوين. ثم أعادت بناء التطبيق، والآن بدون تشغيل Minio، يتم تحميل الواجهة دون مشكلة. ومع ذلك، إذا قمت بإلغاء التثبيت وإعادة التثبيت، يظهر الخطأ مرة أخرى. حاولت أيضًا تشغيل Minio في هذه الحالة، لكن الخطأ عاد عند إعادة التثبيت، على الأرجح لأن لا توجد توجيهات S3 محددة في app.yml، لذا حتى لو حاول الوصول إلى S3 في الخلفية، فسوف يستخدم القيم الافتراضية بدلاً من إعدادات صحيحة. ويبدو أن بعض الصور لا تزال تحاول أن تُقدم من S3 حتى بعد إعادة تجميل المنشورات (e.g. 1531a70abda0d81d1a4039b6f3fa38bea79ef0de_2_180x180.png/xl.meta).