module Psych
Übersicht
Psych ist ein YAML Parser und Emittent. Psych nutzt libyaml [Homepage: pyyaml.org/wiki/LibYAML] oder [git repo: github.com/yaml/libyaml] für seine YAML Parsing- und Emittierungsfähigkeiten. Zusätzlich zur Umschließung von libyaml weiß Psych auch, wie die meisten Ruby-Objekte in und aus dem YAML-Format serialisiert und deserialisiert werden.
ICH MUSS JETZT SOFORT YAML PARSEN ODER EMITTEN!
# Parse some YAML Psych.load("--- foo") # => "foo" # Emit some YAML Psych.dump("foo") # => "--- foo\n...\n" { :a => 'b'}.to_yaml # => "---\n:a: b\n"
Haben Sie mehr Zeit? Lesen Sie weiter!
YAML Parsing
Psych bietet eine Reihe von Schnittstellen zum Parsen eines YAML-Dokuments, die von niedrig bis hoch reichen, je nach Ihren Parsing-Anforderungen. Auf der niedrigsten Ebene gibt es einen ereignisbasierten Parser. Die mittlere Ebene bietet Zugriff auf den rohen YAML AST, und auf der höchsten Ebene besteht die Möglichkeit, YAML in Ruby-Objekte zu entpacken.
YAML Emittierung
Psych bietet eine Reihe von Schnittstellen, die von niedrig bis hoch reichen, zur Erzeugung von YAML-Dokumenten. Ganz ähnlich wie die YAML-Parsing-Schnittstellen bietet Psych auf der niedrigsten Ebene ein ereignisbasiertes System, auf der mittleren Ebene den Aufbau eines YAML AST und auf der höchsten Ebene die Konvertierung eines Ruby-Objekts direkt in ein YAML-Dokument.
High-Level API
Parsing
Der von Psych bereitgestellte High-Level YAML-Parser nimmt einfach YAML als Eingabe und gibt eine Ruby-Datenstruktur zurück. Informationen zur Verwendung des High-Level-Parsers finden Sie unter Psych.load
Lesen aus einem String
Psych.safe_load("--- a") # => 'a' Psych.safe_load("---\n - a\n - b") # => ['a', 'b'] # From a trusted string: Psych.load("--- !ruby/range\nbegin: 0\nend: 42\nexcl: false\n") # => 0..42
Lesen aus einer Datei
Psych.safe_load_file("data.yml", permitted_classes: [Date]) Psych.load_file("trusted_database.yml")
Fehlerbehandlung
begin # The second argument changes only the exception contents Psych.parse("--- `", "file.txt") rescue Psych::SyntaxError => ex ex.file # => 'file.txt' ex.message # => "(file.txt): found character that cannot start any token" end
Emittierung
Der High-Level-Emitter hat die einfachste Schnittstelle. Psych nimmt einfach eine Ruby-Datenstruktur und konvertiert sie in ein YAML-Dokument. Sehen Sie Psych.dump für weitere Informationen zum Dumpen einer Ruby-Datenstruktur.
Schreiben in einen String
# 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)
Schreiben in eine Datei
Derzeit gibt es keine direkte API zum Dumpen von Ruby-Strukturen in Dateien
File.open('database.yml', 'w') do |file| file.write(Psych.dump(['a', 'b'])) end
Mid-Level API
Parsing
Psych bietet Zugriff auf einen AST, der aus dem Parsen eines YAML-Dokuments erzeugt wurde. Dieser Baum wird mithilfe von Psych::Parser und Psych::TreeBuilder erstellt. Der AST kann frei untersucht und manipuliert werden. Bitte sehen Sie Psych::parse_stream, Psych::Nodes und Psych::Nodes::Node für weitere Informationen zum Umgang mit YAML-Syntaxbäumen.
Lesen aus einem String
# Returns Psych::Nodes::Stream Psych.parse_stream("---\n - a\n - b") # Returns Psych::Nodes::Document Psych.parse("---\n - a\n - b")
Lesen aus einer Datei
# Returns Psych::Nodes::Stream Psych.parse_stream(File.read('database.yml')) # Returns Psych::Nodes::Document Psych.parse_file('database.yml')
Fehlerbehandlung
begin # The second argument changes only the exception contents Psych.parse("--- `", "file.txt") rescue Psych::SyntaxError => ex ex.file # => 'file.txt' ex.message # => "(file.txt): found character that cannot start any token" end
Emittierung
Auf der mittleren Ebene wird ein AST erstellt. Dieser AST ist genau derselbe wie der AST, der beim Parsen eines YAML-Dokuments verwendet wird. Benutzer können einen AST manuell erstellen, und der AST weiß, wie er sich selbst als YAML-Dokument emittieren kann. Sehen Sie Psych::Nodes, Psych::Nodes::Node und Psych::TreeBuilder für weitere Informationen zum Erstellen eines YAML AST.
Schreiben in einen String
# We need Psych::Nodes::Stream (not Psych::Nodes::Document) stream = Psych.parse_stream("---\n - a\n - b") stream.to_yaml # => "---\n- a\n- b\n"
Schreiben in eine Datei
# We need Psych::Nodes::Stream (not Psych::Nodes::Document) stream = Psych.parse_stream(File.read('database.yml')) File.open('database.yml', 'w') do |file| file.write(stream.to_yaml) end
Low-Level API
Parsing
Der Parser auf der niedrigsten Ebene sollte verwendet werden, wenn die YAML-Eingabe bereits bekannt ist und der Entwickler nicht den Aufwand für den Aufbau eines AST oder die automatische Erkennung und Konvertierung in Ruby-Objekte auf sich nehmen möchte. Sehen Sie Psych::Parser für weitere Informationen zur Verwendung des ereignisbasierten Parsers.
Lesen in die Struktur Psych::Nodes::Stream
parser = Psych::Parser.new(TreeBuilder.new) # => #<Psych::Parser> parser = Psych.parser # it's an alias for the above parser.parse("---\n - a\n - b") # => #<Psych::Parser> parser.handler # => #<Psych::TreeBuilder> parser.handler.root # => #<Psych::Nodes::Stream>
Empfangen eines Ereignisstroms
recorder = Psych::Handlers::Recorder.new parser = Psych::Parser.new(recorder) parser.parse("---\n - a\n - b") recorder.events # => [list of [event, args] lists] # event is one of: Psych::Handler::EVENTS # args are the arguments passed to the event
Emittierung
Der Emitter auf der niedrigsten Ebene ist ein ereignisbasiertes System. Ereignisse werden an ein Psych::Emitter-Objekt gesendet. Dieses Objekt weiß, wie die Ereignisse in ein YAML-Dokument konvertiert werden. Diese Schnittstelle sollte verwendet werden, wenn das Dokumentformat im Voraus bekannt ist oder die Geschwindigkeit eine Rolle spielt. Sehen Sie Psych::Emitter für weitere Informationen.
Schreiben in eine Ruby-Struktur
Psych.parser.parse("--- a") # => #<Psych::Parser> parser.handler.first # => #<Psych::Nodes::Stream> parser.handler.first.to_ruby # => ["a"] parser.handler.root.first # => #<Psych::Nodes::Document> parser.handler.root.first.to_ruby # => "a" # You can instantiate an Emitter manually Psych::Visitors::ToRuby.new.accept(parser.handler.root.first) # => "a"
Constants
Öffentliche Klassenmethoden
Source
# File 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
Dumpen Sie das Ruby-Objekt o in einen YAML-String. Optionale options können übergeben werden, um das Ausgabeformat zu steuern. Wenn ein IO-Objekt übergeben wird, wird das YAML in dieses IO-Objekt gedumpt.
Derzeit unterstützte Optionen sind
:indentation-
Anzahl der Leerzeichen für die Einrückung. Akzeptable Werte liegen im Bereich
0..9, ansonsten wird die Option ignoriert.Standard:
2. :line_width-
Maximale Zeichenzahl für Zeilenumbrüche. Für unbegrenzte Zeilenbreite verwenden Sie
-1.Standard:
0(bedeutet „umbruch bei 81“). :canonical-
Schreiben Sie die „kanonische“
YAML-Form (sehr wortreich, aber streng formal).Standard:
false. :header-
Schreiben Sie
%YAML [version]am Anfang des Dokuments.Standard:
false. :stringify_names-
Dumpen Sie Symbolschlüssel in
Hash-Objekten als String.Standard:
false.
Beispiel
# 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"
Source
# File ext/psych/lib/psych.rb, line 613 def self.dump_stream *objects visitor = Psych::Visitors::YAMLTree.create({}) objects.each do |o| visitor << o end visitor.tree.yaml end
Dumpen Sie eine Liste von Objekten als separate Dokumente in einen Dokumentenstrom.
Beispiel
Psych.dump_stream("foo\n ", {}) # => "--- ! \"foo\\n \"\n--- {}\n"
Source
static VALUE libyaml_version(VALUE module)
{
int major, minor, patch;
VALUE list[3];
yaml_get_version(&major, &minor, &patch);
list[0] = INT2NUM(major);
list[1] = INT2NUM(minor);
list[2] = INT2NUM(patch);
return rb_ary_new4((long)3, list);
}
Gibt die verwendete Version von libyaml zurück
Source
# File ext/psych/lib/psych.rb, line 369 def self.load yaml, permitted_classes: [Symbol], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false, strict_integer: false, parse_symbols: true safe_load yaml, permitted_classes: permitted_classes, permitted_symbols: permitted_symbols, aliases: aliases, filename: filename, fallback: fallback, symbolize_names: symbolize_names, freeze: freeze, strict_integer: strict_integer, parse_symbols: parse_symbols end
Laden Sie yaml in eine Ruby-Datenstruktur. Wenn mehrere Dokumente vorhanden sind, wird das Objekt im ersten Dokument zurückgegeben. filename wird in der Fehlermeldung verwendet, wenn beim Parsen ein Fehler auftritt. Wenn yaml leer ist, gibt es den angegebenen fallback-Rückgabewert zurück, der standardmäßig nil ist.
Löst eine Psych::SyntaxError aus, wenn ein YAML-Syntaxfehler erkannt wird.
Beispiel
Psych.load("--- a") # => 'a' Psych.load("---\n - a\n - b") # => ['a', 'b'] begin Psych.load("--- `", filename: "file.txt") rescue Psych::SyntaxError => ex ex.file # => 'file.txt' ex.message # => "(file.txt): found character that cannot start any token" end
Wenn das optionale Schlüsselwortargument symbolize_names auf einen wahren Wert gesetzt ist, werden Symbole für Schlüssel in Hash-Objekten zurückgegeben (Standard: Strings).
Psych.load("---\n foo: bar") # => {"foo"=>"bar"} Psych.load("---\n foo: bar", symbolize_names: true) # => {:foo=>"bar"}
Löst eine TypeError aus, wenn der Parameter `yaml` NilClass ist. Diese Methode ist ähnlich wie `safe_load`, mit der Ausnahme, dass `Symbol`-Objekte standardmäßig erlaubt sind.
Source
# File ext/psych/lib/psych.rb, line 716 def self.load_file filename, **kwargs File.open(filename, 'r:bom|utf-8') { |f| self.load f, filename: filename, **kwargs } end
Lädt das im Dokument filename enthaltene Dokument. Gibt das in filename enthaltene YAML als Ruby-Objekt zurück, oder wenn die Datei leer ist, gibt es den angegebenen fallback-Rückgabewert zurück, der standardmäßig nil ist. Siehe load für Optionen.
Source
# File ext/psych/lib/psych.rb, line 644 def self.load_stream yaml, filename: nil, fallback: [], **kwargs result = if block_given? parse_stream(yaml, filename: filename) do |node| yield node.to_ruby(**kwargs) end else parse_stream(yaml, filename: filename).children.map { |node| node.to_ruby(**kwargs) } end return fallback if result.is_a?(Array) && result.empty? result end
Lädt mehrere im Dokument yaml angegebene Dokumente. Gibt die geparsten Dokumente als Liste zurück. Wenn ein Block gegeben ist, wird jedes Dokument in Ruby konvertiert und während des Parsens an den Block übergeben
Beispiel
Psych.load_stream("--- foo\n...\n--- bar\n...") # => ['foo', 'bar'] list = [] Psych.load_stream("--- foo\n...\n--- bar\n...") do |ruby| list << ruby end list # => ['foo', 'bar']
Source
# File ext/psych/lib/psych.rb, line 400 def self.parse yaml, filename: nil parse_stream(yaml, filename: filename) do |node| return node end false end
Parst einen YAML-String in yaml. Gibt das Psych::Nodes::Document zurück. filename wird in der Fehlermeldung verwendet, wenn eine Psych::SyntaxError ausgelöst wird.
Löst eine Psych::SyntaxError aus, wenn ein YAML-Syntaxfehler erkannt wird.
Beispiel
Psych.parse("---\n - a\n - b") # => #<Psych::Nodes::Document:0x00> begin Psych.parse("--- `", filename: "file.txt") rescue Psych::SyntaxError => ex ex.file # => 'file.txt' ex.message # => "(file.txt): found character that cannot start any token" end
Siehe Psych::Nodes für weitere Informationen über den YAML AST.
Source
# File ext/psych/lib/psych.rb, line 412 def self.parse_file filename, fallback: false result = File.open filename, 'r:bom|utf-8' do |f| parse f, filename: filename end result || fallback end
Parst eine Datei unter filename. Gibt das Psych::Nodes::Document zurück.
Löst eine Psych::SyntaxError aus, wenn ein YAML-Syntaxfehler erkannt wird.
Source
# File ext/psych/lib/psych.rb, line 454 def self.parse_stream yaml, filename: nil, &block if block_given? parser = Psych::Parser.new(Handlers::DocumentStream.new(&block)) parser.parse yaml, filename else parser = self.parser parser.parse yaml, filename parser.handler.root end end
Parst einen YAML-String in yaml. Gibt den Psych::Nodes::Stream zurück. Diese Methode kann mehrere YAML-Dokumente verarbeiten, die in yaml enthalten sind. filename wird in der Fehlermeldung verwendet, wenn eine Psych::SyntaxError ausgelöst wird.
Wenn ein Block gegeben ist, wird ein Psych::Nodes::Document-Knoten während des Parsens an den Block übergeben.
Löst eine Psych::SyntaxError aus, wenn ein YAML-Syntaxfehler erkannt wird.
Beispiel
Psych.parse_stream("---\n - a\n - b") # => #<Psych::Nodes::Stream:0x00> Psych.parse_stream("--- a\n--- b") do |node| node # => #<Psych::Nodes::Document:0x00> end begin Psych.parse_stream("--- `", filename: "file.txt") rescue Psych::SyntaxError => ex ex.file # => 'file.txt' ex.message # => "(file.txt): found character that cannot start any token" end
Löst eine TypeError aus, wenn NilClass übergeben wird.
Siehe Psych::Nodes für weitere Informationen über den YAML AST.
Source
# File ext/psych/lib/psych.rb, line 421 def self.parser Psych::Parser.new(TreeBuilder.new) end
Gibt einen Standardparser zurück
Source
# File ext/psych/lib/psych.rb, line 596 def self.safe_dump o, io = nil, options = {} if Hash === io options = io io = nil end visitor = Psych::Visitors::RestrictedYAMLTree.create options visitor << o visitor.tree.yaml io, options end
Dumpen Sie sicher das Ruby-Objekt o in einen YAML-String. Optionale options können übergeben werden, um das Ausgabeformat zu steuern. Wenn ein IO-Objekt übergeben wird, wird das YAML in dieses IO-Objekt gedumpt. Standardmäßig dürfen nur die folgenden Klassen serialisiert werden
Beliebige Klassen können durch Hinzufügen dieser Klassen zum Schlüsselwortargument permitted_classes erlaubt werden. Sie sind additiv. Um beispielsweise die Serialisierung von Date zu erlauben
Psych.safe_dump(yaml, permitted_classes: [Date])
Jetzt kann die Klasse Date zusätzlich zu den oben genannten Klassen gedumpt werden.
Eine Ausnahme vom Typ Psych::DisallowedClass wird ausgelöst, wenn das Objekt eine Klasse enthält, die nicht in der Liste permitted_classes enthalten ist.
Derzeit unterstützte Optionen sind
:indentation-
Anzahl der Leerzeichen für die Einrückung. Akzeptable Werte liegen im Bereich
0..9, ansonsten wird die Option ignoriert.Standard:
2. :line_width-
Maximale Zeichenzahl für Zeilenumbrüche. Für unbegrenzte Zeilenbreite verwenden Sie
-1.Standard:
0(bedeutet „umbruch bei 81“). :canonical-
Schreiben Sie die „kanonische“
YAML-Form (sehr wortreich, aber streng formal).Standard:
false. :header-
Schreiben Sie
%YAML [version]am Anfang des Dokuments.Standard:
false. :stringify_names-
Dumpen Sie Symbolschlüssel in
Hash-Objekten als String.Standard:
false.
Beispiel
# 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) # Dump hash with symbol keys as string Psych.dump({a: "b"}, stringify_names: true) # => "---\na: b\n"
Source
# File ext/psych/lib/psych.rb, line 323 def self.safe_load yaml, permitted_classes: [], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false, strict_integer: false, parse_symbols: true result = parse(yaml, filename: filename) return fallback unless result class_loader = ClassLoader::Restricted.new(permitted_classes.map(&:to_s), permitted_symbols.map(&:to_s)) scanner = ScalarScanner.new class_loader, strict_integer: strict_integer, parse_symbols: parse_symbols visitor = if aliases Visitors::ToRuby.new scanner, class_loader, symbolize_names: symbolize_names, freeze: freeze else Visitors::NoAliasRuby.new scanner, class_loader, symbolize_names: symbolize_names, freeze: freeze end result = visitor.accept result result end
Lädt sicher den YAML-String in yaml. Standardmäßig dürfen nur die folgenden Klassen deserialisiert werden
Rekursive Datenstrukturen sind standardmäßig nicht erlaubt. Beliebige Klassen können durch Hinzufügen dieser Klassen zum Schlüsselwortargument permitted_classes erlaubt werden. Sie sind additiv. Um beispielsweise die Deserialisierung von Date zu erlauben
Psych.safe_load(yaml, permitted_classes: [Date])
Jetzt kann die Klasse Date zusätzlich zu den oben genannten Klassen geladen werden.
Aliase können explizit erlaubt werden, indem das Schlüsselwortargument aliases geändert wird. Zum Beispiel
x = [] x << x yaml = Psych.dump x Psych.safe_load yaml # => raises an exception Psych.safe_load yaml, aliases: true # => loads the aliases
Eine Ausnahme vom Typ Psych::DisallowedClass wird ausgelöst, wenn das YAML eine Klasse enthält, die nicht in der Liste permitted_classes enthalten ist.
Eine Ausnahme vom Typ Psych::AliasesNotEnabled wird ausgelöst, wenn das YAML Aliase enthält, aber das Schlüsselwortargument aliases auf false gesetzt ist.
filename wird in der Fehlermeldung verwendet, wenn beim Parsen ein Fehler auftritt.
Wenn das optionale Schlüsselwortargument symbolize_names auf einen wahren Wert gesetzt ist, werden Symbole für Schlüssel in Hash-Objekten zurückgegeben (Standard: Strings).
Psych.safe_load("---\n foo: bar") # => {"foo"=>"bar"} Psych.safe_load("---\n foo: bar", symbolize_names: true) # => {:foo=>"bar"}
Source
# File ext/psych/lib/psych.rb, line 705 def self.safe_load_file filename, **kwargs File.open(filename, 'r:bom|utf-8') { |f| self.safe_load f, filename: filename, **kwargs } end
Lädt sicher das im Dokument filename enthaltene Dokument. Gibt das in filename enthaltene YAML als Ruby-Objekt zurück, oder wenn die Datei leer ist, gibt es den angegebenen fallback-Rückgabewert zurück, der standardmäßig nil ist. Siehe safe_load für Optionen.
Source
# File ext/psych/lib/psych.rb, line 671 def self.safe_load_stream yaml, filename: nil, permitted_classes: [], aliases: false documents = parse_stream(yaml, filename: filename).children.map do |child| stream = Psych::Nodes::Stream.new stream.children << child safe_load(stream.to_yaml, permitted_classes: permitted_classes, aliases: aliases) end if block_given? documents.each { |doc| yield doc } nil else documents end end
Lädt mehrere im Dokument yaml angegebene Dokumente. Gibt die geparsten Dokumente als Liste zurück.
Beispiel
Psych.safe_load_stream("--- foo\n...\n--- bar\n...") # => ['foo', 'bar'] list = [] Psych.safe_load_stream("--- foo\n...\n--- bar\n...") do |ruby| list << ruby end list # => ['foo', 'bar']
Source
# File ext/psych/lib/psych.rb, line 623 def self.to_json object visitor = Psych::Visitors::JSONTree.create visitor << object visitor.tree.yaml end
Dumpen Sie das Ruby-object in einen JSON-String.
Source
# File ext/psych/lib/psych.rb, line 272 def self.unsafe_load yaml, filename: nil, fallback: false, symbolize_names: false, freeze: false, strict_integer: false, parse_symbols: true result = parse(yaml, filename: filename) return fallback unless result result.to_ruby(symbolize_names: symbolize_names, freeze: freeze, strict_integer: strict_integer, parse_symbols: parse_symbols) end
Laden Sie yaml in eine Ruby-Datenstruktur. Wenn mehrere Dokumente vorhanden sind, wird das Objekt im ersten Dokument zurückgegeben. filename wird in der Fehlermeldung verwendet, wenn beim Parsen ein Fehler auftritt. Wenn yaml leer ist, gibt es den angegebenen fallback-Rückgabewert zurück, der standardmäßig false ist.
Löst eine Psych::SyntaxError aus, wenn ein YAML-Syntaxfehler erkannt wird.
Beispiel
Psych.unsafe_load("--- a") # => 'a' Psych.unsafe_load("---\n - a\n - b") # => ['a', 'b'] begin Psych.unsafe_load("--- `", filename: "file.txt") rescue Psych::SyntaxError => ex ex.file # => 'file.txt' ex.message # => "(file.txt): found character that cannot start any token" end
Wenn das optionale Schlüsselwortargument symbolize_names auf einen wahren Wert gesetzt ist, werden Symbole für Schlüssel in Hash-Objekten zurückgegeben (Standard: Strings).
Psych.unsafe_load("---\n foo: bar") # => {"foo"=>"bar"} Psych.unsafe_load("---\n foo: bar", symbolize_names: true) # => {:foo=>"bar"}
Löst eine TypeError aus, wenn der Parameter `yaml` NilClass ist
HINWEIS: Diese Methode sollte *nicht* zum Parsen von nicht vertrauenswürdigen Dokumenten verwendet werden, wie z. B. YAML-Dokumenten, die über Benutzereingaben bereitgestellt werden. Verwenden Sie stattdessen die Methode load oder die Methode safe_load.
Source
# File ext/psych/lib/psych.rb, line 694 def self.unsafe_load_file filename, **kwargs File.open(filename, 'r:bom|utf-8') { |f| self.unsafe_load f, filename: filename, **kwargs } end
Lädt das im Dokument filename enthaltene Dokument. Gibt das in filename enthaltene YAML als Ruby-Objekt zurück, oder wenn die Datei leer ist, gibt es den angegebenen fallback-Rückgabewert zurück, der standardmäßig false ist.
HINWEIS: Diese Methode sollte *nicht* zum Parsen von nicht vertrauenswürdigen Dokumenten verwendet werden, wie z. B. YAML-Dokumenten, die über Benutzereingaben bereitgestellt werden. Verwenden Sie stattdessen die Methode safe_load_file.