Ubuntu开发安装时站点设置每次都不同

你好,我正在搭建一个论坛网站。

我尝试修改了站点设置并刷新页面,但有时无法获取到更新后的值。

每次刷新似乎都显示的是之前缓存的值。

我调整了 Puma worker 的数量,但问题依旧。

已确认修改后的值已写入数据库。

这是 message_bus 的问题吗?
如果是,我该如何调整相关配置?

请回复我,谢谢!

1 个赞

您究竟是如何安装 Discourse 的?

1 个赞

我也遇到了同样的问题。如果将 Puma 的 worker 数量设置为 1,问题就会消失。看起来每个 worker 都持有站点设置对象的一个副本,当一个 worker 执行更新时,其他 worker 永远不会察觉到该更新。

不幸的是,这个问题也存在于包含多个 Discourse 服务器的扩展环境中,因此仅仅将 worker 数量设置为 1 并不能彻底解决问题。

我需要问同样的问题:您具体是如何安装 Discourse 的?

如果按照唯一支持方法 进行安装,我们不会使用 Puma,因此不会出现此错误。

1 个赞

我正在尝试进行插件开发,因此我按照 README 中的链接设置了 Ubuntu 开发环境。当我运行命令 bundle exec rails server --binding=0.0.0.0 时,应用会通过 Puma 启动。

我见过的类似情况只有:如果服务器已停止,浏览器有时会返回一个 JSON 文件或网站的缓存版本。

服务器还在运行吗?

我还会做的另一件事是打开另一个终端并运行:

./bin/rails c

然后用类似下面的方式在那里修改设置:

SiteSetting.title=“我的标题”

服务器仍在运行。我已从日志中确认 Discourse 正在处理该请求。在调试此问题时,我也已在浏览器的开发者控制台中禁用了缓存。

为什么你在进行插件开发时要进行扩展部署?

这些症状表明你的内部 MessageBus 出现了故障,因此你的 Redis 设置可能存在问题。浏览器中的实时更新也可能无法正常工作。

2 个赞

我并不是为了插件开发而扩展功能,只是在几种不同场景下测试,以缩小问题范围并确保我理解了它。如果 MessageBus 本应处理这种情况,我会进一步研究。

在调试过程中,我注意到 app/models/site_setting.rb 仍在触发 :site_setting_saved 事件,该事件似乎已从应用中移除,并被 :site_setting_changed 取代。现在已没有任何监听器监听 :site_setting_saved 事件。

你也可以使用 bin/unicorn 在开发环境中运行 Unicorn Web 服务器。

1 个赞