Старые посты LazyYT не были обновлены после замены lazy-yt на lazy-video

Похоже, что сейчас на моих форумах есть сотни или тысячи пустых постов или постов, в которых отсутствуют видео с YouTube. Причина, судя по всему, в том, что «запечённое» содержимое постов выглядит так:

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

Если я пересоберу HTML, видео с YouTube будут обработаны корректно с использованием lazy-video-wrapper.

Я немного покопался, и, похоже, эта проблема может быть связана с этим PR: DEV: Remove lazy-yt and replace with lazy-videos by jancernik · Pull Request #20722 · discourse/discourse · GitHub По какой-то причине после этого изменения не все посты были перепечены. Я не специалист по SQL или Discourse, поэтому не уверен, проблема ли это в самом скрипте миграции или в том, что он на каком-то этапе не сработал.

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

Похоже, мне нужно перепечь несколько тысяч постов со ссылками на YouTube. Как мне лучше всего это сделать?

Я думаю, что при повторной обработке большого количества постов YouTube может наложить ограничение на частоту запросов. Возможно, стоит выполнять это партиями с задержкой, чтобы избежать повторного срабатывания ограничения.

Не могли бы вы указать мне ссылку на источник, где объясняется, как это сделать? Предполагаю, что способ, не требующий активного сеанса терминала.

Я не стал углубляться в то, почему мои посты не были пересозданы, так что это остаётся загадкой. Если кто-то столкнётся с этой проблемой и захочет вручную пересоздать свои посты, вот как я это сделал:

Войдите в консоль Rails:

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

Затем я выполнил этот скрипт:

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

Один пост в секунду — медленнее, чем мне хотелось бы, но я хотел быть уверенным, что не превышу какие-либо лимиты YouTube, если они существуют. Для 12 000 постов ожидание было не таким уж долгим.