Тьфу. Сегодня не мой день.
У меня есть наблюдатель в нашем приложении Rails 3.0x
class EventObserver < ActionController::Caching::Sweeper
observe :live_event, :event
def after_update(event)
Rails.logger.debug "EventObserver::after_update #{event.class.name}.#{event.id}"
channels = Channel.being_used
inc=channels.reject {|c| !c.current_source.events.include?(event) }
inc.each do |c|
expire_action("channel_tickers/#{c.id}.js")
expire_action("channel_events/#{c.id}.js")
Rails.logger.debug "expired stuff for channel #{c.id}"
end
end
end
Я делаю обновление одного из отслеживаемых классов и вызывается after_update, но он ничего не истекает. В журнале нет вызовов expire_action.
Я вижу:
expired stuff for channel 63
Значит, это удар по этому коду, а не бомбардировка.
Я хочу использовать наблюдателя, потому что эти модели обновляются не из контроллера, а изнутри.