新しいレビューキュー(2019)に関するフィードバック

Robin さん、

現在、Discord OAuth プラグイン(https://meta.discourse.org/t/discord-oauth2-plugin/67174)の PR を作成中です。主な目的は、Discourse に Discord ユーザーの情報をより多く保存することです。自動化された承認機能を実装している ReviewableUser モデルを活用して、既存の機能を維持しようとしています。

現在の実装では、新規ユーザーのレビューが非同期で開始されるため、そのようなレビューが作成されているかを確認し、クリアする必要があります。

しかし、非常に奇妙な Ruby エラーが発生しており、あなたがこのエラーに遭遇したことがあるかどうかわかりません。

コードは以下の通りです:

  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

ReviewableUser.find_by が実行されるとすぐに、以下の例外が発生します:

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

Ruby のスキルが向上していると思っていたのですが、なぜこのようなことが起こるのかがわかりません。

パスの問題でしょうか?いくつかの require を試しましたが、問題が雪だるま式に大きくなってしまいます。

これはコアコードの他の部分で見られる類似のパターンと非常に似ています。何かご助言があれば、大変感謝いたします!

必要であれば、リポジトリはこちらです:discourse-plugin-discord-auth/plugin.rb at master · merefield/discourse-plugin-discord-auth · GitHub