Rails after_filter вызывается только изредка

#ruby-on-rails #refinerycms

#ruby-on-rails #refinerycms

Вопрос:

Я пытаюсь создать gem для автоматизации отправки очисток на мой сервер varnish для определенных движков refinerycms. Для этого я решил работать не с очистителями, а с after_filters.

Странно то, что фильтры after вызываются только изредка!

Я использую refinerycms 0.9.9.15, и это код:

 require 'refinerycms-pages'

module RefinerycmsPagePurging
  def self.included(base)
    base.class_eval do
      after_filter :purge_pages, :only => [:create, :update, :destroy]
      after_filter :purge_all, :only => [:update_positions]

      protected
      def purge_all
        Rails.logger.info "*** Purge all"
      end

      def purge_pages
        Rails.logger.info "*** Purge pages"
      end
    end
  end
end

class Railtie < Rails::Railtie
  config.after_initialize do
    Admin::PagesController.send :include, RefinerycmsPagePurging
  end
end
  

Есть идеи, что я делаю не так?

Комментарии:

1. Похоже, что причиной этого был config.after_initialize.after_initialize. Я не могу использовать to_prepare, поскольку к тому времени refinerycms не полностью настроен и жалуется на отсутствие метода crudify для контроллера. Просматривая инициализацию refinerycms-core, я нашел refinery.after_inclusion обратного вызова, который я могу использовать вместо config.to_prepare. Кажется, это заставляет его работать!

2. Мне также пришлось переключиться с использования railtie на engine.