Sha256: 68187ce1d3ae2a9438d8b6287acde5ff0485601615e9895854c17c7955419800
Contents?: true
Size: 1014 Bytes
Versions: 5
Compression:
Stored size: 1014 Bytes
Contents
# frozen_string_literal: true require "active_job/serializers/object_serializer" module AcidicJob module Serializers class JobSerializer < ::ActiveJob::Serializers::ObjectSerializer def serialize(job) # don't serialize the `enqueued_at` value, as ActiveRecord will check if the Run record has changed # by comparing the deserialized database value with a temporary in-memory generated value. # That temporary in-memory generated value can sometimes have an `enqueued_at` value that is 1 second off # from the original. In this case, ActiveRecord will think the record has unsaved changes and block the lock. super(job.as_json.merge("job_class" => job.class.name)) end def deserialize(hash) job = ::ActiveJob::Base.deserialize(hash) job.send(:deserialize_arguments_if_needed) job end def serialize?(argument) defined?(::ActiveJob::Base) && argument.class < ::ActiveJob::Base end end end end
Version data entries
5 entries across 5 versions & 1 rubygems