Skip to content

Commit c949887

Browse files
committed
Add default key for limits_concurrency
1 parent 9161da0 commit c949887

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

lib/active_job/concurrency_controls.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module ConcurrencyControls
55
extend ActiveSupport::Concern
66

77
DEFAULT_CONCURRENCY_GROUP = ->(*) { self.class.name }
8+
DEFAULT_CONCURRENCY_KEY = ->(*) { nil }
89

910
included do
1011
class_attribute :concurrency_key, instance_accessor: false
@@ -15,7 +16,7 @@ module ConcurrencyControls
1516
end
1617

1718
class_methods do
18-
def limits_concurrency(key:, to: 1, group: DEFAULT_CONCURRENCY_GROUP, duration: SolidQueue.default_concurrency_control_period)
19+
def limits_concurrency(key: DEFAULT_CONCURRENCY_KEY, to: 1, group: DEFAULT_CONCURRENCY_GROUP, duration: SolidQueue.default_concurrency_control_period)
1920
self.concurrency_key = key
2021
self.concurrency_limit = to
2122
self.concurrency_group = group

test/models/solid_queue/job_test.rb

+17
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@ def perform(job_result)
1010
end
1111
end
1212

13+
class NonOverlappingDefaultJob < ApplicationJob
14+
limits_concurrency
15+
16+
def perform(job_result)
17+
end
18+
end
19+
1320
class NonOverlappingGroupedJob1 < NonOverlappingJob
1421
limits_concurrency key: ->(job_result, **) { job_result }, group: "MyGroup"
1522
end
@@ -98,6 +105,16 @@ class NonOverlappingGroupedJob2 < NonOverlappingJob
98105
assert_equal active_job.concurrency_key, job.concurrency_key
99106
end
100107

108+
test "enqueue jobs with concurrency controls default options" do
109+
active_job = NonOverlappingDefaultJob.perform_later(@result, name: "A")
110+
assert_equal 1, active_job.concurrency_limit
111+
assert_equal "SolidQueue::JobTest::NonOverlappingDefaultJob", active_job.concurrency_key
112+
113+
job = SolidQueue::Job.last
114+
assert_equal active_job.concurrency_limit, job.concurrency_limit
115+
assert_equal active_job.concurrency_key, job.concurrency_key
116+
end
117+
101118
test "enqueue jobs with concurrency controls in the same concurrency group" do
102119
assert_ready do
103120
active_job = NonOverlappingGroupedJob1.perform_later(@result, name: "A")

0 commit comments

Comments
 (0)