He migrado las cargas de un bucket S3 a otro siguiendo los consejos sugeridos aquí y, con la ayuda adicional de uploads:recover_from_tombstone y posts:rebake, he conseguido que todo funcione de nuevo, pero no todo.
No soy desarrollador de Ruby, por lo que mi capacidad de depuración es limitada. Cuando ejecuto uploads:recover ahora, me da mucha salida como esta:
Advertencia /t/foo/489/5 tenía un incorrecto 4ff3ad05b76e1888161f41fd86da66efc16c290c debería ser 0b029ef3549e72dd5e3498abc7f979736d279a5e almacenando en campo personalizado ‘rake uploads:fix_relative_upload_links’ puede solucionar esto
Advertencia /t/bar/498/4 tenía un incorrecto 0649edb23196a8c84a9d71c04147bd8f0c96d0f7 debería ser f5b4e4bb3eedcd0fb83a06eecc4920f20c5e2bc4 almacenando en campo personalizado ‘rake uploads:fix_relative_upload_links’ puede solucionar esto
Advertencia /t/bar/498/4 tenía un incorrecto 0649edb23196a8c84a9d71c04147bd8f0c96d0f7 debería ser f5b4e4bb3eedcd0fb83a06eecc4920f20c5e2bc4 almacenando en campo personalizado ‘rake uploads:fix_relative_upload_links’ puede solucionar esto
Estas advertencias parecen corresponder a publicaciones con cargas rotas, así que suena bastante prometedor. Sin embargo, cuando ejecuto fix_relative_upload_links, no parece hacer nada.
rake uploads:fix_relative_upload_links --trace
** Invoke uploads:fix_relative_upload_links (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute uploads:fix_relative_upload_links
omitiendo carga faltante en https://foo.com/t/bar/7/2 <img src="/uploads/default/35/f450f88541e87c52.png" width="198" height="70">
omitiendo carga faltante en https://foo.com/t/bar/7/2 <img src="/uploads/default/36/0b73d33d9df37a66.png" width="120" height="43">
(Creo que los dos archivos omitidos son cargas antiguas anteriores a S3. No hay ninguna salida para las cargas de S3 que generaron las advertencias anteriores).
He encontrado un informe de un problema similar de hace un año, pero no puedo ver informes similares que incluyan una solución.
Aprecio que no esté haciendo algo que esté oficialmente soportado, pero agradecería cualquier indicación.
Solo me di cuenta de este problema unos días después de la migración. Si lo hubiera notado de inmediato, habría intentado volver a migrar usando una restauración fresca de la base de datos/S3, pero como no quiero perder ninguna publicación reciente, tendré que trabajar con el sitio en vivo a partir de ahora.
Gracias.
Editar: También he intentado convertir las URL upload:// rotas y compararlas con los registros en la tabla de cargas y no estoy mucho más sabio.
Cuando inspecciono una URL upload:// que funciona, se mapea a un registro de la tabla uploads con una URL válida, pero cuando inspecciono una rota, también se mapea a un registro con una URL válida. Parece que hay datos válidos en la base de datos y los archivos existen en S3 en la URL asignada en la tabla de cargas. Puedo acceder a las URL de S3 en mi navegador sin problemas, así que no tengo idea de por qué no se están mostrando.