Errore: callback dell'iscrizione al gruppo Patreon fallita per il nuovo utente

Sto configurando un server Discourse con integrazione Patreon. Ho ricevuto il seguente messaggio di errore quando i Patrons si registrano su Discourse:

Patreon group membership callback failed for new user 7 with error: undefined method `add' for nil:NilClass.
/var/www/discourse/plugins/discourse-patreon/plugin.rb:166:in `block (3 levels) in activate!'
/var/www/discourse/plugins/discourse-patreon/plugin.rb:164:in `each'
/var/www/discourse/plugins/discourse-patreon/plugin.rb:164:in `block (2 levels) in activate!'
/var/www/discourse/lib/plugin/instance.rb:215:in `public_send'
/var/www/discourse/lib/plugin/instance.rb:215:in `block (2 levels) in add_model_callback'

L’utente si registra tramite autenticazione Patreon. L’utente viene creato, Patreon appare sotto Account associati, ma i dati Patreon (Importo, Ricompense) non vengono aggiunti al suo profilo e non viene aggiunto al gruppo. Se faccio clic su Aggiorna dati Patreon e sincronizza gruppi, i dati vengono visualizzati e l’utente viene aggiunto al gruppo con successo.

Non si tratta di nuovi Patrons. Sono Patrons da molto tempo e si uniscono a Discourse solo ora.

Sto attualmente eseguendo la versione corrente - 2.4.0.beta4. È sul mio server, ma è un’installazione standard.

Prima di aggiornare a questa versione, ho disattivato il plugin e ho eliminato e ricreato la Client Key. (Un tentativo disperato di risolvere un problema che in realtà è stato risolto dalla nuova versione…) Mi chiedo se abbia “rotto” la configurazione relativa al gruppo dei Patrons, anche se sembra strano che la sincronizzazione funzioni, ma la registrazione di un nuovo utente no.

Ho appena effettuato un test con un utente di prova:

  1. Crea un utente di prova su Patreon con una donazione alla mia campagna. (Il webhook viene attivato, ma non credo sia rilevante poiché il problema si verifica con i Patrons “vecchi”.)
  2. Fai clic su Aggiorna dati Patreon e sincronizza gruppi, attendi il messaggio asincrono che i dati sono stati aggiornati.
  3. Registra l’utente di prova su Discourse.
  4. Controlla i dati Patreon per l’utente di prova. Nessuna sezione Patreon - Importo, Ricompense. L’utente non è incluso nel gruppo dei Patrons.
  5. Fai clic su Aggiorna dati Patreon e sincronizza gruppi, attendi il messaggio asincrono che i dati sono stati aggiornati.
  6. Controlla i dati Patreon per l’utente di prova. La sezione Patreon è ora presente, con Importo e Ricompense. L’utente è incluso nel gruppo dei Patrons.

Grazie in anticipo per qualsiasi aiuto!

Qualche pensiero su questo @vinothkannans?

Ho dato un’occhiata al codice e ho notato che la funzionalità di assegnazione dei gruppi è gestita in due punti:

  1. add_model_callback in plugin.rb, che gestisce la registrazione di un nuovo utente singolo.
  2. sync_groups in patron.rb, che gestisce la sincronizzazione in batch dell’appartenenza ai gruppi per tutti i membri.

La mia esperienza è che sync_groups funziona, mentre add_model_callback no.

Ho notato che sync_groups include la seguente riga:

next if group.nil?

È necessaria la stessa riga in add_model_callback? (Prima della riga 166.)

Questo fermerebbe l’eccezione, ma non so se renderebbe tutto corretto. Non conosco il codice né il modello dei dati, quindi è praticamente un’ipotesi.

3 Mi Piace

Sì, hai ragione. Grazie per la segnalazione. È stato corretto nel commit qui sotto

2 Mi Piace

Grazie, @vinothkannans!

3 Mi Piace