reindex_job.rb 590 Bytes
module Searchkick
  class ReindexJob

    def initialize(klass, id)
      @klass = klass
      @id = id
    end

    def perform
      model = @klass.constantize
      record = model.find(@id) rescue nil # TODO fix lazy coding
      index = model.searchkick_index
      if !record or !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

  end
end