Discourse-events peut provoquer une erreur 500 lors de la suppression d'un sujet en développement : Calendar::Extractor non initialisé

Lors de la test de modifications relatives à la suppression de sujets, sans rapport avec le problème principal, dans une instance de développement locale, la suppression d’un sujet a renvoyé une erreur 500 Internal Server Error.

L’instance de développement qui a généré l’erreur exécutait exactement ce commit de Discourse :

La requête était :

DELETE /t/35

et l’exception provient du rappel :post_destroyed de discourse-events :

NameError (uninitialized constant DiscourseEvents::Calendar::Extractor)

plugins/discourse-events/plugin.rb:639:in 'block (2 levels) in Plugin::Instance#activate!'
lib/plugin/instance.rb:676:in 'block in Plugin::Instance#on'
lib/discourse_event.rb:13:in 'block in DiscourseEvent.trigger'
lib/discourse_event.rb:12:in 'DiscourseEvent.trigger'
lib/post_destroyer.rb:91:in 'PostDestroyer#destroy'
app/controllers/topics_controller.rb:818:in 'TopicsController#destroy'

Le rappel concerné semble tenter d’appeler :

DiscourseEvents::Calendar::Extractor.destroy(post)

La page d’erreur complète signale :

NameError (uninitialized constant DiscourseEvents::Calendar::Extractor)

Le navigateur reçoit par conséquent une erreur 500, même si PostDestroyer#destroy a déjà atteint le point où il déclenche :post_destroyed, ce qui signifie que la suppression a peut-être déjà été appliquée avant que le rappel ne lève l’exception.

Cela s’est produit en développement. DiscourseEvents::Calendar::Extractor est normalement fourni par events, donc je me demande si cela pourrait être lié au rechargement en mode développement/à l’état des plugins plutôt qu’à l’absence de l’implémentation elle-même.

Je travaillais sur du code de suppression de sujets sans rapport à ce moment-là, mais l’exception elle-même se situe entièrement dans le gestionnaire :post_destroyed de discourse-events.

D’autres ont-ils rencontré DiscourseEvents::Calendar::Extractor devenant non défini dans une instance de développement ? Cela pourrait-il être lié au rechargement en développement/à l’état des plugins, ou le rappel :post_destroyed devrait-il charger l’extracteur différemment ?

1 « J'aime »