Obtenha erro 500 ao instalar o plugin de perguntas e respostas

Olá, tive o mesmo problema ao instalar o plugin QA do Pavilion e relatei em Oops após atualização para discourse 2.9 devido ao plugin Discourse QA - support - Discourse Meta
Tentei instalar o plugin QA do discourse em tests-passed (2.9.0.beta6) hoje, mas ainda obtive o mesmo problema.
Se desabilitar o plugin QA, tudo funciona bem.
Também encontrei uma mensagem de erro semelhante em 500 error ao salvar configurações de segurança de categoria - bug - Discourse Meta. Talvez sejam relevantes?

Mensagem de erro de shared/standalone/log/rails/production.log

NoMethodError (undefined method `=>' for nil:NilClass)
(eval):78:in `_fast_attributes'
app/controllers/application_controller.rb:639:in `preload_current_user_data'
app/controllers/application_controller.rb:439:in `preload_json'
app/controllers/application_controller.rb:415:in `block in with_resolved_locale'
app/controllers/application_controller.rb:415:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:368:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:202:in `call'

e algumas capturas de tela da página da web

Eu uso o seguinte template:

- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
- "templates/web.socketed.template.yml"
- "templates/cloudflare.template.yml"

e instalo os plugins

- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-knowledge-explorer.git
- git clone https://github.com/discourse/discourse-data-explorer.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-rss-polling.git
- git clone https://github.com/discourse/discourse-feature-voting.git
- git clone https://github.com/discourse/discourse-math.git
- git clone https://github.com/discourse/discourse-checklist.git
- git clone https://github.com/discourse/discourse-question-answer.git

Atualizar backtrace:

plugins/discourse-feature-voting/plugin.rb:162:in `reached_voting_limit?'
plugins/discourse-feature-voting/plugin.rb:175:in `votes_exceeded'
(eval):78: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.rb:347:in `as_json'
activesupport (7.0.3) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (7.0.3) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (7.0.3) lib/active_support/core_ext/object/json.rb:42:in `to_json'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:331:in `to_json'
multi_json (1.15.0) lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json (1.15.0) lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json (1.15.0) lib/multi_json/adapter.rb:25:in `dump'
multi_json (1.15.0) lib/multi_json.rb:139:in `dump'
app/controllers/application_controller.rb:639:in `preload_current_user_data'
app/controllers/application_controller.rb:439:in `preload_json'
activesupport (7.0.3) lib/active_support/callbacks.rb:400:in `block in make_lambda'
activesupport (7.0.3) lib/active_support/callbacks.rb:199:in `block (2 levels) in halting'
actionpack (7.0.3) lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in <module:Callbacks>'
activesupport (7.0.3) lib/active_support/callbacks.rb:200:in `block in halting'
activesupport (7.0.3) lib/active_support/callbacks.rb:595:in `block in invoke_before'
activesupport (7.0.3) lib/active_support/callbacks.rb:595:in `each'
activesupport (7.0.3) lib/active_support/callbacks.rb:595:in `invoke_before'
activesupport (7.0.3) lib/active_support/callbacks.rb:116:in `block in run_callbacks'
app/controllers/application_controller.rb:415:in `block in with_resolved_locale'
i18n (1.10.0) lib/i18n.rb:328:in `with_locale'
app/controllers/application_controller.rb:415:in `with_resolved_locale'
activesupport (7.0.3) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport (7.0.3) lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack (7.0.3) lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack (7.0.3) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (7.0.3) lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport (7.0.3) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.3) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.3) lib/active_support/notifications.rb:206:in `instrument'
actionpack (7.0.3) lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack (7.0.3) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.0.3) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (7.0.3) lib/abstract_controller/base.rb:151:in `process'
actionview (7.0.3) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (3.0.0) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'
actionpack (7.0.3) lib/action_controller/metal.rb:188:in `dispatch'
actionpack (7.0.3) lib/action_controller/metal.rb:251:in `dispatch'
actionpack (7.0.3) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack (7.0.3) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (7.0.3) lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
actionpack (7.0.3) lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack (7.0.3) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (7.0.3) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (7.0.3) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (7.0.3) lib/action_dispatch/routing/route_set.rb:852:in `call'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
rack (2.2.3.1) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3.1) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.3.1) lib/rack/head.rb:12:in `call'
actionpack (7.0.3) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:368:in `call'
rack (2.2.3.1) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3.1) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.0.3) lib/action_dispatch/middleware/cookies.rb:697:in `call'
actionpack (7.0.3) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (7.0.3) lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack (7.0.3) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (7.0.3) lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
actionpack (7.0.3) lib/action_dispatch/middleware/show_exceptions.rb:26:in `call'
logster (2.11.2) lib/logster/middleware/reporter.rb:43:in `call'
railties (7.0.3) lib/rails/rack/logger.rb:40:in `call_app'
railties (7.0.3) lib/rails/rack/logger.rb:27:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
actionpack (7.0.3) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack (7.0.3) lib/action_dispatch/middleware/request_id.rb:26:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.3.1) lib/rack/method_override.rb:24:in `call'
actionpack (7.0.3) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.3.1) lib/rack/sendfile.rb:110:in `call'
actionpack (7.0.3) lib/action_dispatch/middleware/host_authorization.rb:131:in `call'
rack-mini-profiler (3.0.0) lib/mini_profiler/profiler.rb:249:in `call'
message_bus (4.2.0) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:202:in `call'
railties (7.0.3) lib/rails/engine.rb:530:in `call'
railties (7.0.3) lib/rails/railtie.rb:226:in `public_send'
railties (7.0.3) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.3.1) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.3.1) lib/rack/urlmap.rb:58:in `each'
rack (2.2.3.1) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/2.7.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/2.7.0/bin/unicorn:25:in `<main>'

