Module: Marshal
- Defined in:
- marshal.c
Constant Summary collapse
- MAJOR_VERSION =
major version
INT2FIX(MARSHAL_MAJOR)
- MINOR_VERSION =
minor version
INT2FIX(MARSHAL_MINOR)
Class Method Summary collapse
-
.dump(obj[, anIO], limit = -1) ⇒ Object
Serializes obj and all descendant objects.
-
.load(*args) ⇒ Object
Returns the result of converting the serialized data in source into a Ruby object (possibly with associated subordinate objects).
-
.restore(*args) ⇒ Object
Returns the result of converting the serialized data in source into a Ruby object (possibly with associated subordinate objects).
Instance Method Summary collapse
-
#dump(obj[, anIO], limit = -1) ⇒ Object
private
Serializes obj and all descendant objects.
-
#load(*args) ⇒ Object
private
Returns the result of converting the serialized data in source into a Ruby object (possibly with associated subordinate objects).
-
#restore(*args) ⇒ Object
private
Returns the result of converting the serialized data in source into a Ruby object (possibly with associated subordinate objects).
Class Method Details
.dump(obj[, anIO], limit = -1) ⇒ Object
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.
class Klass
def initialize(str)
@str = str
end
def say_hello
@str
end
end
(produces no output)
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, Socket and so on)
-
an instance of MatchData, Data, Method, UnboundMethod, Proc, Thread, ThreadGroup, Continuation
-
objects which define singleton methods
1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 |
# File 'marshal.c', line 1053
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);
}
|
.load(source[, proc]) ⇒ Object .restore(source[, proc]) ⇒ Object
Returns the result of converting the serialized data in source into a Ruby object (possibly with associated subordinate objects). source may be either an instance of IO or an object that responds to to_str. If proc is specified, each object will be passed to the proc, as the object is being deserialized.
Never pass untrusted data (including user supplied input) to this method. Please see the overview for further details.
2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 |
# File 'marshal.c', line 2099
static VALUE
marshal_load(int argc, VALUE *argv, VALUE _)
{
VALUE port, proc;
rb_check_arity(argc, 1, 2);
port = argv[0];
proc = argc > 1 ? argv[1] : Qnil;
return rb_marshal_load_with_proc(port, proc);
}
|
.load(source[, proc]) ⇒ Object .restore(source[, proc]) ⇒ Object
Returns the result of converting the serialized data in source into a Ruby object (possibly with associated subordinate objects). source may be either an instance of IO or an object that responds to to_str. If proc is specified, each object will be passed to the proc, as the object is being deserialized.
Never pass untrusted data (including user supplied input) to this method. Please see the overview for further details.
2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 |
# File 'marshal.c', line 2099
static VALUE
marshal_load(int argc, VALUE *argv, VALUE _)
{
VALUE port, proc;
rb_check_arity(argc, 1, 2);
port = argv[0];
proc = argc > 1 ? argv[1] : Qnil;
return rb_marshal_load_with_proc(port, proc);
}
|
Instance Method Details
#dump(obj[, anIO], limit = -1) ⇒ Object (private)
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.
class Klass
def initialize(str)
@str = str
end
def say_hello
@str
end
end
(produces no output)
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, Socket and so on)
-
an instance of MatchData, Data, Method, UnboundMethod, Proc, Thread, ThreadGroup, Continuation
-
objects which define singleton methods
1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 |
# File 'marshal.c', line 1053
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);
}
|
#load(source[, proc]) ⇒ Object (private) #restore(source[, proc]) ⇒ Object (private)
Returns the result of converting the serialized data in source into a Ruby object (possibly with associated subordinate objects). source may be either an instance of IO or an object that responds to to_str. If proc is specified, each object will be passed to the proc, as the object is being deserialized.
Never pass untrusted data (including user supplied input) to this method. Please see the overview for further details.
2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 |
# File 'marshal.c', line 2099
static VALUE
marshal_load(int argc, VALUE *argv, VALUE _)
{
VALUE port, proc;
rb_check_arity(argc, 1, 2);
port = argv[0];
proc = argc > 1 ? argv[1] : Qnil;
return rb_marshal_load_with_proc(port, proc);
}
|
#load(source[, proc]) ⇒ Object (private) #restore(source[, proc]) ⇒ Object (private)
Returns the result of converting the serialized data in source into a Ruby object (possibly with associated subordinate objects). source may be either an instance of IO or an object that responds to to_str. If proc is specified, each object will be passed to the proc, as the object is being deserialized.
Never pass untrusted data (including user supplied input) to this method. Please see the overview for further details.
2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 |
# File 'marshal.c', line 2099
static VALUE
marshal_load(int argc, VALUE *argv, VALUE _)
{
VALUE port, proc;
rb_check_arity(argc, 1, 2);
port = argv[0];
proc = argc > 1 ? argv[1] : Qnil;
return rb_marshal_load_with_proc(port, proc);
}
|