可視性が限定されたカテゴリやサブカテゴリのエラー

私も同じです。今日アップグレードしました。これはDiscourseにあるのですか?

そして、もう少し深く掘り下げてみます。

「いいね!」 1

うーん、それはサーバー側のエラーですね、@Jagster。それは別の問題だと思います。また、この変更はまだマージされていないので、セルフホストサイトには影響しないはずです。

それは本当ですが、私はログインしていました。OPのエラーは匿名ユーザー向けです。どちらの場合も、カテゴリで発生します。

Discourse より:

HasCustomFields::NotPreloadedError (Attempted to access the non preloaded custom field 'sort_topics_by_event_start_date' on the 'Category' class.

および

Message

HasCustomFields::NotPreloadedError (Attempted to access the non preloaded custom field 'sort_topics_by_event_start_date' on the 'Category' class. This is disallowed to prevent N+1 queries.)
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/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で、カレンダープラグインをインストールしていません(ホストされているディスコースレベルで、そのプラグインがありません)。

「サブカテゴリが原因である」という可能性もあります…現在、私のサイトはかなり壊れているため、今はわかりません。しかし、カテゴリをちょうど作成しました…もし(どう機能するか忘れてしまいましたが)新しいカテゴリがデフォルトで、例えば「Public」の下に配置される場合、私は(誤って)最初のサブカテゴリを作成したことになります。

エラーは確かにそのように見えます… sort_topics_by_event_start_date

これはここで登録されています:

そしてカテゴリについてはこちら:

現在行っているカテゴリのスケーラビリティ作業によるリグレッションである可能性があると感じています… 確認します。

「いいね!」 1

いいですね!すでに報告されています。検索がよりうまく機能するように、以下に残しておきます。

while trying to load /categories.json)

調査中です。

この問題はdiscourse-calendarによって引き起こされましたが、プラグインの最新バージョン(近日公開)で修正されるはずです。

これはdiscourse-category-lockdownからの問題で、我々には制御できません。ただし、PRを提出することはできます。

「いいね!」 6

こちらでさらに問題を追跡しています non preloaded custom field - Discourse Category Lockdown - Pavilion

「いいね!」 1

原因ですか? では、両方のプラグインが X の理由で同じバグを抱えているのですか、それとも Discourse が両方に影響を与える何かを変更したのですか?

誰かを非難しているわけではありませんが、専門用語を理解しようとしているだけです。

これは最近のパフォーマンス改善によるものです。カスタムフィールドは、さまざまなプラグインが機能拡張に使用できる、コードベースにおけるユニコーン(非常に珍しいもの)です。しかし、不適切に使用するとパフォーマンスの低下を招く可能性があります。この改善は、その点に対処するものです。

「いいね!」 1

I have submitted a PR for that one here, but it is not a repository we have access to:

「いいね!」 6

マージされたのを確認しました。再ビルドしたところ、問題が解決しました :tada: いつもながら迅速な修正ありがとうございます。

「いいね!」 1

はい。うまく機能します。どうもありがとうございます。

カテゴリロックダウンは永遠のスピンを生成しますが(まあ、その問題はFirefox/iPadのプライベートモードからも来るかもしれませんが)。しかし、それは別の問題だと思います。

「いいね!」 1