lazy-ytがlazy-videoに置き換えられた後、Old LazyYTの投稿が再ベイクされていません

現在、フォーラムに何百、何千もの空の投稿、または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
end

数千件のYouTubeリンクを含む投稿を再ベイクする必要があるようです。どのように進めればよいでしょうか?

「いいね!」 1

YouTubeのレート制限に引っかかっている可能性があります。大量の投稿を再ベイクする場合、再度制限に達しないように、遅延を設けてバッチ処理することを検討した方が良いかもしれません。

「いいね!」 1

それを実行する方法についての参照先を教えていただけますか?アクティブなターミナルセッションを必要としない方法だと思います。

投稿が再ベイクされなかった理由を詳しく調べなかったので、謎のままです。もし誰かがこの問題に遭遇し、手動で投稿を再ベイクしたい場合は、私が試した方法は以下のとおりです。

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秒間に1つの投稿は、私が望むよりも遅いですが、YouTubeの制限(もしあれば)にヒットしないように、特に確実にしたかったのです。12,000件の投稿では、それほど待つことはありませんでした。

「いいね!」 2

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