Um dos meus posts perdeu suas imagens aleatoriamente. Executei PostCustomField.where(name: Post::MISSING_UPLOADS) no console do Rails e obtive o seguinte:
[#<PostCustomField:0x00005636227c20a0
id: 7335,
post_id: 36,
name: "missing uploads",
value:
"[\"upload://ljcw6gjRoPMD0IB5Vcc6K23VXIA.png\",
\"upload://v6caNgjm6wDrHzN8MQdXYnlNJEs.png\",
\"upload://bn2lC9z0Xp4Fit00p6KepGMZZ2h.png\",
\"upload://omhuL50n5VfAxY8Reyf2rQFoEWb.jpeg\",
\"upload://yJCRzx9SogObwuj1En0QciZdntF.jpeg\",
\"upload://wOeXgaPEBBia8oS0xxbOr5NKNWo.gif\",
\"upload://fuXMNACp8WoEHEr3ayciiVJjmNl.png\",
\"upload://MTIX7g8Wu11qaJasGg5yGsFvJA.jpeg\",
\"upload://oKle1GsOlPD85zeHiKRdUGJCCEM.jpeg\",
\"upload://zY43AR6Xpga92HNzdEnxQRIVpYE.gif\",
\"upload://ufigIPfGEPbDInHP4co0I0YDT51.png\",
\"upload://h7A1BJjNwZZwuUTYWXCeASk7UAh.png\",
\"upload://gmFGijsek8NmtfqBwAguIgkzDFP.png\",
\"upload://qPFQBe9zvnTmOnqMhpofQF3oqCh.png\"]",
created_at: Tue, 18 Feb 2020 17:44:40 UTC +00:00,
updated_at: Tue, 18 Feb 2020 17:44:40 UTC +00:00>,
Como são apenas 14 imagens em um único post, estou bem em corrigir manualmente, mas não faço ideia de como encontrar as imagens originais no meu bucket S3. Tentei pesquisar pelos nomes dos arquivos aqui, mas não obtive resultados:
O problema é que o console web do S3 parece pesquisar apenas na pasta atual. Se eu navego até uma pasta específica e procuro por um arquivo que está dentro dela, ele o encontra. Se eu subo para a pasta pai, ele não o encontra.
Obrigado, Michael. Isso seria útil, mas não consigo descobrir como obter o caminho completo. No console do Rails, posso fazer isso, mas não me dá o nome do arquivo real:
Depende de muitos fatores, mas como o arquivo está supostamente faltando, ele pode estar no local errado de qualquer forma. Agora que você conhece o nome do arquivo, não é muito trabalho navegar pelo S3 e ver se encontra um arquivo correspondente.
Você também pode tentar encontrar um Upload no banco de dados onde o sha1 corresponda a essa string e o registro de upload tenha um caminho. Mas, novamente: se tudo estivesse correto, não estaríamos discutindo esse problema.