Eu queria resolver o problema de migração de uploads há praticamente uma eternidade, e agora, com a ajuda de um chatbot de IA, consegui. Compartilhando minhas anotações para quem acompanha! A postagem acima do Jay continha o ingrediente secreto necessário para eu começar, então obrigado por isso.
Minha primeira tentativa funcionou exatamente como o Jay previu. Se você criar uma lista de URLs para as imagens no site de origem e colar isso em uma postagem no seu novo site, elas serão baixadas. Download remote images to local deve estar habilitado para que isso funcione.
Meu chatbot de IA criou um script para isso, que compartilharei aqui para futuros viajantes.
Resumo
Execute isso no console do rails:
topic = Topic.find(=TOPIC_ID=)
posts = Post.where(topic_id: topic.id)
urls = []
posts.each do |p|
UploadReference.where(target: p).each do |ref|
urls << "=SOURCE_URL=#{ref.upload.url}"
end
end
puts urls.uniq.join("\n")
puts "\nTotal: #{urls.uniq.count} upload(s)"
Migrando uma categoria inteira? Substitua as duas primeiras linhas por:
topic_ids = Topic.where(category_id: =TOPIC_ID=).pluck(:id) posts = Post.where(topic_id: topic_ids)Neste caso, =TOPIC_ID= é o ID da sua categoria, encontrado no final da URL em Admin → Categories.
No entanto, para mim, isso não foi suficiente, pois também tenho PDFs que não são baixados localmente automaticamente.
Então, pedi ao meu chatbot para me escrever um script em Python para migrar os uploads. Funciona muito bem, então estou feliz em compartilhá-lo também. Se você quiser testá-lo ou tiver feedback, aqui está o repositório.
Também pedi ao meu chatbot para me escrever um runbook mais completo sobre como mover tópicos ou categorias, que está disponível no meu discourse.