Rake posts:remap - 0 постов перемаплено!

Я пытаюсь найти и заменить битые изображения, оставшиеся после миграции нашего форума на 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 posts remapped!, хотя есть тысячи подобных постов с такими элементами. Есть какие-то идеи?

Мой второй проход должен был бы затем заменить конец тега с:
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">

А вот это — нет. У меня есть файл в облачном хранилище (blob storage), поэтому я хотел бы либо импортировать его в Discourse, либо просто ссылаться на него из blob storage:

<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?

Думаю, вместо использования remap вам будет проще воспользоваться Ruby в консоли Rails.

Извини, я ничего не понял из того, что ты сказал, Джей :slight_smile:

В сыром виде, как формат файла? Нет, просто обычные веб-форматы. Что именно делать в консоли Rails?

raw — это поле, в котором находится текст, который вы видите в редакторе. То, что вы заменяете, — это то, что вы видите при редактировании поста в UX, верно? (cooked — это обработанный контент, который отображается.)

Выполнение операций для переписывания постов. Этого может быть достаточно, чтобы сделать вас опасным:

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

Преимущество перед задачей Rake в том, что вам не нужно справляться с несколькими уровнями экранирования.