Intermittierender "plugin not found" Fehler

Ich entwickle ein Plugin, das es einfach macht, Discourse-Installationen mit jeder benutzerdefinierten App zu verbinden, die Ihre Organisation möglicherweise hat, und Push-Benachrichtigungen über diese App zu liefern (hauptsächlich nützlich für iOS, wo Webpush nicht funktioniert). Das Plugin-Repository ist GitHub - Sprachprofi/discourse-app-notifications: Send Discourse push notifications through FCM to any custom app. Derzeit muss der Endbenutzer den Geräteschlüssel aus der App manuell in ein benutzerdefiniertes Feld auf der Seite Benachrichtigungseinstellungen einfügen, nachdem er sich angemeldet hat.

Mein Problem ist, dass, wenn jemand die App installiert, sich anmeldet und dann seinen Geräteschlüssel kopiert und einfügt, es nicht funktioniert. Discourse gibt für die POST /app_notifications/subscribe-Aktion (und dasselbe für die unsubscribe-Aktion) die Meldung „erforderliches Plugin ‘discourse_app_notifications’ nicht gefunden“ aus. Wenn dieselbe Person die App jedoch erzwingt beendet und dann denselben Schritt erneut ausführt, gibt es keine Fehlermeldung und die Push-Benachrichtigungen funktionieren.

Was könnte dazu führen, dass Discourse das Plugin in einem Fall erkennt und im anderen Fall nicht, wenn derselbe Aufruf aus der App heraus erfolgt? In der Zwischenzeit wurden keine Änderungen an der Discourse-Installation vorgenommen und dieses Verhalten ist konsistent und reproduzierbar.

Dies löst Ihr Problem nicht unbedingt, kann aber zu Problemen führen und macht Ihren Code für Uneingeweihte definitiv schwerer zu durchsuchen.\n\nDie Struktur Ihres Plugins ist sehr unkonventionell und Sie sollten eine Refaktorierung in Betracht ziehen, um die Zeitwerk-Standards zu erfüllen.\n\nIch bin mir nicht sicher, ob dies eines Ihrer Probleme verursacht.\n\nStructuring a plugin for Rails autoloading

2 „Gefällt mir“

Ich hatte ein ähnliches Problem (obwohl es eine Warnung und kein Fehler zu sein schien), aber indem ich meine Zeile wie folgt änderte:

PLUGIN_NAME zu verwenden, schien es behoben zu haben.

Wie Robert sagte, könnte es einige Dinge beheben, wenn Sie Ihren Controller in app/controllers anstatt in plugin.rb legen. Ich war auch verwirrt, wo er sein könnte.

1 „Gefällt mir“

Ich habe requires_plugin DiscourseAppNotifications::PLUGIN_NAME, daher bin ich mir nicht sicher, welche Änderung Sie vorschlagen, falls überhaupt?\n\nDer Grund, warum das Plugin so strukturiert ist, ist, dass ich das Pushover Notifications Plugin als Grundlage verwendet habe, anstatt von Grund auf neu zu programmieren. Es ist mein erstes Plugin und aufgrund der Interaktion mit der App ist es notorisch schwierig zu debuggen, daher hoffte ich, einige Fehler auf diese Weise zu vermeiden…

1 „Gefällt mir“

Nein. Es ist meistens ein Achselzucken. Ich hatte das Problem, aber Sie scheinen getan zu haben, was ich getan habe, um es zu beheben.

Klingt nach dem, was ich getan hätte.

Rails ist wirklich wählerisch bei einer Reihe von Dingen. Ich wusste nicht, dass es Ihnen erlaubt, diese Dinge in plugin.rb zu stecken. Und ich weiß nicht, ob es helfen wird, Dinge an verschiedene Orte zu verschieben. Entschuldigung.

Danke, @pfaffman. Ich habe das Plugin gemäß den Richtlinien neu geschrieben und es funktioniert jetzt!

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

1 „Gefällt mir“

Das hat funktioniert!

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