断続的な「プラグインが見つかりません」エラー

カスタムアプリとDiscourseの連携を容易にし、プッシュ通知をそのアプリに配信するプラグイン(主にWebPushが機能しないiOSで役立ちます)を開発しています。プラグインリポジトリはこちらです: https://github.com/Sprachprofi/discourse-app-notifications。現在、これにはエンドユーザーが、ログイン後に[通知設定](https://meta.discourse.org/u/judith/preferences/notifications)ページにあるカスタムフィールドにアプリからデバイスキーを手動で貼り付ける必要があります。

問題は、誰かがアプリをインストールし、ログインしてからデバイスキーをコピー&ペーストしようとすると、うまくいかず、DiscourseはPOST /app_notifications/subscribeアクション(およびunsubscribeアクションも同様)に対して「required plugin ‘discourse_app_notifications’ not found」というエラーを返します。しかし、同じ人がアプリを強制終了してからもう一度同じ手順を行うと、エラーメッセージはなく、プッシュ通知は機能します。

同じ呼び出しがアプリ内から行われているのに、Discourseが一方のケースでプラグインを認識し、もう一方のケースで認識しない原因は何でしょうか? その間、Discourseのインストールに変更はなく、この動作は一貫しており、再現可能です。

これは必ずしもあなたの問題を解決するものではありませんが、問題を引き起こす可能性があり、経験の浅い人にとってはコードのナビゲーションを間違いなく難しくします。

プラグインの構造は非常に型破りであり、Zeitwerk標準に合わせるためにリファクタリングを検討する必要があります。

それがあなたの問題のいずれかの原因となっているかどうかはわかりません。

「いいね!」 2

同様の問題が発生しました(エラーではなく警告のようでしたが)、私の行を次のように変更しました。

PLUGIN_NAME を使用すると、それが修正されたようです。

Robert が言ったように、コントローラーを plugin.rb ではなく app/controllers に配置すると、いくつかの問題が修正される可能性があります。私もどこにあるのか混乱していました。

「いいね!」 1

requires_plugin DiscourseAppNotifications::PLUGIN_NAME を持っているので、どのような変更を提案されているのか(もしあれば)わかりません。

プラグインがこのように構成されている理由は、最初からコーディングするのではなく、Pushover Notifications プラグインを基盤として使用したためです。これは私の最初のプラグインであり、アプリとのやり取りによりデバッグが非常に困難であるため、このようにしてバグを回避したいと考えていました…

「いいね!」 1

いいえ。ほとんどは肩透かしです。私は問題がありましたが、あなたはそれを修正するために私がしたことと同じことをしたようです。

私がやったであろうことと同じように聞こえます。

Railsは多くのことに対して非常にうるさいです。それがplugin.rbにあのようなものを入れさせてくれるとは知りませんでした。そして、いろいろな場所に物を移動させることがそれを修正するかどうかは分かりません。すみません。

ありがとうございます、@pfaffman さん。ガイドラインに従ってプラグインを書き直し、正常に動作するようになりました!

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

「いいね!」 1

うまくいってよかったです!

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