Por que meu plugin parou de funcionar depois de meses?

Olá, escrevi um plugin bem básico que adiciona um token JWT após um usuário fazer login, e ele tem funcionado bem por quase um ano. Hoje nosso fórum caiu porque, de alguma forma, o certificado expirou (o que é curioso por si só), então tentei um ./launcher app rebuild, e a reconstrução falha devido a um erro no plugin.

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

Você não consegue construir o Discourse devido a este erro durante a inicialização do plugin:

uninitialized constant Auth::DefaultCurrentUserProvider

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

A linha relevante no plugin é apenas:

class JwtCurrentUserProvider < Auth::DefaultCurrentUserProvider

Não consigo imaginar por que isso parou de funcionar repentinamente, pois não parecem haver alterações relevantes em lib/auth/current_user_provider.rb, então essa constante deveria existir. A menos que tenha havido uma alteração na ordem em que bibliotecas e plugins são carregados?

Comentar o plugin em meu app.yaml permite que a reconstrução seja concluída com sucesso. Descomentá-lo faz com que ele falhe novamente.

Para contexto, estamos executando na versão 2.8.0beta4. Alguma ideia do que pode estar acontecendo de repente?

Acabei de encontrar este tópico enquanto procurava uma solução para o mesmo problema e, entretanto, encontrei uma solução.

O include para a definição da classe deve agora estar dentro do bloco after_initialize, caso contrário, ele não funciona mais.

2 curtidas

Por:

Confirmo que sua correção parece ser o que resolveu para @wilson29thid :slight_smile:

1 curtida

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