Plugin che causa errori durante la ricostruzione

Ecco cosa sta succedendo:

  1. Alcune persone hanno una versione molto vecchia del plugin “question answer” con il mio nome utente GitHub personale nell’URL del repository nel loro file app.yml.

  2. Anni fa ho trasferito il plugin QnA a paviliondev. GitHub reindirizza gli URL dei repository quando vengono trasferiti, quindi i vecchi URL con il mio nome utente personale continuavano a funzionare.

  3. Anni dopo, Pavilion ha trasferito il plugin Question Answer a Discourse. Inizialmente Discourse ha mantenuto il nome discourse-question-answer.

  4. Pochi mesi fa ho creato un mio fork del plugin ospitato in discourse, mentre era ancora chiamato discourse-question-answer.

  5. Le persone con collegamenti molto vecchi al plugin QnA con il mio account GitHub personale stavano ora clonando il mio nuovo fork del plugin discourse-question-answer significativamente aggiornato, ospitato in discourse. In altre parole, un link molto vecchio ora puntava a un fork di un nuovo plugin. Nonostante gli anni trascorsi, avrei dovuto prevederlo, quindi mi scuso per questo. Ho rimosso quel fork.

  6. Discourse ha cambiato il nome di discourse-question-answer in discourse-upvotes. Questo cambio di nome non ha avuto un impatto materiale sul tuo caso @Jaap-Jan_Swijnenburg, ma è il motivo per cui ora stai (inaspettatamente) clonando un fork di quel repository.

  7. Una migrazione in discourse/discourse-upvotes (ex discourse-question-answer) presuppone che la colonna value in post_custom_fields sia di tipo JSON.

  8. I vecchi dati creati dal plugin quando era angusmcleod/discourse-question-answer (anni fa) non sono stati salvati come JSON valido dalla “concern” HasCustomFields in discourse/discourse. Sto ipotizzando, ma questi dati sono stati probabilmente aggiunti prima che il controllo del tipo JSON venisse aggiunto 4 anni fa (È ancora possibile che si verifichino JSON non validi nei campi personalizzati registrati come JSON in casi limite).

Pertanto

  1. Quando le persone con l’URL (vecchio di anni) angusmcleod/discourse-question-answer nel loro app.yml aggiornano il loro Discourse, viene clonato il plugin della nuova versione, la migrazione viene eseguita e potenzialmente crea questo errore.

Ci sono alcune soluzioni a questo problema:

  1. @Jaap-Jan_Swijnenburg nel tuo caso devi solo rimuovere il riferimento al mio vecchio plugin QnA e potrai ricostruire il tuo sito. Questo è tutto; niente di più. Sembra che tu l’abbia fatto :+1:

  2. La migrazione del plugin discourse/discourse-upvotes potrebbe essere aggiornata per gestire valori non JSON nella colonna value in post_custom_fields.

Noterei che 2 gestirebbe anche il caso aggiuntivo di persone che desiderano effettivamente passare da una vecchia versione del plugin QnA a discourse-upvotes. In tal caso, la migrazione verrà eseguita e fallirà se una qualsiasi voce nella colonna value di post_custom_fields non è un JSON valido.

5 Mi Piace