Rails2 と Rails3 で after_filter の実行順序が逆になっている
class FiltersController < ApplicationController before_filter { |c| c.logger.info 'before_A' } before_filter { |c| c.logger.info 'before_B' } before_filter { |c| c.logger.info 'before_C' } after_filter { |c| c.logger.info 'after_A' } after_filter { |c| c.logger.info 'after_B' } after_filter { |c| c.logger.info 'after_C' } def index render :text => 'ok' end end
このような簡単なスクリプトを Rails2 と Rails3 で実行し、ログを見てみると
Rails 2.3.10
Processing FiltersController#index (for 192.168.56.1 at 2010-11-04 16:50:02) [GET] before_A before_B before_C after_A after_B after_C Completed in 4ms (View: 1 | 200 OK [http://debian/filters]
Rails 3.0.1
Started GET "/filters" for 192.168.56.1 at 2010-11-04 16:51:32 +0900 Processing by FiltersController#index as HTML before_A before_B before_C Rendered text template (1.7ms) after_C after_B after_A Completed 200 OK in 17ms (Views: 15.3ms)
となり、before_filter は同じですが、after_filter の実行順序が逆になっています。
結構大きい変更のような気もするのですが、どこかに情報がありましたら教えていただけると幸いです。