فشل الانتقال إلى S3 أثناء إعادة التحضير

تعديل: يبدو أن الخطأ الخاص بك مختلف عن خطئي، ويبدو أن بعض الصور لم يتم نقلها إلى S3. آسف، لقد قرأت بشكل خاطئ. ربما تكون بعض المعلومات أدناه لا تزال مفيدة. هل قمت بإعداد عمليات التحميل على S3 من خلال هذا الدليل؟ Configure an S3 compatible object storage provider for uploads

@evenif - آسف لسماع أنك تواجه مشاكل في هذا الشأن. كنت أخطط لكتابة دليل لهذا الغرض للأشخاص الذين يواجهون نفس المشاكل، حيث تطلبت كمية كبيرة من المعلومات تجميعها من مواضيع مختلفة. لكنني أنتظر على أمل إصلاح الصور الرمزية، كما يمكنك رؤية أعلاه، لا تزال لدي مشاكل في ذلك.

إذا قمت بتشغيل هذا في Rails، هل تحصل على true أم false؟

SiteSetting.migrate_to_new_scheme

إذا كانت النتيجة false، يمكنك محاولة تعيينها إلى true كما يلي:

SiteSetting.migrate_to_new_scheme = true

ثم إما انتظر قليلاً وعد لاحقًا (أعتقد أن هذا يعمل كل 15 دقيقة حسب ذاكرتي)، ولكن إذا كنت تريد تشغيله فورًا:

Jobs::MigrateUploadScheme.new.execute(nil)

ثم تحقق مرة أخرى لاحقًا إذا كانت SiteSetting.migrate_to_new_scheme الآن false (مما يعني أنه يجب أن يكون قد اكتمل).

ثم قم بتشغيل:
Upload.by_users.where("url NOT LIKE '//%' AND url NOT LIKE '/uploads/default/original/_X/%'").to_a

يجب أن يجد هذا التحميلات التي لا تزال بها مشاكل ولم يتم نقلها. في حالتي، كانت جميع هذه التحميلات موجودة كسجلات في قاعدة البيانات، لكن الصور الفعلية لم تكن موجودة.

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

Upload.find(1).destroy
Upload.find(2).destroy
Upload.find(3).destroy

مع استبدال معرفات التحميل بالأرقام 1، 2، 3، إلخ. انسخ والصق القائمة كاملة في Rails واضغط على Enter. يجب أن يحذف هذا السجلات المشكلة.

ثم، اخرج من Rails (اكتب exit) وكل ما تحتاج إلى فعله هو تشغيل:

rake posts:rebake
أو
rake posts:rebake_uncooked_posts

يسمح لك uncooked بإعادة بدء عملية إعادة الطهي إذا فشلت. أنصحك باستخدام إعادة الطهي العادية إلا إذا كان لديك عدد هائل من التحميلات.

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

يمكنك التحقق من نجاح نقل الصور الرمزية (أو على الأقل لبعض المستخدمين) بتشغيل هذا في Rails لمستخدم يعرض صورة رمزية افتراضية:
User.find_by_username('username').uploaded_avatar

يمكنك أيضًا التحقق من وجود النسخ المحسنة باستخدام هذا:
OptimizedImage.where(upload_id: upload_id).where(version: 2)

3 إعجابات