看起来类似的问题又出现了:
在 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 时,这将出现问题;我一直在尝试修复我们分支的“新建主题按钮”组件,但看起来上游版本也会出现问题。
再次提问,我该如何调试这个问题?![]()