Minha versão do Discourse é 2026.5.0-latest.1 (fbcbdc46d8)
Estou vendo erros repetidos em /logs ao carregar as postagens de um tópico. O erro parece vir do plugin discourse-reactions bundled, durante a serialização do fluxo de postagens.
O site relata a mensagem como 8 cópias reportadas.
Verifiquei o intervalo de comparação abaixo, mas não parece que ele afeta o caminho de código backend que está falhando, então estou relatando isso separadamente:
[details=„Mensagem de erro de /logs”]
Mensagem (8 cópias reportadas)
NameError (constante não inicializada 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 „bloco em 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 de /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 „bloco em AbstractController::Callbacks#process_action”
activesupport (8.0.5) lib/active_support/callbacks.rb:120:in „bloco em ActiveSupport::Callbacks#run_callbacks”
app/controllers/application_controller.rb:452:in „bloco em 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 „bloco em 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 „bloco em 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 „bloco em ActionController::Instrumentation#process_action”
activesupport (8.0.5) lib/active_support/notifications.rb:210:in „bloco em 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 „bloco em 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 „bloco em ActionDispatch::Journey::Router#serve”
actionpack (8.0.5) lib/action_dispatch/journey/router.rb:133:in „bloco em 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 „bloco em 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]
O que parece estar acontecendo
O erro ocorre quando TopicsController#posts renderiza JSON para o fluxo de postagens.
O backtrace aponta para:
plugins/discourse-reactions/lib/discourse_reactions/posts_reaction_loader.rb
e depois para:
plugins/discourse-reactions/lib/discourse_reactions/topic_view_posts_serializer_extension.rb
A constante que está falhando parece ser:
ReactionsSerializerHelpers
Portanto, isso parece ser ou:
ReactionsSerializerHelpersnão está sendo carregado/definido antes que PostsReactionLoader o referencie, ou- um estado desatualizado/misto do plugin/core está fazendo com que o plugin de reações bundled referencie um auxiliar que não está presente no código em execução.
Pergunta
Espera-se que isso seja corrigido por um commit posterior, ou é um problema de ordem de carregamento/plugin bundled no discourse-reactions?
Estou disposto a fornecer mais detalhes sobre o ambiente, se útil.