Method: Psych.safe_dump
- Defined in:
- lib/psych.rb
.safe_dump(o, io = nil, options = {}) ⇒ Object
call-seq:
Psych.safe_dump(o) -> string of yaml
Psych.safe_dump(o, options) -> string of yaml
Psych.safe_dump(o, io) -> io object passed in
Psych.safe_dump(o, io, options) -> io object passed in
Safely dump Ruby object o
to a YAML string. Optional options
may be passed in to control the output format. If an IO object is passed in, the YAML will be dumped to that IO object. By default, only the following classes are allowed to be serialized:
-
TrueClass
-
FalseClass
-
NilClass
-
Integer
-
Float
-
String
-
Array
-
Hash
Arbitrary classes can be allowed by adding those classes to the permitted_classes
keyword argument. They are additive. For example, to allow Date serialization:
Psych.safe_dump(yaml, permitted_classes: [Date])
Now the Date class can be dumped in addition to the classes listed above.
A Psych::DisallowedClass exception will be raised if the object contains a class that isn’t in the permitted_classes
list.
Currently supported options are:
:indentation
-
Number of space characters used to indent. Acceptable value should be in
0..9
range, otherwise option is ignored.Default:
2
. :line_width
-
Max character to wrap line at.
Default:
0
(meaning “wrap at 81”). :canonical
-
Write “canonical” YAML form (very verbose, yet strictly formal).
Default:
false
. :header
-
Write
%YAML [version]
at the beginning of document.Default:
false
.
Example:
# Dump an array, get back a YAML string
Psych.safe_dump(['a', 'b']) # => "---\n- a\n- b\n"
# Dump an array to an IO object
Psych.safe_dump(['a', 'b'], StringIO.new) # => #<StringIO:0x000001009d0890>
# Dump an array with indentation set
Psych.safe_dump(['a', ['b']], indentation: 3) # => "---\n- a\n- - b\n"
# Dump an array to an IO with indentation set
Psych.safe_dump(['a', ['b']], StringIO.new, indentation: 3)
578 579 580 581 582 583 584 585 586 587 |
# File 'lib/psych.rb', line 578 def self.safe_dump o, io = nil, = {} if Hash === io = io io = nil end visitor = Psych::Visitors::RestrictedYAMLTree.create visitor << o visitor.tree.yaml io, end |