Sha256: e94bb5d1786c7a49e4d083664e30f1b9b1e83210e8751de50312fd59b15c2ac9

Contents?: true

Size: 933 Bytes

Versions: 2

Compression:

Stored size: 933 Bytes

Contents

# frozen_string_literal: true

module Dynflow
  module Executors
    module Sidekiq
      # Module to prepend the Sidekiq job to handle the serialization
      module Serialization
        def self.serialize(value)
          Dynflow.serializer.dump(value)
        end

        def self.deserialize(value)
          value = Utils::IndifferentHash.new(value) if value.is_a? Hash
          Dynflow.serializer.load(value)
        end

        module WorkerExtension
          # Overriding the Sidekiq entry method to perform additional serialization preparation
          module ClassMethods
            def client_push(opts)
              opts['args'] = opts['args'].map { |a| Serialization.serialize(a) }
              super(opts)
            end
          end

          def perform(*args)
            args = args.map { |a| Serialization.deserialize(a) }
            super(*args)
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dynflow-1.9.0 lib/dynflow/executors/sidekiq/serialization.rb
dynflow-1.8.3 lib/dynflow/executors/sidekiq/serialization.rb