Errore intermittente "plugin non trovato"

Sto sviluppando un plugin che renderà facile collegare le installazioni di Discourse a qualsiasi app personalizzata che la tua organizzazione possa avere e fornire notifiche push tramite quell’app (principalmente utile per iOS dove webpush non funziona). Il repository del plugin è GitHub - Sprachprofi/discourse-app-notifications: Send Discourse push notifications through FCM to any custom app. Al momento, ciò richiede all’utente finale di incollare manualmente la chiave del dispositivo dall’app in un campo personalizzato nella pagina Preferenze Notifiche dopo l’accesso.

Il mio problema è che quando qualcuno installa l’app, accede e poi copia-incolla la sua chiave del dispositivo, non funziona, Discourse restituisce “plugin richiesto ‘discourse_app_notifications’ non trovato” per l’azione POST /app_notifications/subscribe (e lo stesso per l’azione unsubscribe). Tuttavia, quando la stessa persona forza l’uscita dall’app e poi ripete lo stesso passaggio, non ci sono messaggi di errore e le notifiche push funzionano.

Cosa potrebbe causare il riconoscimento del plugin da parte di Discourse in un caso e non nell’altro, quando la stessa chiamata viene effettuata dall’app? Nessuna modifica è stata apportata all’installazione di Discourse nel frattempo e questo comportamento è coerente e riproducibile.

Questo non risolve necessariamente il tuo problema, ma potrebbe causare problemi e rende sicuramente il tuo codice più difficile da navigare per chi non è iniziato.

La struttura del tuo plugin è molto insolita e dovresti considerare di rifattorizzarla per conformarla agli standard Zeitwerk.

Non sono sicuro che questo causi nessuno dei tuoi problemi.

2 Mi Piace

Ho avuto un problema simile (anche se sembrava un avviso e non un errore), ma rendendo la mia riga così:

l’uso di PLUGIN_NAME sembra averlo risolto.

Come ha detto Robert, potrebbe risolvere alcune cose se metti il tuo controller in app/controllers piuttosto che in plugin.rb. Anch’io ero confuso su dove potesse essere.

1 Mi Piace

Ho requires_plugin DiscourseAppNotifications::PLUGIN_NAME, quindi non sono sicuro di quale modifica stai suggerendo, se ce n’è una?

Il motivo per cui il plugin è strutturato in questo modo è perché ho utilizzato il plugin Pushover Notifications come base anziché codificare da zero. È il mio primo plugin e, a causa dell’interazione con l’app, è notoriamente difficile da debuggare, quindi speravo di evitare alcuni bug in questo modo…

1 Mi Piace

No. È per lo più un’alzata di spalle. Ho avuto il problema, ma sembra che tu abbia fatto quello che ho fatto io per risolverlo.

Sembra quello che avrei fatto.

Rails è davvero esigente su un sacco di cose. Non sapevo che ti avrebbe permesso di inserire quelle cose in plugin.rb. E non so se spostare le cose in un sacco di posti diversi lo risolverà. Mi dispiace.

Grazie, @pfaffman . Ho riscritto il plugin secondo le linee guida e ora funziona!

Nuovo URL: GitHub - Sprachprofi/discourse-fcm-notifications: Send Discourse push notifications through FCM to any custom app

1 Mi Piace

Sono contento che abbia funzionato!

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