Hebrew客户端地区设置中的错误MF翻译字符串导致致命的站点错误

大约 3 天前,在通过 WebUI 升级后出现了这种情况。该网站大约有 2 个月历史,约有 500 名用户,到目前为止运行良好。

我尝试了重启,然后重建,然后刷新 Redis。仍然出现白屏。

接下来该怎么办?禁用插件启动?从备份中擦除并恢复?

相关日志:

rails/production_errors: empty

rails/production:
Started GET "/" for 147.234.130.218 at 2024-07-21 08:38:13 +0000
Processing by ListController#unread as HTML
  Rendered layout layouts/application.html.erb (Duration: 114.3ms | Allocations: 34494)
Completed 500 Internal Server Error in 264ms (ActiveRecord: 0.0ms | Allocations: 88191)

您可能已经尝试过此方法,但为了确保万无一失:安全模式也会失败吗?

直到现在才知道,谢谢,但问题依然存在。
就像我说的,如果我注销(技术上来说是清除 cookie),一切看起来都正常,但登录时就会失败。

我承认我对 Rails 没有经验,也无法让它产生更详细的日志。

对我来说,Rails……嗯,不仅仅是困难。

但是 500 是服务器错误。很有可能是某个插件引起的,但也可能是配置错误。安全模式可以提示问题出在哪里,如果问题发生在用户端。但如果服务器端某个改变功能的东西坏了,安全模式就无能为力了。

当然,你可以禁用所有插件并重新构建,看看情况是否会得到解决。然后再开始找出是哪个插件出了问题。或者至少禁用所有非 Discourse 官方的插件——即使这样也不能完全确定,因为并非所有官方插件都在这里使用。

但这需要花费相当多的时间。也许等到真正懂的人来插手会是更明智的做法。

查看 /logs 目录通常可以发现一些额外细节,或者在尝试加载页面时检查浏览器控制台。

1 个赞

浏览器控制台(Firefox)中没有异常,我看到的唯一一个在请求时创建的日志行已发布在上面的原始主题中。

我的下一步是什么?运行 ./launcher bootstrap 并从备份恢复?

我认为 Jammy 是指 Discourse 的日志。你能以管理员身份登录吗?

1 个赞

我是管理员,当我登录时,信息很少,所以我向内部询问了……

是的,我指的是 YourSite/logs 页面。那里没有记录该错误吗?

1 个赞

哦,天哪……缺少本地化翻译竟然会导致 500 错误?!

编辑:既然这已经成了一个 bug 报告——我不认为问题出在语言文件本身(因为将 *.en.yml 文件复制到 he.yml 并没有帮助),我建议这类问题至少应该优雅地失败并回退到英语。

根据我读到的内容,有没有办法将 git 回滚到此中断之前的最后一个有效提交?如果这通过了测试,我想我们有新的测试要添加。如果您的网站恰好使用了“错误”的区域设置,此提交将无法正常工作。如何才能最快地让网站运行起来,以及如何避免将来发生这种情况?

我不确定这是否仅仅是缺少某个区域设置的问题。从截图来看,您的 MaxMind 设置也是错误的。

我纯粹猜测是其他地方出了问题,导致其他地方也出了问题。我会运行 /.launcher rebuild app 并尝试查找是否出现了什么奇怪的问题。

您主要使用哪种语言?

希伯来语

我已经重建了好几次,但没有消息。

我会尝试进入 rails console 并设置 SiteSetting.default_locale='en'

或者:User.find_by(username: 'my-username').update(locale: 'en')

1 个赞

有什么我需要运行来覆盖用户默认语言环境的吗?因为仅凭这一点并没有改变太多。

哦,太好了。这对我来说奏效了。文本仍然正确显示(从右到左对齐),只有用户界面是英文的。这有点尴尬,但还能用。

那我将遍历所有具有此设置的用户,然后在希伯来语修复后,我再将它们全部迭代回来吗?

我建议花些时间找出本地化错误并修复它,然后再这样做。

我想先让网站运行起来。如果 Crowdin 的翻译出了问题,我将无法修复。