سيناريو:
- تم إيقاف خدمة استضافة صور مجانية (
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
آسف على المنشور ذي الجهد المنخفض. أشعر ببعض التوتر اليوم، هههه.
هل يمكن لأحد أن يوجهني في الاتجاه الصحيح؟ الحل الكامل غير مطلوب إذا كان الأمر يتطلب الكثير من المتاعب. شكرًا.