我也是,我今天也升级了。所以是在 Discourse 里?
现在我再深入研究一下。
嗯,你的问题是服务器端错误 @Jagster 我认为那是不同的问题。另外,这个更改尚未合并,因此不应影响自托管网站。
确实如此,但我已登录。OP 的错误是针对匿名用户的。而且,在这两种情况下,它都发生在类别上。
来自 Discourse:
HasCustomFields::NotPreloadedError (尝试访问“Category”类上未预加载的自定义字段“sort_topics_by_event_start_date”。
和
Message
HasCustomFields::NotPreloadedError (尝试访问“Category”类上未预加载的自定义字段“sort_topics_by_event_start_date”。为防止 N+1 查询,这是不允许的。)
app/models/concerns/has_custom_fields.rb:203:in `[]'
(eval):47:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:531:in `serialize_data'
app/controllers/application_controller.rb:540:in `render_serialized'
app/controllers/categories_controller.rb:408:in `categories_and_topics'
app/controllers/categories_controller.rb:99:in `categories_and_latest'
app/controllers/application_controller.rb:422:in `block in with_resolved_locale'
app/controllers/application_controller.rb:422:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:389:in `call'
lib/middleware/gtm_script_nonce_injector.rb:10:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:233:in `call'
Backtrace
app/models/concerns/has_custom_fields.rb:203:in `[]'
plugins/discourse-calendar/plugin.rb:88:in `block (2 levels) in activate!'
(eval):47:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:456:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:124:in `block in serialize'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `map'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `serialize'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
所以……接下来我应该禁用日历插件,对吗?
编辑
侧边栏上的分类链接可以正常工作,其他所有分类链接都会导致错误。
我已将此错误缩小范围。仅当类别包含子类别时才会发生。/categories 也会导致 500 错误。
而且我仍然不确定这是否来自 Calender。如果是,这是安全模式无效的另一个案例吗?
但 Lockdown 会给出这个:
消息
HasCustomFields::NotPreloadedError (尝试访问“Category”类上未预加载的自定义字段“redirect_url”。为防止 N+1 查询,此操作被禁止。)
app/models/concerns/has_custom_fields.rb:203:in `[]'
(eval):49:in `_fast_attributes'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
lib/freedom_patches/ams_include_without_root.rb:57:in `include!'
app/controllers/application_controller.rb:531:in `serialize_data'
app/controllers/application_controller.rb:540:in `render_serialized'
app/controllers/categories_controller.rb:408:in `categories_and_topics'
app/controllers/categories_controller.rb:99:in `categories_and_latest'
app/controllers/application_controller.rb:422:in `block in with_resolved_locale'
app/controllers/application_controller.rb:422:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:64:in `call'
lib/middleware/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:389:in `call'
lib/middleware/gtm_script_nonce_injector.rb:10:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:233:in `call'
回溯
app/models/concerns/has_custom_fields.rb:203:in `[]'
plugins/discourse-category-lockdown/plugin.rb:18:in `block (2 levels) in activate!'
(eval):49:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:124:in `block in serialize'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `map'
active_model_serializers (0.8.4) lib/active_model/serializer/associations.rb:123:in `serialize'
环境
HTTP HOSTS: foorumi.katiska.eu
所以我很确定这并非来自插件,而是来自 Discourse 本身,但同样,我不是开发人员。
我是 OP,我没有安装 Calendar 插件(我使用的是不支持该插件的托管 Discourse 级别)。
“子类别导致此问题”是可能的原因……我现在无法确定,因为我的网站上很多东西都坏了。但我确实刚刚创建了一个类别……所以如果(我不记得它是如何工作的)它默认将新类别放在“Public”下,那么我刚刚创建了我的第一个子类别(意外地)。
错误确实看起来是这样…… sort_topics_by_event_start_date……
这在这里注册:
以及分类在这里:
我有一种感觉,这可能是由于我们现在正在进行的分类可扩展性工作而导致的回归……我们会看看。
太好了!这个问题已经被报告过了。我将把它留在这里,以便搜索效果更好。
while trying to load /categories.json)
我们正在调查此事。
此问题由 discourse-calendar 引起,但该插件的最新版本(即将发布)应能解决此问题:
这是 discourse-category-lockdown 的一个问题,我们无法控制。不过我可以提交一个 PR 来解决它。
是由于什么原因?所以,这两个插件都因为 X 原因出现了同样的 bug,还是 Discourse 更改了某些会影响到两者的内容?
不,我不是在责怪任何人,我只是想理解术语。
最近的性能改进导致了这个问题。自定义字段是我们代码库中的一种“独角兽”,可供各种插件用于扩展功能。但是,如果使用不当,可能会带来性能损失。此改进着眼于解决此问题:
我已经提交了一个 PR,但它不是我们有权访问的存储库:
我看到它已经合并了,我进行了重新构建,它解决了这个问题
感谢您一如既往的快速修复。
好的。运行得很顺利。非常感谢。
Category Lockdown 会给出永恒的旋转器(嗯,这个问题也可能来自 Firefox/iPad 的隐身模式)。但我想这是另一个问题。