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