Module: ActiveJob::Temporal::PayloadSerializers::Marshal

Extended by:
Marshal
Included in:
Marshal
Defined in:
lib/activejob/temporal/payload_serializers/marshal.rb

Constant Summary collapse

NAME =
"marshal"

Instance Method Summary collapse

Instance Method Details

#dump(payload) ⇒ Object



13
14
15
# File 'lib/activejob/temporal/payload_serializers/marshal.rb', line 13

def dump(payload)
  envelope(Base64.strict_encode64(::Marshal.dump(payload)))
end

#envelope?(payload) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/activejob/temporal/payload_serializers/marshal.rb', line 26

def envelope?(payload)
  (payload[:payload_serializer] || payload["payload_serializer"]) == NAME
end

#load(payload) ⇒ Object



17
18
19
20
21
22
23
24
# File 'lib/activejob/temporal/payload_serializers/marshal.rb', line 17

def load(payload)
  # Marshal support is opt-in and only safe for trusted Temporal histories.
  # rubocop:disable Security/MarshalLoad
  normalize_top_level_keys(::Marshal.load(serialized_data(payload)))
  # rubocop:enable Security/MarshalLoad
rescue StandardError => e
  raise ActiveJob::SerializationError, "Unable to deserialize Marshal payload: #{e.message}"
end