Feedback sobre a nova fila de revisão (2019)

Robin,

Estou atualmente preparando um PR para o Discord OAuth Plugin, principalmente para armazenar mais informações do usuário do Discord no Discourse. Estou tentando usar seu modelo ReviewableUser para manter a funcionalidade que implementa aprovação automatizada.

Como a implementação atualmente cria uma revisão para novos usuários de forma assíncrona, preciso verificar se tal revisão foi criada e limpá-la.

Infelizmente, estou recebendo um erro Ruby muito estranho e me perguntei se você já o encontrou.

O código é:

  def after_create_account(user, auth)
    super
    
    data = auth[:extra_data]
    if !user.approved && data[:auto_approve]
      user.approved = true
      user.approved_by_id = Discourse.system_user.id
      if reviewable_user = ReviewableUser.find_by(target: user)
          reviewable_user.set_approved_fields!(user, Discourse.system_user)
      end
    end
  end

Assim que o ReviewableUser.find_by é executado, recebo uma exceção:

*** NameError Exception: wrong constant name #<Class:0x000056134e417870>::DiscordAuthenticator

Embora eu achasse que estava fazendo bons progressos no meu Ruby, não entendo por que isso está acontecendo.

Será um problema de caminho? Já tentei vários requires, mas isso só complica mais as coisas.

É muito parecido com padrões semelhantes em outras partes do código principal. Qualquer ideia é muito apreciada!

Repositório aqui, se precisar: discourse-plugin-discord-auth/plugin.rb at master · merefield/discourse-plugin-discord-auth · GitHub