Antiguas publicaciones preparadas de LazyYT no han sido reprocesadas después de que lazy-yt fuera reemplazado por lazy-video

Parece que ahora mismo en mis foros tengo cientos o miles de publicaciones en blanco o publicaciones a las que simplemente les faltan videos de YouTube y la razón parece ser que el contenido de las publicaciones horneadas se ve así:

<div class="cooked">
<div class="lazyYT" data-youtube-id="WJxSNbAer9M" data-youtube-title="Starset - Die For You (Official Audio)" data-width="480" data-height="270" data-parameters="feature=oembed&amp;wmode=opaque">
</div>
</div>

Si reconstruyo el HTML, los videos de YouTube se hornean correctamente usando lazy-video-wrapper.

Investigué un poco y parece que este problema podría estar relacionado con esta PR: DEV: Remove lazy-yt and replace with lazy-videos by jancernik · Pull Request #20722 · discourse/discourse · GitHub Por alguna razón, después de este cambio, no todas las publicaciones se volvieron a hornear. No soy un experto en SQL ni en Discourse, así que no estoy seguro de si el problema está en el script de migración en sí o en que falló en algún momento.

class RebakeLazyYtPosts < ActiveRecord::Migration[7.0]
  def up
    execute <<~SQL
      UPDATE posts SET baked_version = 0
      WHERE cooked LIKE '%lazyYT-container%'
    SQL
  end

Parece que necesito volver a hornear un par de miles de publicaciones con enlaces de YouTube. ¿Cómo debería proceder?

1 me gusta

Creo que es posible que YouTube te limite la velocidad cuando vuelves a procesar una gran cantidad de publicaciones. Quizás quieras considerar hacerlo en lotes con un retraso para evitar que vuelva a suceder.

1 me gusta

¿Podrías indicarme una referencia sobre cómo hacerlo? Supongo que de una manera que no requiera una sesión de terminal activa.

No profundicé en por qué mis publicaciones no se volvieron a hornear, así que sigue siendo un misterio. Si alguien se encuentra con este problema y quiere volver a hornear manualmente sus publicaciones, así es como lo hice:

Entra en la consola de Rails:

cd /var/discourse
./launcher enter app
rails c

Y ejecuté este script:

posts = Post.where ("cooked like '%lazyYT%'")
posts.each do |p|
    p.rebake!     
    sleep 1 
end

Una publicación por segundo es más lento de lo que me gustaría, pero quería estar extra seguro de no alcanzar ningún límite de YouTube si los hubiera. Para 12.000 publicaciones, la espera no fue tan mala.

2 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.