Erreur intermittente "plugin introuvable"

Je développe un plugin qui facilitera la connexion des installations Discourse à toute application personnalisée que votre organisation pourrait avoir et la diffusion de notifications push via cette application (principalement utile pour iOS où le webpush ne fonctionne pas). Le dépôt du plugin est GitHub - Sprachprofi/discourse-app-notifications: Send Discourse push notifications through FCM to any custom app. Actuellement, cela oblige l’utilisateur final à coller manuellement la clé de l’appareil depuis l’application dans un champ personnalisé sur la page Préférences de notification après s’être connecté.

Mon problème est que lorsqu’une personne installe l’application, se connecte, puis copie-colle sa clé d’appareil, cela ne fonctionne pas. Discourse renvoie « plugin requis ‘discourse_app_notifications’ introuvable » pour l’action POST /app_notifications/subscribe (et de même pour l’action unsubscribe). Cependant, lorsque la même personne force la fermeture de l’application, puis refait la même étape, il n’y a pas de message d’erreur et les notifications push fonctionnent.

Qu’est-ce qui pourrait amener Discourse à reconnaître le plugin dans un cas et pas dans l’autre, alors que le même appel est effectué depuis l’application ? Aucun changement n’a été apporté à l’installation de Discourse entre-temps et ce comportement est cohérent et reproductible.

Cela ne résout pas nécessairement votre problème, mais peut causer des problèmes et rend certainement votre code plus difficile à naviguer pour les non-initiés.

La structure de votre plugin est très non conventionnelle et vous devriez envisager de la refactoriser pour qu’elle corresponde aux normes Zeitwerk.

Je ne suis pas sûr que cela cause certains de vos problèmes.

2 « J'aime »

J’ai eu un problème similaire (bien que cela semblait être un avertissement et non une erreur), mais en faisant ma ligne comme ceci :

l’utilisation de PLUGIN_NAME semble l’avoir résolu.

Comme Robert l’a dit, cela pourrait résoudre certains problèmes si vous placez votre contrôleur dans app/controllers plutôt que dans plugin.rb. J’étais aussi confus quant à son emplacement.

1 « J'aime »

Je possède bien requires_plugin DiscourseAppNotifications::PLUGIN_NAME, donc je ne suis pas sûr du changement que vous suggérez, le cas échéant ?

La raison pour laquelle le plugin est structuré ainsi est que j’ai utilisé le plugin Pushover Notifications comme base plutôt que de coder à partir de zéro. C’est mon premier plugin et en raison de l’interaction avec l’application, il est notoirement difficile à déboguer, j’espérais donc éviter certains bugs de cette façon…

1 « J'aime »

Non. C’est plutôt un haussement d’épaules. J’ai eu le problème, mais vous semblez avoir fait ce que j’ai fait pour le résoudre.

Cela ressemble à ce que j’aurais fait.

Rails est vraiment pointilleux sur un tas de choses. Je ne savais pas qu’il vous permettrait de mettre ces choses dans plugin.rb. Et je ne sais pas si déplacer des choses dans un tas d’endroits différents va le résoudre. Désolé.

Merci, @pfaffman. J’ai réécrit le plugin conformément aux directives et il fonctionne maintenant !

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

1 « J'aime »

Content que ça ait fonctionné !

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