قضيت بعض الوقت في دراسة هذه المشكلة، وأود أن أبلغك بنتائج تحقيقي. باختصار، أكدت كل ما ذكرته بالفعل؛ فعملية الاستعادة تتم على النحو التالي:
migrate_database
reconnect_database
...
extract_uploads
المشكلة تكمن في أنه بعد مهمة الترحيل، لا ينتقل reconnect_database إلى قاعدة البيانات المطلوبة، بل يبدأ العمل على قاعدة البيانات الافتراضية.
لذلك، فإن هذا الكود خاطئ:
def extract_uploads
...
current_db_name =
RailsMultisite::ConnectionManagement.current_db # الافتراضي
optimized_images_exist = File.exist?(File.join(tmp_uploads_path, 'optimized'))
الحل المؤقت هو استخدام @current_db هنا، الذي لا يزال يحتوي على الاسم الصحيح، بدلاً من RailsMultisite::ConnectionManagement.current_db، لكن هذا لا يحل المشكلة الحقيقية المتمثلة في عدم عمل إعادة الاتصال بقاعدة البيانات بشكل صحيح.
أحتاج إلى التعمق أكثر لإيجاد السبب الجذري للمشكلة.