Rails 4.0.4 アプリでレコードを認証するためにSorcery gem (バージョン 0.8.6) を使用しています。Company
認証フローは正常に機能していますが、Sorcery のサブモジュールを使用しようとすると問題が発生します -:reset_password
および:user_activation
. Railsは、レコード ( )undefined method
のインスタンスで Sorcery サブモジュールで定義されたインスタンス メソッドを呼び出すときに例外をスローします。Company
@company
問題は断続的に発生し、論理的な方法で再現できません。1% の@company
確率でメソッドが想定どおりに処理され、残りの 99% の確率では処理されません。
上の画面では、 reset_password.rbdeliver_reset_password_instructions!
で定義されているを呼び出そうとしました。
My Sorcery 初期化子 ( config/initializers/sorcery.rb
) にはRails.application.config.sorcery.submodules = [:reset_password, :user_activation]
、 とが含まれていますconfig.user_class = "Company"
。
My Company モデル ( app/models/company.rb
) には が含まれてauthenticates_with_sorcery!
います。私が正しければ、これらのサブモジュールを含め、構成サブモジュールで定義されたメソッドでモデルを拡張する必要があります。
同じ動作がuser_activation.rbsend_activation_success_email!
で定義されている他のすべてのインスタンス メソッドで発生していることに言及する価値があります(直接呼び出しているわけではありませんが、Sorcery は会社の作成が成功したときに 1% の時間しか呼び出しません)。
これに約2日間苦労しており、アイデアが不足しています。
どんな助けでも大歓迎です!
アップデート
@company
コンピューターを離れて数時間後に戻った後、初めて動作するように見える (サブモジュールで定義されたインスタンス メソッドに応答する) ことに気付きました。Railsサーバーが再起動されるまで動作し続けます。