J’ai passé un certain temps sur ce bug et je voulais vous faire part de mes découvertes. En gros, j’ai confirmé tout ce que vous avez déjà dit : le processus de restauration se déroule comme suit :
migrate_database
reconnect_database
...
extract_uploads
Le problème est qu’après la tâche de migration, reconnect_database ne bascule pas vers la base de données souhaitée, mais commence à travailler sur la base par défaut.
Par conséquent, ce code est incorrect :
def extract_uploads
...
current_db_name =
RailsMultisite::ConnectionManagement.current_db # default
optimized_images_exist = File.exist?(File.join(tmp_uploads_path, 'optimized'))
Une solution rapide consisterait à utiliser ici @current_db, qui contient toujours le nom correct, au lieu de RailsMultisite::ConnectionManagement.current_db, mais cela ne résout pas le vrai problème de pourquoi reconnect_database ne fonctionne pas correctement.
Je dois creuser plus profondément pour trouver la cause du problème.