منشورات Rake:remap - لم يتم إعادة تعيين أي منشورات!

أحاول البحث عن صور معطلة متبقية من هجرتنا من المنتدى إلى Discourse واستبدالها، وقد حققت نجاحًا كبيرًا (أحب أمر remap!) لكنه لا يجد أي شيء لاستبداله في هذه الأمثلة، ولا أستطيع رؤية أي خطأ، هل يمكنك ذلك؟

محتوى المثال:

<img src="https://londonbikers.com/images/transparent.png" alt="PICT0738.JPG" data-orig-src="upload://1yz82u6bbkaAQ7xP06qNTmX9qy3.JPG" width="666" height="500" class="d-lazyload">

و

<img src="https://londonbikers.com/images/transparent.png" alt="Rhonda.JPG" data-orig-src="upload://vXQ67D17QssTe5cu6lamJ5XB5Ep.JPG" width="590" height="500" class="d-lazyload">

أحتاج إلى القيام بذلك في مرحلتين لأنني أحتاج إلى الاحتفاظ بمحتوى وسم alt وإعادة بناء عنصر img حوله. يفشل الأمر في عملية remap الأولى:

أي البحث عن:
<img src="https://londonbikers.com/images/transparent.png" alt="

والاستبدال بـ:
<img src="https://londonbikersarchive.blob.core.windows.net/forum-attachments/

لقد افترضت أن علامات الاقتباس المزدوجة تحتاج إلى الهروب باستخدام شرطة مائلة للخلف؟ لذا استخدمت هذا الأمر:

rake posts:remap["<img src=\"https://londonbikers.com/images/transparent.png\" alt=\"","<img src=\"https://londonbikersarchive.blob.core.windows.net/forum-attachments/"]

لكنني أُخبر أن 0 منشورات تم إعادة تعيينها! بينما هناك الآلاف من المنشورات التي تحتوي على هذه العناصر. أي أفكار؟

ستكون مرحلتي الثانية هي إعادة تعيين نهاية الوسم من:
width="666" height="500" class="d-lazyload">

إلى:
/>

أوه، انتظر قليلاً، بعض هذه الصور تعمل. هل هذه وظيفة المرفقات في Discourse؟ هل هناك منطق عرض مخصص يعمل بدلاً من أن تكون هذه سلاسل HTML في قاعدة البيانات؟

على سبيل المثال، تظهر هذه الصورة:

<img src="https://londonbikers.com/uploads/default/original/1X/25b381a9dc03f023a1c5d0af4f2f3132dfbf45c7.jpg" alt="The_rides_0010.jpg" width="640" height="480" class="d-lazyload">

لكن هذه لا تظهر. يمكنني وضع الملف في تخزين سحابي (cloud blob storage)، لذا أود إما استيراده إلى Discourse أو الإشارة إليه مباشرة من تخزين السحب:

<img src="https://londonbikers.com/images/transparent.png" alt="__2.jpg" data-orig-src="upload://411oUp2Yn6wumJCRAiFptkwTF58.jpg" width="662" height="500" class="d-lazyload">

هل هذه الصور في raw؟

أعتقد أنك ستجد أنه من الأفضل استخدام Ruby في وحدة تحكم Rails بدلاً من استخدام remap.

أعتذر، لم أفهم أيًا من ذلك يا جاي :slight_smile:

خام، مثل تنسيق الملف؟ لا، فقط تنسيقات الويب المعتادة. تفعل ماذا في وحدة تحكم Rails؟

raw هو الحقل الذي يحتوي على النص الذي تراه في المحرر. الأشياء التي تقوم باستبدالها هي ما تراه عند تعديل المنشور في واجهة المستخدم، أليس كذلك؟ (cooked هو ما تم معالجته وما يتم عرضه.)

أقوم بتنفيذ عمليات لإعادة كتابة المنشورات. قد يكون هذا كافيًا لجعلك خطرًا:

bps = Post.where("raw like '%//SOME-STRING%'")
bps.each do |post|
  post.raw.gsub!(/OLD/,'NEW')
  post.save
end

الميزة مقارنة بمهمة Rake هي أنك لا تضطر للتنقل بين مستويات متعددة من الهروب.