Während des Testens einiger nicht zusammenhängender Änderungen an der Themenlöschung in einer lokalen Entwicklungsinstanz führte das Löschen eines Themas zu einem 500 Internal Server Error.
Die Entwicklungsinstanz, die den Fehler ausgelöst hat, lief mit genau diesem Discourse-Commit:
Die Anfrage war:
DELETE /t/35
und die Exception stammt vom :post_destroyed-Callback von 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'
Das relevante Callback scheint zu versuchen, Folgendes aufzurufen:
DiscourseEvents::Calendar::Extractor.destroy(post)
Die vollständige Fehlerseite meldet:
NameError (uninitialized constant DiscourseEvents::Calendar::Extractor)
Der Browser erhält folglich einen 500-Fehler, obwohl PostDestroyer#destroy bereits den Punkt erreicht hat, an dem es :post_destroyed auslöst. Daher kann die Löschung bereits angewendet worden sein, bevor das Callback die Exception wirft.
Dies trat in der Entwicklungsumgebung auf. DiscourseEvents::Calendar::Extractor wird normalerweise von events bereitgestellt, daher frage ich mich, ob dies mit dem Neuladen im Entwicklungsmodus oder dem Plugin-Zustand zusammenhängen könnte, anstatt dass die Implementierung selbst fehlt.
Ich arbeitete zu dem Zeitpunkt an nicht zusammenhängendem Code zur Themenlöschung, aber die Exception selbst liegt vollständig innerhalb des :post_destroyed-Handlers von discourse-events.
Hat jemand anderes DiscourseEvents::Calendar::Extractor in einer Entwicklungsinstanz als undefiniert erlebt? Könnte dies mit dem Neuladen im Entwicklungsmodus oder dem Plugin-Zustand zusammenhängen, oder sollte das :post_destroyed-Callback den Extractor anders laden?
