stdlib/marshal_round_trip.rb
tests/_examples/stdlib/marshal_round_trip.rb in the metorex repository.
# `Marshal.dump` writes an object as the bytes Ruby's marshal format spells
# it in, and `Marshal.load` puts it back together.
p Marshal.dump(0.5).bytes
p Marshal.dump(42).bytes
p Marshal.load Marshal.dump([1, "two", :three, { four: 4 }])
p Marshal.load Marshal.dump(nil)
p Marshal.load(Marshal.dump(2**70)) == 2**70
class Waypoint
attr_reader :name, :miles
def initialize(name, miles)
@name = name
@miles = miles
end
end
back = Marshal.load Marshal.dump(Waypoint.new("summit", 12))
p back.class
p back.name
p back.miles
held = Marshal.load Marshal.dump("keeps its encoding")
p held.encoding
Output:
[4, 8, 102, 8, 48, 46, 53]
[4, 8, 105, 47]
[1, "two", :three, {four: 4}]
nil
true
Waypoint
"summit"
12
#<Encoding:UTF-8>