这里有一个安装方法列表:https://meta.discourse.org/t/set-up-a-discourse-development-environment/182882。我有一个非 Docker 的开发站点(使用的是 Ubuntu 指南)。如果可能的话,我认为非 Docker 方法会给你带来最好的结果。我使用它的原因之一是不必处理 Discourse 和我正在开发的本地其他应用程序之间的 API 请求的网络问题。它也比 Docker 快。
应该起作用的。请确保你生成 SSO payload 的应用程序没有将布尔值 true 转换为 1。这是一个常见问题。为了解决这个问题,你可以将 SSO payload 中的任何布尔值设置为字符串 \"true\" 或 \"false\"。Discourse 会正确解析它们。首先检查一下是否是这个问题。也可能是其他问题。处理 avatar_force_update 的代码有点复杂,但可读性强:discourse/app/models/discourse_connect.rb at 187204705323b650d61ed25862eb1a0c733aa63c · discourse/discourse · GitHub
编辑:关于 SSO payload 中的布尔值问题,我想说得更准确一些,在生成 SSO payload 的过程中,环境会将布尔值 true/false 转换为字符串。Discourse 期望的字符串是 \"true\" 或 \"false\",其他编程环境可能会以不同的方式处理它们。例如:
PHP:
wp> strval(true)
=> string(1) "1"
与 Ruby 相反:
irb(main):001> true.to_s
=> "true"
Python(我不确定 Discourse 如何处理这个):
>>> str(True)
'True'