多站点将上传内容恢复为“默认”而非实际数据库名称

我花了一些时间研究这个 bug,想向您汇报我的发现。基本上,我确认了您之前所说的所有内容,恢复流程如下:

migrate_database
reconnect_database
...
extract_uploads

问题在于,迁移任务完成后,reconnect_database 并没有切换到目标数据库,而是开始操作默认数据库。

因此,这段代码是错误的:

def extract_uploads
  ...
  current_db_name = 
  RailsMultisite::ConnectionManagement.current_db # default
  optimized_images_exist = File.exist?(File.join(tmp_uploads_path, 'optimized'))

一个权宜之计是在此处使用 @current_db,它仍然包含正确的数据库名称,而不是 RailsMultisite::ConnectionManagement.current_db,但这并没有解决 reconnect_database 为何无法正常工作这一根本问题。

我需要深入排查以找到问题所在。