From 566a3e30e9242ba389c6b0df3b013d81bfda5d89 Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Tue, 28 Apr 2020 15:10:56 -0500 Subject: [PATCH] [deploy] Remove Algolia from Reaction and Algolia Workers (#7571) --- app/models/reaction.rb | 27 ---------------- app/workers/search/index_worker.rb | 22 ------------- .../search/remove_from_index_worker.rb | 11 ------- spec/workers/search/index_worker_spec.rb | 23 ------------- .../search/remove_from_index_worker_spec.rb | 32 ------------------- 5 files changed, 115 deletions(-) delete mode 100644 app/workers/search/index_worker.rb delete mode 100644 app/workers/search/remove_from_index_worker.rb delete mode 100644 spec/workers/search/index_worker_spec.rb delete mode 100644 spec/workers/search/remove_from_index_worker_spec.rb diff --git a/app/models/reaction.rb b/app/models/reaction.rb index 7c4a5ad96..37d632c0e 100644 --- a/app/models/reaction.rb +++ b/app/models/reaction.rb @@ -1,5 +1,4 @@ class Reaction < ApplicationRecord - include AlgoliaSearch include Searchable SEARCH_SERIALIZER = Search::ReactionSerializer @@ -36,28 +35,10 @@ class Reaction < ApplicationRecord after_commit :bust_reactable_cache, :update_reactable, on: %i[create update] after_commit :index_to_elasticsearch, if: :indexable?, on: %i[create update] after_commit :remove_from_elasticsearch, if: :indexable?, on: [:destroy] - after_save :index_to_algolia after_save :touch_user before_destroy :update_reactable_without_delay, unless: :destroyed_by_association before_destroy :bust_reactable_cache_without_delay - before_destroy :remove_algolia - - algoliasearch index_name: "SecuredReactions_#{Rails.env}", auto_index: false, auto_remove: false do - attribute :id, :reactable_user, :searchable_reactable_title, :searchable_reactable_path, :status, :reading_time, - :searchable_reactable_text, :searchable_reactable_tags, :viewable_by, :reactable_tags, :reactable_published_date - searchableAttributes %i[searchable_reactable_title searchable_reactable_text - searchable_reactable_tags reactable_user] - tags do - reactable_tags - end - attributesForFaceting ["filterOnly(viewable_by)", "filterOnly(status)"] - customRanking ["desc(id)"] - end - - def index_to_algolia - index! if category == "readinglist" && reactable && reactable.published - end class << self def count_for_article(id) @@ -144,10 +125,6 @@ class Reaction < ApplicationRecord reactable.reading_time if category == "readinglist" end - def remove_from_index - remove_from_index! - end - def reactable_user return unless category == "readinglist" @@ -211,10 +188,6 @@ class Reaction < ApplicationRecord negative? && !user.trusted end - def remove_algolia - remove_from_index! - end - def record_field_test_event Users::RecordFieldTestEventWorker.perform_async(user_id, :user_home_feed, "user_creates_reaction") end diff --git a/app/workers/search/index_worker.rb b/app/workers/search/index_worker.rb deleted file mode 100644 index 5a57ec9a1..000000000 --- a/app/workers/search/index_worker.rb +++ /dev/null @@ -1,22 +0,0 @@ -module Search - class IndexWorker - include Sidekiq::Worker - - sidekiq_options queue: :medium_priority, retry: 10 - - VALID_RECORD_TYPES = %w[Article User].freeze - - def perform(record_type, record_id) - unless VALID_RECORD_TYPES.include?(record_type) - raise InvalidRecordType, "Invalid class: #{record_type}. Valid and indexable classes are #{VALID_RECORD_TYPES.join(', ')}" - end - - record = record_type.constantize.find_by(id: record_id) - return unless record - - record.index! - end - end - - class InvalidRecordType < StandardError; end -end diff --git a/app/workers/search/remove_from_index_worker.rb b/app/workers/search/remove_from_index_worker.rb deleted file mode 100644 index 8dcd3ce33..000000000 --- a/app/workers/search/remove_from_index_worker.rb +++ /dev/null @@ -1,11 +0,0 @@ -module Search - class RemoveFromIndexWorker - include Sidekiq::Worker - - sidekiq_options queue: :medium_priority, retry: 10 - - def perform(index, key) - Algolia::Index.new(index).delete_object(key) - end - end -end diff --git a/spec/workers/search/index_worker_spec.rb b/spec/workers/search/index_worker_spec.rb deleted file mode 100644 index c4d9063e9..000000000 --- a/spec/workers/search/index_worker_spec.rb +++ /dev/null @@ -1,23 +0,0 @@ -require "rails_helper" - -RSpec.describe Search::IndexWorker, type: :worker do - let(:worker) { subject } - - include_examples "#enqueues_on_correct_queue", "medium_priority", ["User", 1] - - it "does nothing if there is wrong record type is passed" do - expect { worker.perform("SuperUser", 1) }.to raise_error(Search::InvalidRecordType) - end - - it "doesn't fail if a record is not found" do - expect { worker.perform("User", -1) }.not_to raise_error - end - - it "indexes a record if everything is fine" do - user = double - allow(user).to receive(:index!) - allow(User).to receive(:find_by).and_return(user) - worker.perform("User", 1) - expect(user).to have_received(:index!) - end -end diff --git a/spec/workers/search/remove_from_index_worker_spec.rb b/spec/workers/search/remove_from_index_worker_spec.rb deleted file mode 100644 index 712a046df..000000000 --- a/spec/workers/search/remove_from_index_worker_spec.rb +++ /dev/null @@ -1,32 +0,0 @@ -require "rails_helper" - -RSpec.describe Search::RemoveFromIndexWorker, type: :worker do - let(:worker) { subject } - - include_examples "#enqueues_on_correct_queue", "medium_priority", ["searchables_#{Rails.env}", "users-456"] - - describe "#perform" do - let(:algolia_index) { instance_double(Algolia::Index) } - - before do - allow(Algolia::Index).to receive(:new).and_return(algolia_index) - allow(algolia_index).to receive(:delete_object) - end - - it "calls the service" do - worker.perform("searchables_#{Rails.env}", "users-456") - - expect(algolia_index).to have_received(:delete_object).with("users-456").once - end - - it "doesn't raise an error if key is missing" do - # key is nil - expect { worker.perform("searchables_#{Rails.env}", nil) }.not_to raise_error - end - - it "doesn't raise an error if index is missing" do - # index is nil - expect { worker.perform(nil, "users-456") }.not_to raise_error - end - end -end