From a4373346dd0ef62a12093af836e5f80d36d85f23 Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Mon, 24 Aug 2020 13:22:25 -0500 Subject: [PATCH] [deploy] Refactor:Move Sitemap Refresh Rake Task to Sidekiq (#9975) --- app/workers/sitemap_refresh_worker.rb | 10 ++++++++++ config/schedule.yml | 3 +++ spec/workers/sitemap_refresh_worker_spec.rb | 17 +++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 app/workers/sitemap_refresh_worker.rb create mode 100644 spec/workers/sitemap_refresh_worker_spec.rb diff --git a/app/workers/sitemap_refresh_worker.rb b/app/workers/sitemap_refresh_worker.rb new file mode 100644 index 000000000..b73477fe1 --- /dev/null +++ b/app/workers/sitemap_refresh_worker.rb @@ -0,0 +1,10 @@ +class SitemapRefreshWorker + include Sidekiq::Worker + + sidekiq_options queue: :low_priority, retry: 10 + + def perform + Rails.application.load_tasks + Rake::Task["sitemap:refresh"].invoke + end +end diff --git a/config/schedule.yml b/config/schedule.yml index d8f622fbd..7053648a0 100644 --- a/config/schedule.yml +++ b/config/schedule.yml @@ -74,6 +74,9 @@ expire_old_listings: send_welcome_notifications: cron: "0 16 * * *" # daily at 4 pm UTC class: "Broadcasts::SendWelcomeNotificationsWorker" +sitemap_refresh: + cron: "30 * * * *" # every hour, 30 min after the hour + class: "SitemapRefreshWorker" hourly_feed_cache_bust: cron: "0 * * * *" # hourly on the hour class: "BustCachePathWorker" diff --git a/spec/workers/sitemap_refresh_worker_spec.rb b/spec/workers/sitemap_refresh_worker_spec.rb new file mode 100644 index 000000000..2ba8c9232 --- /dev/null +++ b/spec/workers/sitemap_refresh_worker_spec.rb @@ -0,0 +1,17 @@ +require "rails_helper" + +RSpec.describe SitemapRefreshWorker, type: :woker do + include_examples "#enqueues_on_correct_queue", "low_priority" + + describe "#perform" do + let(:worker) { subject } + + it "runs sitemap refresh rake task" do + allow(Rails.application).to receive(:load_tasks) + mock_task = instance_double(Rake::Task, invoke: true) + allow(Rake::Task).to receive(:[]).and_return(mock_task) + worker.perform + expect(Rake::Task).to have_received(:[]).with("sitemap:refresh") + end + end +end