Durante i test su alcune modifiche relative alla cancellazione di argomenti non correlate, la cancellazione di un argomento ha restituito un errore 500 Internal Server Error.
L’istanza di sviluppo che ha generato l’errore stava eseguendo esattamente questo commit di Discourse:
La richiesta era:
DELETE /t/35
e l’eccezione proviene dal callback :post_destroyed di 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'
Il callback pertinente sembra tentare di chiamare:
DiscourseEvents::Calendar::Extractor.destroy(post)
La pagina di errore completa riporta:
NameError (uninitialized constant DiscourseEvents::Calendar::Extractor)
Di conseguenza, il browser riceve un errore 500, anche se PostDestroyer#destroy ha già raggiunto il punto in cui innesca :post_destroyed, il che significa che la cancellazione potrebbe essere già stata applicata prima che il callback generasse l’eccezione.
Ciò si è verificato in ambiente di sviluppo. DiscourseEvents::Calendar::Extractor è normalmente fornito da events, quindi mi chiedo se questo problema potrebbe essere correlato al ricaricamento in modalità di sviluppo o allo stato dei plugin, piuttosto che all’assenza effettiva dell’implementazione.
All’epoca stavo lavorando su codice di cancellazione argomenti non correlato, ma l’eccezione stessa si trova interamente all’interno del gestore :post_destroyed di discourse-events.
Alcun altro ha riscontrato DiscourseEvents::Calendar::Extractor che diventa indefinito in un’istanza di sviluppo? Potrebbe essere correlato al ricaricamento in sviluppo o allo stato dei plugin, oppure il callback :post_destroyed dovrebbe caricare l’estrattore in modo diverso?