Mostra algo relacionado a votação. Talvez haja algum conflito entre votação e perguntas e respostas?

1 curtida

Olá, eu também tentei um pouco sobre este problema.
Na versão beta 7 do 2.9.0, o problema ainda acontece.
Como o backtrace contém algo relacionado a “voting”, eu acho que há algum conflito entre eles.
Eu deletei o plugin de votação (instalei apenas o plugin de q/a) e funcionou!
Espero que isso possa ajudar a resolver o problema.

Desculpe @yhmtsai, eu não vi sua atualização sobre o conflito de votação. Eu tenho tanto Voting quanto Q&A instalados no meu site de teste, e eles parecem se dar bem? Vou configurar um novo site de teste apenas com esses dois plugins e ver se isso lança alguma luz sobre o que pode ter acontecido.

Você consegue pensar em algum outro detalhe que possa ser relevante?

1 curtida

Oi, obrigado por responder.
Reativei o plugin de votação e ele voltou a funcionar. :face_with_raised_eyebrow:
Também tentei instalar primeiro o de votação e depois o qa, mas ainda funciona.
Eu suspeito que pode ser algo do qa antigo que foi mantido pelo plugin de votação, causando o erro mesmo quando o plugin qa é excluído. Depois de excluir o de votação para limpar os dados, o novo qa e o de votação voltaram a funcionar juntos.
No entanto, não estou familiarizado com a interação desses plugins, então é apenas um palpite…

1 curtida

Encontrei um problema semelhante recentemente ao reconstruir um novo site de teste, e o problema foi o uso acidental do antigo discourse-feature-voting git para o plugin de votação, em vez do atual (na época) discourse-voting, o que fez com que as coisas fossem carregadas em uma ordem não intencional. :slight_smile:

Ambos os plugins de votação foram renomeados recentemente para discourse-topic-voting e discourse-post-voting, então, se você ainda estiver tendo problemas, pode remover discourse-feature-voting do seu app.yml e usar os atualizados, e acredito que isso resolverá o problema. :+1:

1 curtida

Seria útil se o discourse pudesse emitir um aviso/lembrete sobre a atualização da URL.
Não tenho certeza se vale a pena ou não, pois assumo que a alteração do nome raramente deve acontecer.