Recente aggiornamento di Discourse ha compromesso il plugin outlet in modo strano

Uno dei cambiamenti apportati a Discourse nell’ultima settimana circa ha interrotto il mio plugin e non riesco a capire cosa sia effettivamente sbagliato o come risolverlo. Il plugin ha funzionato bene per anni fino a questo momento.

Il plugin fa varie cose, ma quella che sembra rilevante qui è l’aggiunta di un pulsante alla pagina del profilo utente.

Ora, quando visito quella pagina per qualsiasi utente, la maggior parte della pagina non viene renderizzata (incluso il pulsante che il mio plugin mira ad aggiungere):

(Se disabilito il plugin tramite il suo pulsante Impostazioni, la pagina viene renderizzata correttamente.)

La console Javascript di Chrome mostra la seguente eccezione e traccia dello stack ogni volta che questa pagina viene aggiornata:

Non sono sicuro di cosa pensare di quell’errore poiché non è il mio codice, e t che è not a function non è sulla riga, o nulla di vicino ad essa, da cui proviene l’eccezione. Abbastanza confuso. Ma non sono un esperto di JS, quindi forse mi sfugge qualcosa qui.

Passando attraverso il debugger di Chrome, il problema si verifica su quella riga durante l’elaborazione del template del mio plugin, ma non riesco a vedere cosa stia effettivamente causando il problema, o se sia dovuto a qualcosa che devo cambiare/aggiornare o a un bug in Discourse stesso.

Il codice JS del plugin e il template HBS che penso siano coinvolti si trovano nel mio connettore user-profile-primary, che può essere trovato qui:

Non lo so per certo, ma mi è sembrato che questi recenti commit di Discourse potrebbero potenzialmente essere coinvolti:

Qualsiasi suggerimento sarebbe molto apprezzato!

Ciao @LeoDavidson - grazie per aver sollevato questo problema. Hai quasi certamente ragione sul fatto che sia correlato a quei commit: approfondirò e cercherò di capire cosa è cambiato. Non intendevo introdurre alcuna modifica nel comportamento.

Nel frattempo, questa PR dovrebbe risolvere il problema spostando i tuoi connettori plugin in una struttura di directory più comune:

10 Mi Piace

Molte, molte grazie! Sia per la PR che per la rapidità. L’ho appena applicata e ora sembra tutto a posto!

4 Mi Piace

Ho analizzato cosa ha causato questo cambiamento di comportamento. I connettori si trovavano in questo modo:

assets/javascripts/discourse/templates/user/connectors/{outlet-name}/{unique-name}.js
assets/javascripts/discourse/templates/user/connectors/{outlet-name}/{unique-name}.hbs

Quel /user/ aggiuntivo nel percorso significa che non viene rilevato dalla nostra logica unColocateConnectors.

Ho cercato in all-the-plugins e all-the-themes e non vedo altre occorrenze di questo layout di directory. Quindi, per ora, lascerò le cose come sono, a meno che non riceviamo ulteriori segnalazioni di problemi.

4 Mi Piace

Questo argomento è stato chiuso automaticamente dopo 554 giorni. Non sono più consentite nuove risposte.