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
986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 |
# File 'marshal.c', line 986
static VALUE
marshal_dump(int argc, VALUE *argv)
{
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.
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 |
# File 'marshal.c', line 2017
static VALUE
marshal_load(int argc, VALUE *argv)
{
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.
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 |
# File 'marshal.c', line 2017
static VALUE
marshal_load(int argc, VALUE *argv)
{
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
986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 |
# File 'marshal.c', line 986
static VALUE
marshal_dump(int argc, VALUE *argv)
{
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.
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 |
# File 'marshal.c', line 2017
static VALUE
marshal_load(int argc, VALUE *argv)
{
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.
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 |
# File 'marshal.c', line 2017
static VALUE
marshal_load(int argc, VALUE *argv)
{
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);
}
|