主题组件更新总是安装旧版本(通过 rake 或手动)

看起来类似的问题又出现了:

在 Discourse 3.5.2 中,每次我尝试从源代码安装某个组件时,它总是安装该组件的旧版本。我可以通过导出确认这一点:它包含旧的 JavaScript 代码。此外,在浏览器开发者工具中,如果我搜索某个文件,它总是显示该文件的旧版本。如果我在 about.json 中更改了名称后重新构建,它仍然显示旧名称。

无论我是从 Components 页面手动从 GitHub 安装,还是从 app.yml 安装,都会出现这种情况。

根据 Install a Theme programatically ,我的 app.yml 结尾部分如下:

## 任何构建后要运行的自定义命令
run:
  - exec: echo "开始自定义命令"
  ## 如果你想为首次注册设置 'From' 邮箱地址,请取消注释并修改:
  ## 在收到第一封注册邮件后,重新注释该行。它只需要运行一次。
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"

  - file:
      path: /tmp/mythemes.yml
      contents: |
        discourse-new-topic-button:
          url: https://github.com/toad/discourse-new-topic-button-theme-component.git
          add_to_all_themes: true
  
  # 旧仓库 - 看起来我们需要为每次提交创建一个新仓库,因为某种奇怪的缓存?
  
  #url: https://github.com/toad/discourse-new-topic-button.git
  #url: https://github.com/toad/discourse-new-topic-button-theme-component.git
  #url: https://github.com/toad/discourse-new-topic-button-mod.git

  - exec:
      cd: $home
      cmd: su discourse -c 'bundle exec rake themes:install < /tmp/mythemes.yml'

  - exec: echo "自定义命令结束"

输出结果如下:

I, [2025-11-12T01:43:24.323446 #1]  INFO -- : > echo "开始自定义命令"
I, [2025-11-12T01:43:24.325106 #1]  INFO -- : 开始自定义命令

I, [2025-11-12T01:43:24.327203 #1]  INFO -- : File > /tmp/mythemes.yml  chmod:   chown: 
I, [2025-11-12T01:43:24.327361 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:install < /tmp/mythemes.yml'
I, [2025-11-12T01:43:32.778093 #1]  INFO -- : discourse-new-topic-button: 从 https://github.com/toad/discourse-new-topic-button.git 安装

结果:
 已安装:1
 已更新:0
 错误:0
 跳过:0

I, [2025-11-12T01:43:32.778262 #1]  INFO -- : > echo "自定义命令结束"
I, [2025-11-12T01:43:32.779694 #1]  INFO -- : 自定义命令结束

如果我在运行 rebuild 前不删除组件,它会显示“已更新”而不是“已安装”。无论哪种情况,最终我们得到的都是组件的旧版本。

离开页面、Shift+刷新等操作没有任何效果。将其移动到不同的仓库也没有任何区别,因此不是按 URL 缓存(其中两个仓库是相同的)。

我也尝试过在容器内直接使用 rake 构建。

有没有什么办法可以调试这个问题?能够查看构建日志会很有帮助,但使用 --verbose 参数的 rake 并没有提供更多信息。

我的设置略有不同(这是在生产环境中使用 rootless Docker,尽管这是暂存服务器)。

求助!

看起来它总是构建 990dec4f3e8411215122c74b2684782244eeffa2 提交之前的内容,该提交将“新建主题按钮”迁移到了 Glimmer 支持,而 3.6 版本将需要这个功能。因此,当我升级到 3.6 时,这将出现问题;我一直在尝试修复我们分支的“新建主题按钮”组件,但看起来上游版本也会出现问题。

再次提问,我该如何调试这个问题?:neutral_face:

1 个赞

兼容性文件为低于 3.6 版本的 Discourse 安装安装特定版本:

3 个赞

哎呀!谢谢了。:grinning_face:

不过有意思的是,Glimmer 的东西应该和 3.5 兼容的。所以这个上游移植到 Glimmer 的部分可能还比较不成熟。我猜我得试一下,也许看看 3.6 版本。谢谢。

更新:虚惊一场,虽然添加了更多 3.6 特有的改动,但 3.5 版本已经修复了关于移除控件的警告。所以我现在很满意。

附注:移动按钮(我的改动)修复了一个上游的 bug(分类未自动检测)。详见此处: