Também tive que excluir um arquivo carregado de alguma forma. Não temos a tarefa de limpeza ativada, pois alguns arquivos vêm de uma importação de um software de fórum diferente e ainda não foram referenciados corretamente em posts importados. Portanto, precisei encontrar uma maneira manual. O seguinte funciona, mas não é elegante…
-
Certifique-se de que o upload relevante não esteja mais na versão atual de nenhum post. Dessa forma, o Discourse o considerará órfão e não causará problemas ao excluí-lo.
-
Use o plugin Data Explorer ou outra maneira de consultar o banco de dados do Discourse para listar uploads órfãos, encontrar o relevante e anotar seu
upload_idefilename. Consulta relevante:SELECT uploads.id, uploads.user_id, uploads.created_at, uploads.url, uploads.filesize FROM uploads LEFT OUTER JOIN post_uploads ON uploads.id = post_uploads.upload_id WHERE post_uploads.post_id IS NULL ORDER BY created_at DESC LIMIT 100 -
No banco de dados ou com o console Rails para Discourse, exclua o registro associado da tabela
uploadspelo seu ID de upload. Aqui eu uso o console Rails:Upload.where(id: 16384).first.delete -
Exclua o arquivo associado, incluindo todas as versões otimizadas (se houver, aplica-se a imagens) do sistema de arquivos via SSH. Observe o curinga adicionado antes da extensão do arquivo para capturar também as versões otimizadas, que têm um sufixo aqui. Claro,
cd /path/to/discourse/shared/public/ find . -name 43adade7a4cc64426adb8232a56cb2c3b49fb7c9*.pdf -type f -delete