ToS3MigrationError: لم يتم ترحيل التحميلات إلى S3، مما أدى إلى تلف المرفقات. كيفية إصلاح هذا الخطأ؟

تظهر المرفقات/التحميلات القديمة التالفة في نص المنشور الخام بصيغة [{اسم الملف}|attachment](/uploads/default/original/2X/6/{تجزئة sha1 + الامتداد}). ويتم معالجة هذا الرابط ليصبح href="/uploads/default/original/2X/6/{تجزئة sha1 + الامتداد}"، مما يكسر عمل المرفقات، لكنه لا يؤثر على الصور.

أما المرفقات اللاحقة التي تعمل بشكل صحيح فتظهر بصيغة [{اسم الملف}|attachment](upload://{تجزئة sha1 إلى base62 + الامتداد}) ويتم معالجتها لتصبح href="/uploads/short-url/{تجزئة sha1 إلى base62 + الامتداد}".

لقد كتبت كودًا صغيرًا بلغة Ruby للمرور عبر جميع المنشورات في الفترة الزمنية المعروفة بأنها مشكلة، واستبدلت جميع عناوين التحميل القديمة بالإصدار الأحدث. وقد استخدمت دالة base62_sha1 في نموذج Upload لتحويل تجزئة sha1 إلى اسم الملف المتوقع الذي تتوقعه عناوين التحميل القصيرة في نظام Discourse.

هذا جعل المرفقات تعمل. ثم قمت بتشغيل عملية إعادة طهي (rebake) أخرى للتأكد من الإصلاح، ويبدو أنها لا تزال تعمل بشكل صحيح. يبدو أن المشكلة كانت مقتصرة على Post.raw ولم يكن لها أي علاقة بـ Upload.