Perché il mio plugin ha smesso di funzionare dopo mesi?

Ciao, ho scritto un plugin molto semplice che aggiunge un token JWT dopo che un utente effettua l’accesso, e ha funzionato bene per quasi un anno. Oggi il nostro forum è andato offline perché in qualche modo il certificato è scaduto (cosa curiosa di per sé), quindi ho provato un ./launcher app rebuild, e la ricostruzione fallisce a causa di un errore nel plugin.

I, [2022-01-27T00:16:48.616458 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
** PLUGIN FAILURE **

Non è possibile creare Discourse a causa di questo errore durante l'inizializzazione del plugin:

uninitialized constant Auth::DefaultCurrentUserProvider

/var/www/discourse/plugins/discourse-jwt-session/lib/jwt_current_user_provider.rb:3:in `<main>'

La riga pertinente nel plugin è solo:

class JwtCurrentUserProvider < Auth::DefaultCurrentUserProvider

Non riesco a immaginare perché questo abbia improvvisamente smesso di funzionare, poiché non sembrano esserci modifiche rilevanti a lib/auth/current_user_provider.rb, quindi quella costante dovrebbe esistere ancora. A meno che non ci sia stata una modifica all’ordine in cui vengono caricati le librerie e i plugin?

Commentare il plugin nel mio app.yaml consente il completamento della ricostruzione con successo. Decommentarlo lo fa fallire di nuovo.

Come contesto, stiamo eseguendo la versione 2.8.0beta4. Qualche idea su cosa potrebbe succedere all’improvviso?

Ho appena trovato questo argomento mentre cercavo una soluzione per lo stesso problema e nel frattempo ho trovato una soluzione.

L’inclusione per la definizione della classe dovrebbe ora essere all’interno del blocco after_initialize, altrimenti non funziona più.

2 Mi Piace

Per:

Confermo che la tua correzione sembra essere ciò che ha risolto il problema per @wilson29thid :slight_smile:

1 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.