Plusieurs utilisateurs de mon forum Discourse, dont moi-même, avons rencontré un bug avec le plugin Réactions.
Environnement
Nous utilisons la version 2.8.0.beta10 ( 07c010422b )
Étapes pour reproduire le problème
Le problème est imprévisible et semble se produire sur différents navigateurs, en mode mobile ou bureau, et selon d’autres variables. Voici cependant comment il se manifeste lorsqu’il survient :
- Accédez à une réponse sur le forum.
- Passez la souris sur l’icône en forme de cœur des Réactions.
- Sélectionnez une réaction (par exemple, un emoji câlin ou cœur).
- Une boîte de dialogue s’affiche avec le message d’erreur : « Quelque chose s’est mal passé. »
Rapport d’erreur de Discourse
Message (98 copies signalées)
NoMethodError (méthode `user` non définie pour nil:NilClass. Voulez-vous dire ? super) app/services/notifications/delete_previous_notifications.rb:30:in `can_consolidate_data?' app/services/notifications/consolidation_planner.rb:18:in `block in plan_for' app/services/notifications/consolidation_planner.rb:18:in `each' app/services/notifications/consolidation_planner.rb:18:in `detect' app/services/notifications/consolidation_planner.rb:18:in `plan_for' app/services/notifications/consolidation_planner.rb:6:in `consolidate_or_save!' app/models/notification.rb:38:in `consolidate_or_create!' app/services/post_alerter.rb:507:in `create_notification' app/controllers/application_controller.rb:387:in `block in with_resolved_locale' app/controllers/application_controller.rb:387: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:356: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:198:in `call'
Backtrace
plugins/discourse-reactions/plugin.rb:293:in `block (2 levels) in activate!'
app/services/notifications/delete_previous_notifications.rb:30:in `can_consolidate_data?'
app/services/notifications/consolidation_planner.rb:18:in `block in plan_for'
app/services/notifications/consolidation_planner.rb:18:in `each'
app/services/notifications/consolidation_planner.rb:18:in `detect'
app/services/notifications/consolidation_planner.rb:18:in `plan_for'
app/services/notifications/consolidation_planner.rb:6:in `consolidate_or_save!'
app/models/notification.rb:38:in `consolidate_or_create!'
activerecord (6.1.4.1) lib/active_record/relation/delegation.rb:67:in `block in consolidate_or_create!'
activerecord (6.1.4.1) lib/active_record/relation.rb:406:in `block in scoping'
activerecord (6.1.4.1) lib/active_record/relation.rb:804:in `_scoping'
activerecord (6.1.4.1) lib/active_record/relation.rb:406:in `scoping'
activerecord (6.1.4.1) lib/active_record/associations/collection_proxy.rb:1109:in `scoping'
activerecord (6.1.4.1) lib/active_record/relation/delegation.rb:67:in `consolidate_or_create!'
app/services/post_alerter.rb:507:in `create_notification'
plugins/discourse-reactions/app/services/discourse_reactions/reaction_notification.rb:16:in `create'
plugins/discourse-reactions/app/services/discourse_reactions/reaction_manager.rb:46:in `add_reaction_notification'
plugins/discourse-reactions/app/services/discourse_reactions/reaction_manager.rb:91:in `add_reaction'
plugins/discourse-reactions/app/services/discourse_reactions/reaction_manager.rb:38:in `toggle_reaction'
plugins/discourse-reactions/app/services/discourse_reactions/reaction_manager.rb:21:in `block in toggle!'
activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/transaction.rb:319:in `block in within_new_transaction'
activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport (6.1.4.1) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/transaction.rb:317:in `within_new_transaction'
activerecord (6.1.4.1) lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
activerecord (6.1.4.1) lib/active_record/transactions.rb:209:in `transaction'
plugins/discourse-reactions/app/services/discourse_reactions/reaction_manager.rb:18:in `toggle!'
plugins/discourse-reactions/app/controllers/discourse_reactions/custom_reactions_controller.rb:17:in `toggle'
actionpack (6.1.4.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (6.1.4.1) lib/abstract_controller/base.rb:228:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport (6.1.4.1) lib/active_support/callbacks.rb:117:in `block in run_callbacks'
app/controllers/application_controller.rb:387:in `block in with_resolved_locale'
i18n (1.8.11) lib/i18n.rb:314:in `with_locale'
app/controllers/application_controller.rb:387:in `with_resolved_locale'
activesupport (6.1.4.1) lib/active_support/callbacks.rb:126:in `block in run_callbacks'
activesupport (6.1.4.1) lib/active_support/callbacks.rb:137:in `run_callbacks'
actionpack (6.1.4.1) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `block in instrument'
activesupport (6.1.4.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.1.4.1) lib/active_support/notifications.rb:203:in `instrument'
actionpack (6.1.4.1) lib/action_controller/metal/instrumentation.rb:33:in `process_action'
actionpack (6.1.4.1) lib/action_controller/metal/params_wrapper.rb:249:in `process_action'
activerecord (6.1.4.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.1.4.1) lib/abstract_controller/base.rb:165:in `process'
actionview (6.1.4.1) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (2.3.3) lib/mini_profiler/profiling_methods.rb:85:in `block in profile_method'
actionpack (6.1.4.1) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.1.4.1) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:842:in `call'
railties (6.1.4.1) lib/rails/engine.rb:539:in `call'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `public_send'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `method_missing'
actionpack (6.1.4.1) lib/action_dispatch/routing/mapper.rb:20:in `block in <class:Constraints>'
actionpack (6.1.4.1) lib/action_dispatch/routing/mapper.rb:49:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.1.4.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.1.4.1) lib/action_dispatch/routing/route_set.rb:842:in `call'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.3) lib/rack/head.rb:12:in `call'
actionpack (6.1.4.1) lib/action_dispatch/http/permissions_policy.rb:22:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:356:in `call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/cookies.rb:689:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.1.4.1) lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack (6.1.4.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster (2.10.1) lib/logster/middleware/reporter.rb:43:in `call'
railties (6.1.4.1) lib/rails/rack/logger.rb:37:in `call_app'
railties (6.1.4.1) lib/rails/rack/logger.rb:28:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/request_id.rb:26:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (6.1.4.1) lib/action_dispatch/middleware/host_authorization.rb:92:in `call'
rack-mini-profiler (2.3.3) lib/mini_profiler/profiler.rb:249:in `call'
message_bus (3.3.8) lib/message_bus/rack/middleware.rb:61:in `call'
lib/middleware/request_tracker.rb:198:in `call'
railties (6.1.4.1) lib/rails/engine.rb:539:in `call'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `public_send'
railties (6.1.4.1) lib/rails/railtie.rb:207:in `method_missing'
rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.3) lib/rack/urlmap.rb:58:in `each'
rack (2.2.3) lib/rack/urlmap.rb:58:in `call'
unicorn (6.0.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (