Rake posts:remap - 0 post rimappati!

Sto cercando di trovare e sostituire alcune immagini rotte rimaste dalla nostra migrazione del forum a Discourse e ho avuto grandi risultati (amo il comando remap!), ma non trova nulla da sostituire per questi esempi e non riesco a vedere nulla di sbagliato, tu sì?

Contenuto di esempio:

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

e

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

Devo farlo in due passaggi perché devo mantenere il contenuto del tag alt e ricostruire l’elemento img attorno ad esso. Sta fallendo nel primo remap:

cioè TROVA:
<img src="https://londonbikers.com/images/transparent.png" alt="

e SOSTITUISCI con:
<img src="https://londonbikersarchive.blob.core.windows.net/forum-attachments/

Ho assunto che le virgolette doppie debbano essere escapate con un backslash? Quindi ho usato questo comando:

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

Ma mi viene detto 0 post rimappati! quando ci sono migliaia di post del genere con quegli elementi. Qualche idea?

Il mio secondo passaggio sarebbe quindi rimappare la fine del tag da:
width="666" height="500" class="d-lazyload">

a:
/>

Oh, aspetta, alcune di queste immagini funzionano. È la funzionalità di allegati di Discourse? C’è una logica di rendering personalizzata in atto, o si tratta semplicemente di stringhe HTML nel database?

Ad esempio, questa mostra una foto:

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

Ma quest’altra no. Posso avere il file nell’archiviazione blob cloud, quindi vorrei importarlo in Discourse o semplicemente fare riferimento a quello nell’archiviazione blob:

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

Quelle immagini sono in raw?

Penso che invece di farlo con remap, sarai meglio utilizzando Ruby nella console di Rails.

Mi dispiace, non ho capito nulla di quello che hai detto, Jay :slight_smile:

Raw, come formato di file? No, solo i normali formati web. Che cosa stai facendo nella console di Rails?

raw è il campo in cui si trova il testo che vedi nell’editor. Quello che stai sostituendo è ciò che vedi se modifichi il post nell’interfaccia utente, giusto? (cooked è il contenuto elaborato e viene quello che viene visualizzato.)

Sto eseguendo operazioni per riscrivere i post. Questo potrebbe bastare per farti diventare pericoloso:

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

Il vantaggio rispetto al task rake è che non devi gestire più livelli di escape.