أقوم بنقل موقع موجود من تخزين التحميلات محليًا إلى تخزينها في S3، باتباع هذا الدليل. كل شيء يعمل بشكل جيد للتحميلات الجديدة، وقد تأكدت من أنها تظهر في S3 عن طريق التحقق يدويًا. ومع ذلك، عندما أحاول تشغيل rake uploads:migrate_to_s3، أحصل على المخرجات التالية:
يرجى ملاحظة أن الترحيل إلى S3 غير قابل للعكس حاليًا!
[CTRL+c] للإلغاء، [ENTER] للمتابعة
ترحيل التحميلات إلى S3 لـ 'default'...
لم يتم ترحيل بعض التحميلات إلى المخطط الجديد. تشغيل الترحيل، قد يستغرق هذا بعض الوقت...
تم إلغاء rake!
FileStore::ToS3MigrationError: لم يكن من الممكن ترحيل بعض التحميلات إلى المخطط الجديد. تحتاج إلى إصلاح هذا يدويًا.
/var/www/discourse/lib/file_store/to_s3_migration.rb:162:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:65:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:127:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:106:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:90:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:104:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:100:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(انظر التتبع الكامل عن طريق تشغيل المهمة مع --trace)
بالنظر إلى الملف الذي ينشأ منه الخطأ، lib/file_store/to_s3_migration.rb، أرى أنه يبدو أنه يقوم بإجراء فحص على جدول uploads للصفوف حيث url NOT LIKE '//%' AND url NOT LIKE '/%#{seeded_image_url}%'. في حالتي، أفترض أن seeded_image_url يتم حله إلى uploads/default/original/_X/.
لقد قمت بتشغيل نفس الفحص على قاعدة البيانات يدويًا، ووجدت ما يلي:
لا أقلق بشأن الاثنين السفليين، أفترض أن هذه مجرد آثار عرضية للتبديل - إذا لم يكن لديهم
url، فمن المفترض أن الموقع لا يعرف مكان العثور عليها، لذا يمكن إزالتها بأمان. أنا أكثر قلقًا بشأن الشعارات، مع ذلك. هذه هي الشعارات الافتراضية، والتي لا نزال نستخدمها بالفعل، ولكنها موزعة مع قاعدة الكود بدلاً من تحميلها.
هل من الآمن إضافة شرط ثالث في to_s3_migration.rb، السطر 146، يتجاهل أيضًا التحميلات حيث يبدأ عمود URL بـ /images/؟ أم يجب عليّ فقط حذف تلك الصفوف لأن تلك الملفات تتم معالجتها بشكل منفصل عن التحميلات الآن، وهذا مجرد أثر من إصدار أقدم من Discourse؟ أم أنني أسأت فهم ما تفعله المهمة (لست على دراية كبيرة بـ Rails) والمشكلة شيء آخر؟
