Skip to content

Commit e10809e

Browse files
committed
Make page batch jobs nested classes of their counterparts
1 parent 59c3e35 commit e10809e

15 files changed

+120
-103
lines changed

app/jobs/pages/analyze_topics_job.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33

44
module Pages
55
class AnalyzeTopicsJob < ApplicationJob
6+
class Batch < ApplicationJob
7+
queue_as :default
8+
9+
def perform
10+
Page.published.where.missing(:topics).find_each do |page|
11+
Pages::AnalyzeTopicsJob.perform_later(page)
12+
end
13+
end
14+
end
15+
616
queue_as :default
717

818
def perform(page)

app/jobs/pages/batch_analyze_topics_job.rb

Lines changed: 0 additions & 11 deletions
This file was deleted.

app/jobs/pages/batch_embedding_job.rb

Lines changed: 0 additions & 11 deletions
This file was deleted.

app/jobs/pages/batch_upsert_pages_job.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ class BatchUpsertPagesJob < ApplicationJob
55
def perform(limit: nil)
66
Page.upsert_collection_from_sitepress!(limit: limit)
77

8-
Pages::RefreshSearchIndexJob.perform_later
9-
Pages::BatchAnalyzeTopicsJob.perform_later
10-
Pages::BatchEmbeddingJob.perform_later
8+
Pages::RefreshSearchIndexJob::Batch.perform_later
9+
Pages::AnalyzeTopicsJob::Batch.perform_later
10+
Pages::EmbeddingJob::Batch.perform_later
1111
end
1212
end
1313
end

app/jobs/pages/embedding_job.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
module Pages
22
class EmbeddingJob < ApplicationJob
3+
class Batch < ApplicationJob
4+
queue_as :default
5+
6+
def perform
7+
Page.published.where.missing(:page_embedding).find_each do |page|
8+
Pages::EmbeddingJob.perform_later(page)
9+
end
10+
end
11+
end
12+
313
queue_as :default
414

515
def perform(page)
Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
11
module Pages
22
class RefreshSearchIndexJob < ApplicationJob
3-
def perform
4-
Page.published.find_each(&:update_in_search_index)
3+
class Batch < ApplicationJob
4+
queue_as :default
5+
6+
def perform
7+
Page.published.find_each do |page|
8+
Pages::RefreshSearchIndexJob.perform_later(page)
9+
end
10+
end
11+
end
12+
13+
queue_as :default
14+
15+
def perform(page)
16+
page.update_in_search_index
517
end
618
end
719
end

spec/jobs/pages/analyze_topics_job_spec.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,30 @@
2828
expect(page.reload.topics.pluck(:name)).to include("Ruby on Rails")
2929
end
3030
end
31+
32+
describe Pages::AnalyzeTopicsJob::Batch do
33+
it "doesn’t blow up" do
34+
allow(SitepressPage).to receive(:render_html).and_return(Faker::HTML.random)
35+
36+
topics = FactoryBot.create_list(:topic, 2)
37+
38+
page_1, page_2, page_3 = Page.upsert_collection_from_sitepress!(limit: 3).each do |page|
39+
page.touch(:published_at)
40+
end
41+
42+
# articles without topics
43+
page_1.update!(topics: [])
44+
page_2.update!(topics: [])
45+
46+
# articles with topics
47+
page_3.update!(topics: topics)
48+
49+
# not articles
50+
FactoryBot.create_list(:page, 3)
51+
52+
expect(Pages::AnalyzeTopicsJob).to receive(:perform_later).exactly(2).times
53+
54+
described_class.perform_now
55+
end
56+
end
3157
end

spec/jobs/pages/batch_analyze_topics_job_spec.rb

Lines changed: 0 additions & 27 deletions
This file was deleted.

spec/jobs/pages/batch_embedding_job_spec.rb

Lines changed: 0 additions & 19 deletions
This file was deleted.

spec/jobs/pages/batch_upsert_pages_job_spec.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@
2828
end
2929

3030
it "enqueues refresh search index job and analyze topics job" do
31-
allow(Pages::RefreshSearchIndexJob).to receive(:perform_later)
32-
allow(Pages::BatchAnalyzeTopicsJob).to receive(:perform_later)
31+
allow(Pages::RefreshSearchIndexJob::Batch).to receive(:perform_later)
32+
allow(Pages::AnalyzeTopicsJob::Batch).to receive(:perform_later)
33+
allow(Pages::EmbeddingJob::Batch).to receive(:perform_later)
3334

3435
described_class.perform_now
3536

36-
expect(Pages::RefreshSearchIndexJob).to have_received(:perform_later)
37-
expect(Pages::BatchAnalyzeTopicsJob).to have_received(:perform_later)
37+
expect(Pages::EmbeddingJob::Batch).to have_received(:perform_later)
38+
expect(Pages::RefreshSearchIndexJob::Batch).to have_received(:perform_later)
39+
expect(Pages::AnalyzeTopicsJob::Batch).to have_received(:perform_later)
3840
end
3941
end

0 commit comments

Comments
 (0)