#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.