Erro intermitente "plugin não encontrado"

Estou desenvolvendo um plugin que facilitará a conexão de instalações do Discourse a qualquer aplicativo personalizado que sua organização possa ter e entregará notificações push através desse aplicativo (principalmente útil para iOS, onde o webpush não funciona). O repositório do plugin é GitHub - Sprachprofi/discourse-app-notifications: Send Discourse push notifications through FCM to any custom app. Atualmente, isso exige que o usuário final cole manualmente a chave do dispositivo do aplicativo em um campo personalizado na página Preferências de Notificações após o login.

Meu problema é que, quando alguém instala o aplicativo, faz login e, em seguida, copia e cola sua chave de dispositivo, não funciona. O Discourse retorna “plugin obrigatório ‘discourse_app_notifications’ não encontrado” para a ação POST /app_notifications/subscribe (e o mesmo para a ação unsubscribe). No entanto, quando a mesma pessoa força o encerramento do aplicativo e tenta o mesmo passo novamente, não há mensagem de erro e as notificações push funcionam.

O que poderia possivelmente fazer com que o Discourse reconheça o plugin em um caso e não o reconheça no outro, quando a mesma chamada é feita de dentro do aplicativo? Nenhuma alteração foi feita na instalação do Discourse nesse ínterim e esse comportamento é consistente e reproduzível.

Isso não necessariamente resolve seu problema, mas pode causar problemas e definitivamente torna seu código mais difícil de navegar para os não iniciados.

A estrutura do seu plugin é muito não convencional e você deve considerar refatorá-lo para corresponder aos padrões do Zeitwerk.

Não tenho certeza se isso causará algum dos seus problemas.

2 curtidas

Tive um problema semelhante (embora parecesse um aviso e não um erro), mas fazer minha linha assim:

usar o PLUGIN_NAME parece ter corrigido.

Como Robert disse, pode corrigir algumas coisas se você colocar seu controlador em app/controllers em vez de em plugin.rb. Eu também fiquei confuso sobre onde poderia estar.

1 curtida

Eu tenho requires_plugin DiscourseAppNotifications::PLUGIN_NAME, então não tenho certeza de qual alteração você está sugerindo, se houver?

A razão pela qual o plugin é estruturado desta forma é porque usei o plugin Pushover Notifications como base em vez de codificar do zero. É meu primeiro plugin e, devido à interação com o aplicativo, é notoriamente difícil de depurar, então eu esperava evitar alguns bugs desta forma…

1 curtida

Não. É mais um encolher de ombros. Eu tive o problema, mas você parece ter feito o que eu fiz para consertá-lo.

Parece o que eu teria feito.

O Rails é realmente exigente com um monte de coisas. Eu não sabia que ele permitiria que você colocasse essas coisas em plugin.rb. E eu não sei se mover as coisas para um monte de lugares diferentes vai consertar isso. Desculpe.

Obrigado, @pfaffman . Reescrevi o plugin de acordo com as diretrizes e agora está funcionando!

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

1 curtida

Fico feliz que tenha funcionado!

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