Есть гем, который добавляет 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.