diff --git a/lib/active_job/concurrency_controls.rb b/lib/active_job/concurrency_controls.rb index e17edd13..a93f078e 100644 --- a/lib/active_job/concurrency_controls.rb +++ b/lib/active_job/concurrency_controls.rb @@ -4,7 +4,6 @@ module ActiveJob module ConcurrencyControls extend ActiveSupport::Concern - DEFAULT_CONCURRENCY_KEY = ->(*args) { args&.first } DEFAULT_CONCURRENCY_GROUP = ->(*) { self.class.name } included do @@ -16,11 +15,11 @@ module ConcurrencyControls end class_methods do - def limits_concurrency(to: 1, key: DEFAULT_CONCURRENCY_KEY, group: DEFAULT_CONCURRENCY_GROUP, duration: SolidQueue.default_concurrency_control_period) - self.concurrency_limit = to + def limits_concurrency(key:, to: 1, group: DEFAULT_CONCURRENCY_GROUP, duration: SolidQueue.default_concurrency_control_period) self.concurrency_key = key - self.concurrency_duration = duration + self.concurrency_limit = to self.concurrency_group = group + self.concurrency_duration = duration end end diff --git a/test/models/solid_queue/job_test.rb b/test/models/solid_queue/job_test.rb index a936a9c7..feb6d0e4 100644 --- a/test/models/solid_queue/job_test.rb +++ b/test/models/solid_queue/job_test.rb @@ -2,18 +2,18 @@ class SolidQueue::JobTest < ActiveSupport::TestCase class NonOverlappingJob < ApplicationJob - limits_concurrency # Using all defaults + limits_concurrency key: ->(job_result) { job_result } def perform(job_result) end end class NonOverlappingGroupedJob1 < NonOverlappingJob - limits_concurrency group: "MyGroup" + limits_concurrency key: ->(job_result) { job_result }, group: "MyGroup" end class NonOverlappingGroupedJob2 < NonOverlappingJob - limits_concurrency group: "MyGroup" + limits_concurrency key: ->(job_result) { job_result }, group: "MyGroup" end setup do