Bonjour à la communauté Discourse !
Nous exécutons la version 2.4.5 de Discourse via Docker sur une machine virtuelle Debian. Le message d’erreur suivant :
NoMethodError (undefined method
automatic_membership_retroactive' for #<Group:0x00007fb84804bac0>) /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activemodel-6.0.1/lib/active_model/attribute_methods.rb:431:inmethod_missing’
… s’affiche dans les journaux de Discourse lorsque l’on tente d’accéder à certaines pages en tant qu’utilisateur connecté (administrateur dans mon cas) :
Le problème ne se manifeste pas uniquement sur ma propre page de profil (/u/mathieugp), mais sur tous les profils, ce qui génère une erreur dans le journal des erreurs de Discourse et affiche une erreur de type 500 côté client. Parfois, c’est un journal d’erreur 404 lors du chargement d’autres pages (sous-pages, d’après ce que je peux dire) comme celle-ci :
- /u/mathieugp/summary
Je peux consulter mon propre profil (et ceux des autres) lorsque je ne suis pas connecté. Évidemment, je ne peux rien voir d’utile de l’administration des groupes lorsque je ne suis pas connecté, mais aucune erreur inhabituelle n’est affichée.
La pile d’appels complète issue du journal de Discourse :
> activemodel-6.0.1/lib/active_model/attribute_methods.rb:431:in `method_missing'
> active_model_serializers-0.8.4/lib/active_model/serializer.rb:99:in `block in attribute'
> (eval):12: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/array_serializer.rb:89:in `block in _serializable_array'
> active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:79:in `map'
> active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:79:in `_serializable_array'
> active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:73:in `serializable_array'
> active_model_serializers-0.8.4/lib/active_model/array_serializer.rb:53:in `as_json'
> /var/www/discourse/app/controllers/application_controller.rb:427:in `serialize_data'
> /var/www/discourse/app/controllers/groups_controller.rb:91:in `index'
> actionpack-6.0.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
> actionpack-6.0.1/lib/abstract_controller/base.rb:196:in `process_action'
> actionpack-6.0.1/lib/action_controller/metal/rendering.rb:30:in `process_action'
> actionpack-6.0.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
> activesupport-6.0.1/lib/active_support/callbacks.rb:135:in `run_callbacks'
> actionpack-6.0.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
> actionpack-6.0.1/lib/action_controller/metal/rescue.rb:22:in `process_action'
> actionpack-6.0.1/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
> activesupport-6.0.1/lib/active_support/notifications.rb:180:in `block in instrument'
> activesupport-6.0.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
> activesupport-6.0.1/lib/active_support/notifications.rb:180:in `instrument'
> actionpack-6.0.1/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
> actionpack-6.0.1/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
> activerecord-6.0.1/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
> actionpack-6.0.1/lib/abstract_controller/base.rb:136:in `process'
> actionview-6.0.1/lib/action_view/rendering.rb:39:in `process'
> rack-mini-profiler-1.1.6/lib/mini_profiler/profiling_methods.rb:78:in `block in profile_method'
> actionpack-6.0.1/lib/action_controller/metal.rb:191:in `dispatch'
> actionpack-6.0.1/lib/action_controller/metal.rb:252:in `dispatch'
> actionpack-6.0.1/lib/action_dispatch/routing/route_set.rb:51:in `dispatch'
> actionpack-6.0.1/lib/action_dispatch/routing/route_set.rb:33:in `serve'
> actionpack-6.0.1/lib/action_dispatch/journey/router.rb:49:in `block in serve'
> actionpack-6.0.1/lib/action_dispatch/journey/router.rb:32:in `each'
> actionpack-6.0.1/lib/action_dispatch/journey/router.rb:32:in `serve'
> actionpack-6.0.1/lib/action_dispatch/routing/route_set.rb:837:in `call'
> /var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
> rack-2.0.8/lib/rack/tempfile_reaper.rb:15:in `call'
> rack-2.0.8/lib/rack/conditional_get.rb:25:in `call'
> rack-2.0.8/lib/rack/head.rb:12:in `call'
> /var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
> /var/www/discourse/lib/middleware/anonymous_cache.rb:318:in `call'
> rack-2.0.8/lib/rack/session/abstract/id.rb:259:in `context'
> rack-2.0.8/lib/rack/session/abstract/id.rb:253:in `call'
> actionpack-6.0.1/lib/action_dispatch/middleware/cookies.rb:648:in `call'
> actionpack-6.0.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
> activesupport-6.0.1/lib/active_support/callbacks.rb:101:in `run_callbacks'
> actionpack-6.0.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
> actionpack-6.0.1/lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
> actionpack-6.0.1/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
> actionpack-6.0.1/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
> logster-2.6.3/lib/logster/middleware/reporter.rb:43:in `call'
> railties-6.0.1/lib/rails/rack/logger.rb:38:in `call_app'
> railties-6.0.1/lib/rails/rack/logger.rb:28:in `call'
> /var/www/discourse/config/initializers/100-quiet_logger.rb:18:in `call'
> /var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'
> actionpack-6.0.1/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
> actionpack-6.0.1/lib/action_dispatch/middleware/request_id.rb:27:in `call'
> /var/www/discourse/lib/middleware/enforce_hostname.rb:17:in `call'
> rack-2.0.8/lib/rack/method_override.rb:22:in `call'
> actionpack-6.0.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
> rack-2.0.8/lib/rack/sendfile.rb:111:in `call'
> actionpack-6.0.1/lib/action_dispatch/middleware/host_authorization.rb:77:in `call'
> rack-mini-profiler-1.1.6/lib/mini_profiler/profiler.rb:184:in `call'
> message_bus-2.2.3/lib/message_bus/rack/middleware.rb:57:in `call'
> /var/www/discourse/lib/middleware/request_tracker.rb:181:in `call'
> railties-6.0.1/lib/rails/engine.rb:526:in `call'
> railties-6.0.1/lib/rails/railtie.rb:190:in `public_send'
> railties-6.0.1/lib/rails/railtie.rb:190:in `method_missing'
> rack-2.0.8/lib/rack/urlmap.rb:68:in `block in call'
> rack-2.0.8/lib/rack/urlmap.rb:53:in `each'
> rack-2.0.8/lib/rack/urlmap.rb:53:in `call'
> unicorn-5.5.3/lib/unicorn/http_server.rb:605:in `process_client'
> unicorn-5.5.3/lib/unicorn/http_server.rb:700:in `worker_loop'
> unicorn-5.5.3/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
> unicorn-5.5.3/lib/unicorn/http_server.rb:144:in `start'
> unicorn-5.5.3/bin/unicorn:128:in `<top (required)>'
> /var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
> /var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'
N’hésitez pas à me dire quelles autres informations pourraient être utiles pour mieux comprendre ce bug.
Je devrais probablement mentionner certains problèmes antérieurs que nous avons rencontrés avec l’accès à certaines pages de notre instance Discourse. Pendant un certain temps, je ne pouvais même pas accéder à la zone d’administration. Ce problème semblait avoir complètement disparu après avoir exécuté la commande suivante :
# ./launcher rebuild app
J’ai pu à nouveau accéder à la zone d’administration, mais je n’ai pas remarqué mon incapacité à gérer les groupes. Je ne l’ai réalisé que plusieurs semaines plus tard, lorsque j’ai dû ajouter un utilisateur à un groupe. Pour ce qui est de la visualisation des profils, je ne suis pas certain : il semble que je n’aurais pas pu manquer quelque chose d’aussi important, mais peut-être n’étais-je pas connecté à un moment donné et j’ai supposé que tout allait bien alors que ce n’était pas le cas ? Ou alors, le problème d’affichage des profils n’existait pas et n’est apparu que plus tard. (Désolé pour le flou de ces dernières déclarations : je ne m’en souviens pas avec certitude et je n’ai aucune piste à suivre !)