読者です 読者をやめる 読者になる 読者になる

ウェブサービスを作っています。

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 の実行順序が逆になっています。
結構大きい変更のような気もするのですが、どこかに情報がありましたら教えていただけると幸いです。