class ActiveJob::Uniqueness::LockKey
Constants
- FALLBACK_ARGUMENTS_STRING
Attributes
arguments[R]
job_class_name[R]
Public Class Methods
new(job_class_name: nil, arguments: nil)
click to toggle source
# File lib/active_job/uniqueness/lock_key.rb, line 14 def initialize(job_class_name: nil, arguments: nil) if arguments.present? && job_class_name.blank? raise ArgumentError, 'job_class_name is required if arguments given' end @job_class_name = job_class_name @arguments = arguments || [] end
Public Instance Methods
lock_key()
click to toggle source
# File lib/active_job/uniqueness/lock_key.rb, line 23 def lock_key [ lock_prefix, normalized_job_class_name, arguments_key_part ].join(':') end
wildcard_key()
click to toggle source
# File lib/active_job/uniqueness/lock_key.rb, line 31 def wildcard_key [ lock_prefix, normalized_job_class_name, arguments.any? ? arguments_key_part + '*' : '*' ].compact.join(':') end
Private Instance Methods
arguments_digest()
click to toggle source
# File lib/active_job/uniqueness/lock_key.rb, line 51 def arguments_digest digest_method.hexdigest(serialized_arguments) end
arguments_key_part()
click to toggle source
# File lib/active_job/uniqueness/lock_key.rb, line 41 def arguments_key_part arguments.any? ? arguments_digest : FALLBACK_ARGUMENTS_STRING end
normalized_job_class_name()
click to toggle source
# File lib/active_job/uniqueness/lock_key.rb, line 55 def normalized_job_class_name job_class_name&.underscore end
serialized_arguments()
click to toggle source
ActiveJob::Arguments is used to reflect the way ActiveJob
serializes arguments in order to serialize ActiveRecord models with GlobalID uuids instead of as_json which could give undesired artifacts
# File lib/active_job/uniqueness/lock_key.rb, line 47 def serialized_arguments ActiveSupport::JSON.encode(ActiveJob::Arguments.serialize(arguments)) end