Как добавить before_filter в гем после всех остальных контроллеров before_filters в приложении Rails3?

Есть гем, который добавляет before_filter в приложение Rails:

class Railtie < Rails::Railtie
  initializer "..." do
    ActiveSupport.on_load(:action_controller) do
      ActionController::Base.send(:include, Filter)

...

module Filter
  extend ActiveSupport::Concern

  included do
    append_before_filter :set_locale
  end

  def set_locale
     ....

И вот некоторые контроллер в приложении:

class DesktopsController < ApplicationController
  before_filter :set_language_in_session

Теперь проблема в том, что before_filter из гема помещается в цепочку фильтров перед before_filter из DesktopsController:

DesktopsController._process_action_callbacks.select { |c| c.kind == :before }.collect { |filter| filter.filter }
=> [
    [0] :set_locale,
    [1] :set_language_in_session
]

Как можно ли сделать before_filter из драгоценного камня ( set_locale ), чтобы он был помещен после всех остальных фильтров? Секрет, вероятно, кроется в этой строке:

ActiveSupport.on_load(:action_controller) do

Но я безуспешно пробовал разные библиотеки ...

Кстати. Вот полный код драгоценного камня. Ruby 1.9.2, Rails 3.0.5.

9
задан Paweł Gościcki 16 September 2011 в 15:54
поделиться