class Searchkick::ReindexV2Job

Constants

RECORD_NOT_FOUND_CLASSES

Public Instance Methods

perform(klass, id) click to toggle source
# File lib/searchkick/reindex_v2_job.rb, line 12
def perform(klass, id)
  model = klass.constantize
  record =
    begin
      model.find(id)
    rescue => e
      # check by name rather than rescue directly so we don't need
      # to determine which classes are defined
      raise e unless RECORD_NOT_FOUND_CLASSES.include?(e.class.name)
      nil
    end

  index = model.searchkick_index
  if !record || !record.should_index?
    # hacky
    record ||= model.new
    record.id = id
    begin
      index.remove record
    rescue Elasticsearch::Transport::Transport::Errors::NotFound
      # do nothing
    end
  else
    index.store record
  end
end