lazy-yt가 lazy-video로 대체된 후 오래된 LazyYT cooked 게시글이 다시 처리되지 않았습니다

지금 내 포럼에 수백 개에서 수천 개에 달하는 빈 게시글이나 유튜브 영상만 누락된 게시글이 있는 것 같습니다. 원인은 다음과 같이 구워진(baked) 게시글 콘텐츠가 생성되는 것 같습니다:

<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을 다시 빌드하면 lazy-video-wrapper를 사용하여 유튜브 영상이 올바르게 구워집니다.

조사를 해본 결과, 이 문제가 아마도 이 PR과 관련이 있는 것 같습니다: DEV: Remove lazy-yt and replace with lazy-videos - 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

유튜브 링크가 포함된 수천 개의 게시글을 다시 구워야 할 것 같습니다. 어떻게 진행해야 할까요?

대량의 게시물을 다시 처리(rebaking)할 때 YouTube에서 속도 제한(rate limit)이 걸릴 수 있다고 생각합니다. 다시 같은 문제를 겪지 않으려면, 지연 시간을 두고 배치별로 처리하는 방식을 고려해 보시는 것이 좋습니다.

이 방법을 수행하는 데 참고할 수 있는 자료를 알려주실 수 있을까요? 활성 터미널 세션이 필요 없는 방식이 좋을 것 같습니다.

왜 내 게시물이 다시 생성(rebake)되지 않았는지에 대해서는 깊이 파고들지 않아서 여전히 미스터리로 남아 있습니다. 만약 누군가가 이 문제를 겪고 게시물을 수동으로 다시 생성하고 싶다면, 저는 다음과 같이 진행했습니다:

Rails 콘솔 진입:

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

그리고 이 스크립트를 실행했습니다:

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

초당 1개씩 처리하는 방식은 제가 원하는 속도보다 느리지만, 혹시 YouTube에 제한이 있을 경우 이를 초과하지 않도록 확실하게 하고 싶었습니다. 12,000개의 게시물에 대해 생각보다 그렇게 긴 대기 시간은 아니었습니다.