He dedicado un tiempo a este error y quería actualizaros con mis hallazgos. Básicamente, he confirmado todo lo que ya habíais dicho: el proceso de restauración es el siguiente:
migrate_database
reconnect_database
...
extract_uploads
El problema es que, tras la tarea de migración, reconnect_database no cambia a la base de datos deseada, sino que comienza a trabajar con la predeterminada.
Por lo tanto, este código es incorrecto:
def extract_uploads
...
current_db_name =
RailsMultisite::ConnectionManagement.current_db # default
optimized_images_exist = File.exist?(File.join(tmp_uploads_path, 'optimized'))
Una solución chapucera sería usar aquí @current_db, que aún contiene el nombre correcto, en lugar de RailsMultisite::ConnectionManagement.current_db, pero esto no resuelve el problema real de por qué reconnect_database no funciona correctamente.
Necesito profundizar más para encontrar el problema.