Sha256: 9214dfe8d7b7e35bb81f93ac48886a80e774456e5fea8b507039556fff557408

Contents?: true

Size: 938 Bytes

Versions: 9

Compression:

Stored size: 938 Bytes

Contents

# frozen_string_literal: true

require "active_job/serializers/object_serializer"

module AcidicJob
  module Serializers
    class JobSerializer < ::ActiveJob::Serializers::ObjectSerializer
      def serialize(job)
        super(job.serialize)
      end

      def deserialize(hash)
        job = ActiveJob::Base.deserialize(hash)
        job.send(:deserialize_arguments_if_needed)
        # this is a shim to ensure we can work with Ruby 2.7 as well as 3.0+
        # :nocov:
        if job.arguments.last.is_a?(Hash)
          *args, kwargs = job.arguments
        else
          args = job.arguments
          kwargs = {}
        end
        # :nocov:
        job.instance_variable_set(:@__acidic_job_args, args)
        job.instance_variable_set(:@__acidic_job_kwargs, kwargs)

        job
      end

      def serialize?(argument)
        defined?(::ActiveJob::Base) && argument.class < ::ActiveJob::Base
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
acidic_job-1.0.0.beta.9 lib/acidic_job/serializers/job_serializer.rb
acidic_job-1.0.0.beta.8 lib/acidic_job/serializers/job_serializer.rb
acidic_job-1.0.0.beta.7 lib/acidic_job/serializers/job_serializer.rb
acidic_job-1.0.0.beta.6 lib/acidic_job/serializers/job_serializer.rb
acidic_job-1.0.0.beta.5 lib/acidic_job/serializers/job_serializer.rb
acidic_job-1.0.0.beta.4 lib/acidic_job/serializers/job_serializer.rb
acidic_job-1.0.0.beta.3 lib/acidic_job/serializers/job_serializer.rb
acidic_job-1.0.0.beta.2 lib/acidic_job/serializers/job_serializer.rb
acidic_job-1.0.0.beta.1 lib/acidic_job/serializers/job_serializer.rb