¿Por qué dejó de funcionar mi plugin después de meses?

Hola, escribí un plugin muy básico que añade un token JWT después de que un usuario inicia sesión, y ha estado funcionando bien durante casi un año. Hoy nuestro foro se cayó porque de alguna manera el certificado expiró (lo cual es curioso en sí mismo), así que intenté un ./launcher app rebuild, y la reconstrucción falla debido a un error en el plugin.

I, [2022-01-27T00:16:48.616458 #1]  INFO -- : 
> cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
** FALLO DEL PLUGIN **

No puedes reconstruir Discourse debido a este error durante la inicialización del plugin:

uninitialized constant Auth::DefaultCurrentUserProvider

/var/www/discourse/plugins/discourse-jwt-session/lib/jwt_current_user_provider.rb:3:in `<main>'

La línea relevante en el plugin es solo:

class JwtCurrentUserProvider < Auth::DefaultCurrentUserProvider

No puedo imaginar por qué esto dejaría de funcionar de repente, ya que no parece haber ningún cambio relevante en lib/auth/current_user_provider.rb, por lo que esa constante debería existir. ¿A menos que haya habido un cambio en el orden en que se cargan las bibliotecas y los plugins?

Comentar el plugin en mi app.yaml permite que la reconstrucción se complete con éxito. Descomentarlo hace que falle de nuevo.

Como contexto, estamos ejecutando la versión 2.8.0beta4. ¿Alguna idea de lo que podría estar pasando de repente?

Acabo de encontrar este tema mientras buscaba una solución para el mismo problema, y mientras tanto he encontrado una solución.

El include para la definición de la clase ahora debe estar dentro del bloque after_initialize, de lo contrario ya no funciona.

2 Me gusta

Por:

Confirmo que tu arreglo parece ser lo que lo solucionó para @wilson29thid :slight_smile:

1 me gusta

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