RailsでActionController::RoutingErrorやActionController::MethodNotAllowedといったエラーが発生した際に、rescue_action_in_publicメソッドでキャッチして、カスタムしたエラーページを描画するよう修正してみたが、エラーページを描画する際に、
ActionView::TemplateError (You must activate the Authlogic::Session::Base.controller with a controller object before creating objects)
といったエラーが発生する。エラー画面を描画する際に、AuthLogicのUserSessionにアクセスしてるんだけど、その際に↑のエラーが発生する。
Googleせんせーに聞いてみると、
before_filter :activate_authlogic
といったコードが良く見つかる。ただ、activate_authlogicという処理自体は、authlogic側のrails_adapter.rbの中で
klass.prepend_before_filter :activate_authlogic
と自動的にロードされるように組み込まれてるので、before_filterとして記載しても意味がない。
で、RoutingErrorやMethodNotAllowedの場合ってApplicationControllerに記載したbefore_filterが実行されない=activate_authlogicも実行されないのでエラーになってるんだろう。
ということで、
def rescue_action_in_public(e) activate_authlogic ... end
な感じで、rescue_action_in_publicメソッド内の先頭でactivate_authlogicをコールしてあげれば解決する。