通过 rake 升级主题组件无法工作

我们有一个主题组件,通过 rake 命令进行安装。该插件及其通过 rake 命令的安装过程运行完全正常。当我们通过管理界面(例如 /admin/customize/themes/40)进行升级时,升级也完全正常。问题出现在我们尝试使用 rake 命令从命令行进行升级时。输出结果完全符合预期,但更改并未生效。这看起来像是一个 bug 吗?

$ rake themes:install -- '--{"discourse-login-modal": {"url": "https://github.com/example/discourse-login-modal.git", "add_to_all_themes": true}}'
discourse-login-modal: 已安装。正在从远程更新。

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

提供更多问题详情。运行升级的 rake 命令后,我的主题组件没有发生任何可见变化,但之后管理 UI 认为升级已应用(忘记截图了)。

在我对主题组件进行后续更改后,管理 UI 现在显示有可用升级,但在应用时却收到警告,提示本地更改将被覆盖。这些更改正是我原本希望通过 rake install 命令应用的内容,但该命令实际上并未生效。


你好 @markvanlan,感谢你在安装主题的 rake 命令上所做的努力!你知道为什么通过 rake install 进行升级无法正常工作吗?

我会在本周晚些时候查看这个问题。我之前并不知道 rake 命令无法运行。

我没能弄清楚为什么更新无法工作,但想到了一个变通方法——添加一个卸载命令。在使用 rake install 命令之前先卸载主题,似乎可以解决问题。

我提交了一个简短的 PR 来确认这种方法是否可行:[WIP] FEATURE: Rake task to uninstall theme by chandandi · Pull Request #10138 · discourse/discourse · GitHub

很抱歉忘记跟进此事!

我想到这可能是无法更新的原因。如果我的判断正确,这应该能很快修复。

这里有些非常奇怪。当 ThemesInstallTask 更新远程主题时,远程信息已正确更新(显示最新的 SHA,且如您所指出的,commits_behind 为 0)

但数据库中的 SCSS 并未更新。我原本以为是缓存未失效,但事实并非如此!数据库中的 SCSS 没有更新。

此截图中的值应有所不同

查看管理员主题控制器处理更新的方式与任务更新远程主题的方式,我看不出有何不同。

:male_detective: :mag:

我会揭开这个谜团。

我已经查明问题根源并创建了 PR。我在描述中解释了该问题。

已合并!更新已修复。