Я разрабатываю плагин, который упростит подключение установок Discourse к любому пользовательскому приложению вашей организации и позволит отправлять push-уведомления через это приложение (в основном это полезно для iOS, где webpush не работает). Репозиторий плагина находится по адресу GitHub - Sprachprofi/discourse-app-notifications: Send Discourse push notifications through FCM to any custom app · GitHub. В данный момент это требует, чтобы конечный пользователь вручную вставлял ключ устройства из приложения в пользовательское поле на странице Настройки уведомлений после входа в систему.
Моя проблема заключается в том, что когда кто-то устанавливает приложение, входит в систему, а затем пытается скопировать и вставить свой ключ устройства, это не работает: Discourse выдает ошибку «требуемый плагин ‘discourse_app_notifications’ не найден» для действия POST /app_notifications/subscribe (то же самое относится и к действию отписки). Однако, если тот же человек принудительно закроет приложение и повторит тот же шаг, сообщение об ошибке не появится, и push-уведомления будут работать.
Что может заставить Discourse распознавать плагин в одном случае и не распознавать его в другом, когда один и тот же вызов выполняется из приложения? Никаких изменений в установке Discourse за это время не производилось, и это поведение является последовательным и воспроизводимым.
У меня была похожая проблема (хотя это, казалось, было предупреждением, а не ошибкой), но изменение строки на следующий вид:
с использованием PLUGIN_NAME, похоже, решило её.
Как сказал Роберт, это может исправить некоторые проблемы, если вы поместите свой контроллер в app/controllers, а не в plugin.rb. Я тоже был в недоумении, где он может находиться.
У меня действительно есть requires_plugin DiscourseAppNotifications::PLUGIN_NAME, поэтому я не совсем понимаю, какое изменение вы предлагаете, если вообще предлагаете?
Причина, по которой плагин структурирован таким образом, заключается в том, что я использовал плагин Pushover Notifications в качестве основы, а не писал код с нуля. Это мой первый плагин, и из-за взаимодействия с приложением отладка в нём печально известна своей сложностью, поэтому я надеялся избежать некоторых ошибок таким способом…
Нет. Это скорее пожимание плечами. У меня была такая проблема, но, кажется, вы сделали то же самое, что и я, чтобы её исправить.
Звучит как то, что я бы тоже сделал.
Rails очень придирчив к целому ряду вещей. Я не знал, что он позволит разместить такие вещи в plugin.rb. И не уверен, что перемещение их в разные места исправит проблему. Извините.