Во время тестирования некоторых не связанных с этим изменений, касающихся удаления тем, в локальной среде разработки удаление темы возвращало 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 должен загружать экстрактор иным образом?
