12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- module ChecksKbClientNotification
- extend ActiveSupport::Concern
- included do
- after_create :notify_kb_clients_after_create
- after_update :notify_kb_clients_after_update
- after_touch :notify_kb_clients_after_touch
- after_destroy :notify_kb_clients_after_destroy
- class_attribute :notify_kb_clients_suspend, default: false
- end
- def self.disable_in_all_classes!
- all_classes.each { |klass| klass.notify_kb_clients_suspend = true }
- end
- def self.enable_in_all_classes!
- all_classes.each { |klass| klass.notify_kb_clients_suspend = false }
- end
- def self.all_classes
- ActiveRecord::Base
- .descendants
- .select { |c| c.included_modules.include?(ChecksKbClientNotification) }
- end
- private
- # generic call
- def notify_kb_clients(event)
- return if self.class.notify_kb_clients_suspend?
- ChecksKbClientNotificationJob.notify_later(self, event)
- end
- def notify_kb_clients_after_create
- notify_kb_clients(:create)
- end
- def notify_kb_clients_after_update
- notify_kb_clients(:update)
- end
- def notify_kb_clients_after_touch
- notify_kb_clients(:touch)
- end
- def notify_kb_clients_after_destroy
- notify_kb_clients(:destroy)
- end
- end
|