class method
Marshal.dump
[W < ::_Writer] (untyped obj, W port, ?::int? limit) -> W
(untyped obj, ?::Integer limit) -> ::String
dump( obj [, anIO] , limit=-1 ) → anIO
marshal.c
View on GitHub ↗
static VALUE
marshal_dump(int argc, VALUE *argv, VALUE _)
{
VALUE obj, port, a1, a2;
int limit = -1;
port = Qnil;
rb_scan_args(argc, argv, "12", &obj, &a1, &a2);
if (argc == 3) {
if (!NIL_P(a2)) limit = NUM2INT(a2);
if (NIL_P(a1)) io_needed();
port = a1;
}
else if (argc == 2) {
if (FIXNUM_P(a1)) limit = FIX2INT(a1);
else if (NIL_P(a1)) io_needed();
else port = a1;
}
return rb_marshal_dump_limited(obj, port, limit);
}
Serializes obj and all descendant objects. If anIO is specified, the serialized data will be written to it, otherwise the data will be returned as a String. If limit is specified, the traversal of subobjects will be limited to that depth. If limit is negative, no checking of depth will be performed.
Example
class Klass def initialize(str) @str = str end def say_hello @str end end
(produces no output)
Example
o = Klass.new("hello\n") data = Marshal.dump(o) obj = Marshal.load(data) obj.say_hello #=> "hello\n"
Marshal can’t dump following objects:
-
anonymous Class/Module.
-
objects which are related to system (ex:
Dir,File::Stat,IO,File,Socketand so on) -
an instance of
MatchData, Method,UnboundMethod,Proc,Thread,ThreadGroup,Continuation -
objects which define singleton methods