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

如果我重新烘焙,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 链接的帖子。我应该如何进行?

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

每秒一个帖子比我想要的要慢,但我想确保我不会达到任何 YouTube 的限制(如果存在的话)。对于 12000 个帖子来说,等待时间不算太长。

2 个赞

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