Sha256: 38b2cf4d85e39e29f7b29029ff302b6da2cb7e412a96564f8641cc40b4ddfde2
Contents?: true
Size: 1.3 KB
Versions: 3
Compression:
Stored size: 1.3 KB
Contents
module Workarea class IndexAdminSearch include Sidekiq::Worker include Sidekiq::CallbacksWorker sidekiq_options( queue: 'low', lock: :until_executing, query_cache: true, enqueue_on: { ApplicationDocument => [:save, :touch, :destroy], with: -> { IndexAdminSearch.job_arguments(self) }, ignore_if: -> { !IndexAdminSearch.should_enqueue?(self) } } ) def self.should_enqueue?(model) search_model = Search::Admin.for(model) search_model.present? && search_model.should_be_indexed? end def self.job_arguments(model) search_model = Search::Admin.for(model) [search_model.model.class.name, search_model.model.id] end def self.perform(model) search_model = Search::Admin.for(model) return false if search_model.blank? if model.persisted? && search_model.should_be_indexed? # For the admin, we don't want to index release changes Release.with_current(nil) { model.reload } if Release.current.present? search_model.save else search_model.try(:destroy) rescue nil # It's OK if it doesn't exist end end def perform(class_name, id) model = class_name.constantize.find_or_initialize_by(id: id) self.class.perform(model) end end end
Version data entries
3 entries across 3 versions & 1 rubygems