escenario:
- un host de imágenes gratuito (
foo-hosten este ejemplo) ha dejado de funcionar y un foro de Discourse tiene un montón de imágenes enlazadas en sus publicaciones - las imágenes se respaldaron manualmente antes de que se corrompieran y existen en el sistema de archivos local
- existe un mapeo entre la URL de la imagen y la ruta del archivo local:
get_paths_from_hotlinked_urls()
cómo puedo:
- crear un adjunto en Rails para cada una de estas imágenes y
- añadirlas correctamente a la publicación?
image_host_domain = 'foo-host.com'
hotlink_posts = Post.where('cooked ~ ?', image_host_domain)
puts "encontrados #{hotlink_posts.length} posts con imágenes enlazadas..."
hotlink_posts.each do |p|
# obtener todas las URLs en la publicación que contienen image_host_domain
urls = URI.extract(p.cooked).select { |url| url[/#{Regexp.quote(image_host_domain)}/] }
local_paths = get_paths_from_hotlinked_urls(urls)
new_raw = p.raw
urls.each.with_index do |url, i|
next if local_paths[i].blank?
# ***** TODO: 1) 'subir' local_paths[i] como adjunto
# y asociarlo correctamente con la publicación
# ***** TODO: 2) reemplazar el enlace directo con el adjunto
# new_raw = new_raw...
end
p.update(raw: new_raw)
end
disculpen la publicación de bajo esfuerzo. solo me siento un poco estresado hoy, lol
¿alguien puede indicarme la dirección correcta? no se requiere una solución completa si es demasiado complicado. gracias