Maintenance Ruby 3.4 gets fixes, but no new features. Switch to Ruby 4.0 →
Psych.dump
# File tmp/rubies/ruby-3.4.1/ext/psych/lib/psych.rb, line 515
def self.dump o, io = nil, options = {}
if Hash === io
options = io
io = nil
end
visitor = Psych::Visitors::YAMLTree.create options
visitor << o
visitor.tree.yaml io, options
end
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.
Currently supported options are:
:indentation-
Number of space characters used to indent. Acceptable value should be in
0..9range, otherwise option is ignored.Default:
2. :line_width-
Max character to wrap line at. For unlimited line width use
-1.Default:
0(meaning “wrap at 81”). :canonical-
Write “canonical”
YAMLform (very verbose, yet strictly formal).Default:
false. :header-
Write
%YAML [version]at the beginning of document.Default:
false. :stringify_names-
Dump symbol keys in
Hashobjects as string.Default:
false.
Example:
# Dump an array, get back a YAML string Psych.dump(['a', 'b']) # => "---\n- a\n- b\n" # Dump an array to an IO object Psych.dump(['a', 'b'], StringIO.new) # => #<StringIO:0x000001009d0890> # Dump an array with indentation set Psych.dump(['a', ['b']], indentation: 3) # => "---\n- a\n- - b\n" # Dump an array to an IO with indentation set Psych.dump(['a', ['b']], StringIO.new, indentation: 3) # Dump hash with symbol keys as string Psych.dump({a: "b"}, stringify_names: true) # => "---\na: b\n"