NameError: Uninitialisierter Konstante ReactionsSerializerHelpers beim Laden von Topic-Posts

Meine Discourse-Version ist 2026.5.0-latest.1 (fbcbdc46d8)


Beim Laden von Themenbeiträgen sehe ich wiederholt /logs-Fehler. Der Fehler scheint vom gebündelten Plugin discourse-reactions zu stammen, während der Post-Stream serialisiert wird.

Die Website meldet die Meldung als 8 gemeldete Kopien.

Ich habe den unten angegebenen Vergleichsbereich geprüft, aber es sieht nicht so aus, als ob er den fehlerhaften Backend-Codepfad berührt. Daher melde ich dies separat:

[details=„Fehlermeldung aus /logs"]

Meldung (8 gemeldete Kopien)

NameError (nicht initialisierter Konstante ReactionsSerializerHelpers)
app/serializers/post_stream_serializer_mixin.rb:31:in „PostStreamSerializerMixin#post_stream"
app/controllers/application_controller.rb:531:in „ApplicationController#render_json_dump"
app/controllers/topics_controller.rb:296:in „TopicsController#posts"
app/controllers/application_controller.rb:452:in „block in ApplicationController#with_resolved_locale"
app/controllers/application_controller.rb:452:in „ApplicationController#with_resolved_locale"
app/controllers/application_controller.rb:1103:in „ApplicationController#ensure_dont_cache_page"
lib/middleware/omniauth_bypass_middleware.rb:35:in „Middleware::OmniauthBypassMiddleware#call"
lib/middleware/crawler_hooks.rb:13:in „Middleware::CrawlerHooks#call"
lib/content_security_policy/middleware.rb:12:in „ContentSecurityPolicy::Middleware#call"
lib/middleware/anonymous_cache.rb:420:in „Middleware::AnonymousCache#call"
lib/middleware/csp_script_nonce_injector.rb:12:in „Middleware::CspScriptNonceInjector#call"
lib/middleware/track_view_session_id_injector.rb:12:in „Middleware::TrackViewSessionIdInjector#call"
config/initializers/008-rack-cors.rb:14:in „Discourse::Cors#call"
lib/middleware/default_headers.rb:13:in „Middleware::DefaultHeaders#call"
config/initializers/100-quiet_logger.rb:20:in „DiscourseRackQuietAssetsLogger#call"
config/initializers/100-silence_logger.rb:29:in „SilenceLogger#call"
lib/middleware/enforce_hostname.rb:23:in „Middleware::EnforceHostname#call"
lib/middleware/request_tracker.rb:372:in „Middleware::RequestTracker#call"
lib/middleware/overload_protections.rb:18:in „Middleware::OverloadProtections#call"
lib/middleware/processing_request.rb:14:in „Middleware::ProcessingRequest#call"

[/details]

[details=„Backtrace aus /logs"]

Backtrace

plugins/discourse-reactions/lib/discourse_reactions/posts_reaction_loader.rb:10:in „DiscourseReactions::PostsReactionLoader#posts_with_reactions"
plugins/discourse-reactions/lib/discourse_reactions/topic_view_posts_serializer_extension.rb:7:in „DiscourseReactions::TopicViewPostsSerializerExtension#posts"
app/serializers/post_stream_serializer_mixin.rb:31:in „PostStreamSerializerMixin#post_stream"
(eval at active_model_serializers-0.8.4/lib/active_model/serializer.rb:467):3:in „TopicViewPostsSerializer#_fast_attributes"
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in „ActiveModel::Serializer#attributes"
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in „ActiveModel::Serializer#_serializable_hash"
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in „ActiveModel::Serializer#serializable_hash"
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in „ActiveModel::Serializer#as_json"
activesupport (8.0.5) lib/active_support/json/encoding.rb:41:in „Oj::Rails::Encoder#encode"
activesupport (8.0.5) lib/active_support/json/encoding.rb:41:in „ActiveSupport::JSON.encode"
activesupport (8.0.5) lib/active_support/core_ext/object/json.rb:42:in „ActiveSupport::ToJsonWithActiveSupportEncoder#to_json"
active_model_serializers (0.8.4) lib/active_model/serializer.rb:331:in „ActiveModel::Serializer#to_json"
multi_json (1.20.1) lib/multi_json/adapters/oj.rb:67:in „Oj.dump"
multi_json (1.20.1) lib/multi_json/adapters/oj.rb:67:in „MultiJson::Adapters::Oj#dump"
multi_json (1.20.1) lib/multi_json/adapter.rb:92:in „MultiJson::Adapter.dump"
multi_json (1.20.1) lib/multi_json.rb:214:in „MultiJson.dump"
app/controllers/application_controller.rb:531:in „ApplicationController#render_json_dump"
app/controllers/topics_controller.rb:296:in „TopicsController#posts"
actionpack (8.0.5) lib/action_controller/metal/basic_implicit_render.rb:8:in „ActionController::BasicImplicitRender#send_action"
actionpack (8.0.5) lib/abstract_controller/base.rb:215:in „AbstractController::Base#process_action"
actionpack (8.0.5) lib/action_controller/metal/rendering.rb:193:in „ActionController::Rendering#process_action"
actionpack (8.0.5) lib/abstract_controller/callbacks.rb:261:in „block in AbstractController::Callbacks#process_action"
activesupport (8.0.5) lib/active_support/callbacks.rb:120:in „block in ActiveSupport::Callbacks#run_callbacks"
app/controllers/application_controller.rb:452:in „block in ApplicationController#with_resolved_locale"
i18n (1.14.8) lib/i18n.rb:354:in „I18n::Base#with_locale"
app/controllers/application_controller.rb:452:in „ApplicationController#with_resolved_locale"
activesupport (8.0.5) lib/active_support/callbacks.rb:129:in „block in ActiveSupport::Callbacks#run_callbacks"
app/controllers/application_controller.rb:1103:in „ApplicationController#ensure_dont_cache_page"
activesupport (8.0.5) lib/active_support/callbacks.rb:129:in „block in ActiveSupport::Callbacks#run_callbacks"
activesupport (8.0.5) lib/active_support/callbacks.rb:140:in „ActiveSupport::Callbacks#run_callbacks"
actionpack (8.0.5) lib/abstract_controller/callbacks.rb:260:in „AbstractController::Callbacks#process_action"
actionpack (8.0.5) lib/action_controller/metal/rescue.rb:27:in „ActionController::Rescue#process_action"
actionpack (8.0.5) lib/action_controller/metal/instrumentation.rb:76:in „block in ActionController::Instrumentation#process_action"
activesupport (8.0.5) lib/active_support/notifications.rb:210:in „block in ActiveSupport::Notifications.instrument"
activesupport (8.0.5) lib/active_support/notifications/instrumenter.rb:58:in „ActiveSupport::Notifications::Instrumenter#instrument"
activesupport (8.0.5) lib/active_support/notifications.rb:210:in „ActiveSupport::Notifications.instrument"
actionpack (8.0.5) lib/action_controller/metal/instrumentation.rb:75:in „ActionController::Instrumentation#process_action"
actionpack (8.0.5) lib/action_controller/metal/params_wrapper.rb:259:in „ActionController::ParamsWrapper#process_action"
activerecord (8.0.5) lib/active_record/railties/controller_runtime.rb:39:in „ActiveRecord::Railties::ControllerRuntime#process_action"
actionpack (8.0.5) lib/abstract_controller/base.rb:152:in „AbstractController::Base#process"
actionview (8.0.5) lib/action_view/rendering.rb:40:in „ActionView::Rendering#process"
rack-mini-profiler (4.0.1) lib/mini_profiler/profiling_methods.rb:90:in „block in ActionController::Base#profile_method"
actionpack (8.0.5) lib/action_controller/metal.rb:252:in „ActionController::Metal#dispatch"
actionpack (8.0.5) lib/action_controller/metal.rb:335:in „ActionController::Metal.dispatch"
actionpack (8.0.5) lib/action_dispatch/routing/route_set.rb:67:in „ActionDispatch::Routing::RouteSet::Dispatcher#dispatch"
actionpack (8.0.5) lib/action_dispatch/routing/route_set.rb:50:in „ActionDispatch::Routing::RouteSet::Dispatcher#serve"
actionpack (8.0.5) lib/action_dispatch/journey/router.rb:53:in „block in ActionDispatch::Journey::Router#serve"
actionpack (8.0.5) lib/action_dispatch/journey/router.rb:133:in „block in ActionDispatch::Journey::Router#find_routes"
actionpack (8.0.5) lib/action_dispatch/journey/router.rb:126:in „Array#each"
actionpack (8.0.5) lib/action_dispatch/journey/router.rb:126:in „ActionDispatch::Journey::Router#find_routes"
actionpack (8.0.5) lib/action_dispatch/journey/router.rb:34:in „ActionDispatch::Journey::Router#serve"
actionpack (8.0.5) lib/action_dispatch/routing/route_set.rb:908:in „ActionDispatch::Routing::RouteSet#call"
lib/middleware/omniauth_bypass_middleware.rb:35:in „Middleware::OmniauthBypassMiddleware#call"
lib/middleware/crawler_hooks.rb:13:in „Middleware::CrawlerHooks#call"
rack (2.2.23) lib/rack/tempfile_reaper.rb:15:in „Rack::TempfileReaper#call"
rack (2.2.23) lib/rack/conditional_get.rb:27:in „Rack::ConditionalGet#call"
rack (2.2.23) lib/rack/head.rb:12:in „Rack::Head#call"
actionpack (8.0.5) lib/action_dispatch/http/permissions_policy.rb:38:in „ActionDispatch::PermissionsPolicy::Middleware#call"
lib/content_security_policy/middleware.rb:12:in „ContentSecurityPolicy::Middleware#call"
lib/middleware/anonymous_cache.rb:420:in „Middleware::AnonymousCache#call"
lib/middleware/csp_script_nonce_injector.rb:12:in „Middleware::CspScriptNonceInjector#call"
lib/middleware/track_view_session_id_injector.rb:12:in „Middleware::TrackViewSessionIdInjector#call"
config/initializers/008-rack-cors.rb:14:in „Discourse::Cors#call"
rack (2.2.23) lib/rack/session/abstract/id.rb:266:in „Rack::Session::Abstract::Persisted#context"
rack (2.2.23) lib/rack/session/abstract/id.rb:260:in „Rack::Session::Abstract::Persisted#call"
actionpack (8.0.5) lib/action_dispatch/middleware/cookies.rb:706:in „ActionDispatch::Cookies#call"
actionpack (8.0.5) lib/action_dispatch/middleware/callbacks.rb:31:in „block in ActionDispatch::Callbacks#call"
activesupport (8.0.5) lib/active_support/callbacks.rb:100:in „ActiveSupport::Callbacks#run_callbacks"
actionpack (8.0.5) lib/action_dispatch/middleware/callbacks.rb:30:in „ActionDispatch::Callbacks#call"
actionpack (8.0.5) lib/action_dispatch/middleware/debug_exceptions.rb:31:in „ActionDispatch::DebugExceptions#call"
actionpack (8.0.5) lib/action_dispatch/middleware/show_exceptions.rb:32:in „ActionDispatch::ShowExceptions#call"
logster (2.21.0) lib/logster/middleware/reporter.rb:40:in „Logster::Middleware::Reporter#call"
lib/middleware/default_headers.rb:13:in „Middleware::DefaultHeaders#call"
railties (8.0.5) lib/rails/rack/logger.rb:41:in „Rails::Rack::Logger#call_app"
railties (8.0.5) lib/rails/rack/logger.rb:29:in „Rails::Rack::Logger#call"
config/initializers/100-quiet_logger.rb:20:in „DiscourseRackQuietAssetsLogger#call"
config/initializers/100-silence_logger.rb:29:in „SilenceLogger#call"
actionpack (8.0.5) lib/action_dispatch/middleware/request_id.rb:34:in „ActionDispatch::RequestId#call"
lib/middleware/enforce_hostname.rb:23:in „Middleware::EnforceHostname#call"
rack (2.2.23) lib/rack/method_overrid

[/details]

Was offenbar passiert

Der Fehler tritt auf, wenn TopicsController#posts JSON für den Post-Stream rendert.

Der Backtrace zeigt auf:

plugins/discourse-reactions/lib/discourse_reactions/posts_reaction_loader.rb

und dann auf:

plugins/discourse-reactions/lib/discourse_reactions/topic_view_posts_serializer_extension.rb

Die fehlerhafte Konstante scheint zu sein:

ReactionsSerializerHelpers

Das sieht also entweder so aus, als ob:

  1. ReactionsSerializerHelpers nicht geladen/definiert wird, bevor PostsReactionLoader darauf verweist, oder
  2. ein veralteter/gemischter Plugin/Core-Zustand dazu führt, dass das gebündelte Reactions-Plugin auf einen Helfer verweist, der im laufenden Code nicht vorhanden ist.

Frage

Wird erwartet, dass dies durch einen späteren Commit behoben wird, oder handelt es sich um ein Problem mit der Ladeordnung/dem gebündelten Plugin in discourse-reactions?

Ich bin gerne bereit, weitere Umgebungsdetails bereitzustellen, falls dies hilfreich ist.

Ich habe dafür hier einen Pull Request eröffnet:

Die Änderung verschiebt/lädt ReactionsSerializerHelpers, sodass es verfügbar ist, bevor PostsReactionLoader darauf verweist.

1 „Gefällt mir“