Discourse-events могут вызывать ошибку 500 при удалении темы в режиме разработки: Calendar::Extractor не инициализирован

Во время тестирования некоторых не связанных с этим изменений, касающихся удаления тем, в локальной среде разработки удаление темы возвращало 500 Internal Server Error.

Среда разработки, в которой возникла ошибка, работала с этим конкретным коммитом Discourse:

Запрос выглядел следующим образом:

DELETE /t/35

и исключение возникает из колбэка :post_destroyed плагина 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'

Похоже, что соответствующий колбэк пытается вызвать:

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

Полная страница ошибки сообщает:

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

В результате браузер получает ответ 500, хотя PostDestroyer#destroy уже достиг той точки, где он запускает :post_destroyed, поэтому удаление могло уже быть применено до того, как колбэк вызвал ошибку.

Это произошло в режиме разработки. DiscourseEvents::Calendar::Extractor обычно предоставляется плагин events, поэтому я задумываюсь, может ли это быть связано с перезагрузкой в режиме разработки или состоянием плагинов, а не с тем, что сама реализация отсутствует.

В тот момент я работал над кодом удаления тем, не связанным с этой проблемой, но само исключение полностью находится внутри обработчика :post_destroyed плагина discourse-events.

Кто-нибудь еще сталкивался с тем, что DiscourseEvents::Calendar::Extractor становится неопределенным в среде разработки? Может ли это быть связано с перезагрузкой в режиме разработки или состоянием плагинов, или же колбэк :post_destroyed должен загружать экстрактор иным образом?

1 лайк