сценарий:
- бесплатный хостинг изображений (
foo-hostв этом примере) прекратил работу, и на форуме discourse сейчас множество изображений, встроенных по прямым ссылкам в постах - изображения были вручную сохранены до того, как ссылки перестали работать, и они существуют на локальной файловой системе
- существует сопоставление между URL изображения и локальным путем к файлу:
get_paths_from_hotlinked_urls()
как мне:
- создать вложение в rails для каждого из этих изображений и
- корректно добавить их в пост?
image_host_domain = 'foo-host.com'
hotlink_posts = Post.where('cooked ~ ?', image_host_domain)
puts "найдено #{hotlink_posts.length} постов с изображениями по прямым ссылкам..."
hotlink_posts.each do |p|
# получить все URL в посте, содержащие 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) 'загрузить' local_paths[i] как вложение
# и корректно связать его с постом
# ***** TODO: 2) заменить прямую ссылку на вложение
# new_raw = new_raw...
end
p.update(raw: new_raw)
end
извините за пост с минимальными усилиями. просто сегодня немного нервничаю, lol
не могли бы вы указать мне правильное направление? полное решение не требуется, если это слишком хлопотно. спасибо