Error intermitente "plugin no encontrado"

Estoy desarrollando un plugin que facilitará la conexión de las instalaciones de Discourse a cualquier aplicación personalizada que pueda tener su organización y enviará notificaciones push a través de esa aplicación (principalmente útil para iOS, donde webpush no funciona). El repositorio del plugin es GitHub - Sprachprofi/discourse-app-notifications: Send Discourse push notifications through FCM to any custom app. En este momento, esto requiere que el usuario final pegue manualmente la clave del dispositivo de la aplicación en un campo personalizado en la página de Preferencias de notificaciones después de iniciar sesión.

Mi problema es que cuando alguien instala la aplicación, inicia sesión y luego copia y pega su clave de dispositivo, no funciona, Discourse devuelve “plugin requerido ‘discourse_app_notifications’ no encontrado” para la acción POST /app_notifications/subscribe (y lo mismo para la acción unsubscribe). Sin embargo, cuando la misma persona cierra forzosamente la aplicación y luego repite el mismo paso, no hay ningún mensaje de error y las notificaciones push sí funcionan.

¿Qué podría causar que Discourse reconozca el plugin en un caso y no en el otro, cuando se realiza la misma llamada desde la aplicación? No se han realizado cambios en la instalación de Discourse mientras tanto y este comportamiento es consistente y reproducible.

Esto no necesariamente resuelve tu problema, pero puede causar inconvenientes y definitivamente hace que tu código sea más difícil de navegar para los no iniciados.

La estructura de tu plugin es muy poco convencional y deberías considerar refactorizarla para que coincida con los estándares de Zeitwerk.

No estoy seguro de si eso causará alguno de tus problemas.

2 Me gusta

Tuve un problema similar (aunque parecía ser una advertencia y no un error), pero al hacer mi línea así:

usar PLUGIN_NAME parece haberlo solucionado.

Como dijo Robert, podría solucionar algunas cosas si pones tu controlador en app/controllers en lugar de en plugin.rb. Yo también estaba confundido sobre dónde podría estar.

1 me gusta

Tengo requires_plugin DiscourseAppNotifications::PLUGIN_NAME, así que no estoy seguro de qué cambio sugieres, ¿si es que alguno?

La razón por la que el plugin está estructurado de esta manera es porque utilicé el plugin Pushover Notifications como base en lugar de codificar desde cero. Es mi primer plugin y, debido a la interacción con la aplicación, es notoriamente difícil de depurar, así que esperaba evitar algunos errores de esta manera…

1 me gusta

No. Es más bien un encogimiento de hombros. Tuve el problema, pero parece que hiciste lo mismo que yo para solucionarlo.

Suena a lo que yo habría hecho.

Rails es muy exigente con un montón de cosas. No sabía que te permitiría poner esas cosas en plugin.rb. Y no sé si mover cosas a un montón de lugares diferentes lo solucionará. Lo siento.

Gracias, @pfaffman. Reescribí el plugin siguiendo las directrices y ¡ahora funciona!

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

1 me gusta

¡Me alegro de que eso haya funcionado!

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