私はDevise 2.0.4(devise-neo4j付き)、Warden 1.1.1、Rails 3.2.3を使用しています。
私が覚えていない状態でサインインするオプションをオンにすると、問題なくサインアウトできます。
私が覚えているオプションを使用してサインインすると、サインアウトできません。
コードを掘るdevise-2.0.4/lib/devise/hooks/forgetable.rb
(Warden::Manager.before_logout do |record, warden, options|
)にあるbefore_logoutフックがrecord => nil
と呼ばれていることが分かりました。
私はそれはバグ、ワーデンや鉱山を考案のかどうかわからないんだけど...私を覚えているユーザでログアウトするときにrecord = nilで呼び出されたbefore_logoutフック
次のようにスタックトレースは次のとおりです。
devise-2.0.4/lib/devise/hooks/forgetable.rb:7:in `(root)'
org/jruby/RubyProc.java:258:in `call'
warden-1.1.1/lib/warden/hooks.rb:14:in `_run_callbacks'
org/jruby/RubyArray.java:1615:in `each'
warden-1.1.1/lib/warden/hooks.rb:9:in `_run_callbacks'
warden-1.1.1/lib/warden/manager.rb:53:in `_run_callbacks'
warden-1.1.1/lib/warden/proxy.rb:243:in `logout'
org/jruby/RubyArray.java:1615:in `each'
warden-1.1.1/lib/warden/proxy.rb:241:in `logout'
devise-2.0.4/lib/devise/controllers/helpers.rb:159:in `sign_out_all_scopes'
devise-2.0.4/lib/devise/controllers/helpers.rb:139:in `sign_out'
devise-2.0.4/app/controllers/devise/sessions_controller.rb:23:in `destroy'