safe_load(yaml, permitted_classes: [], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false, strict_integer: false, parse_symbols: true) -> objectRuby 2.1.0 から[permalink][rdoc][edit]-
安全に YAML フォーマットの文書を読み込み Ruby のオブジェクトを生成して返します。
デフォルトでは以下のクラスのオブジェクトしか変換しません。
再帰的なデータ構造はデフォルトでは許可されていません。
任意のクラスを許可するにはキーワード引数
permitted_classes: に Date を渡した例permitted_classesを指定すると、そのクラスが追加されます。例えば Date クラスを許可するには以下のように書いてください:require 'psych' require 'date' Psych.safe_load(yaml, permitted_classes: [Date])すると上のクラス一覧に加えて Date クラスが読み込まれます。
エイリアスはキーワード引数
aliases: true の例aliasesを指定することで明示的に許可できます。require 'psych' x = [] x << x yaml = Psych.dump x Psych.safe_load yaml # ~> Psych::AliasesNotEnabled p Psych.safe_load yaml, aliases: true # => エイリアスが読み込まれるyamlに許可されていないクラスが含まれていた場合は、 Psych::DisallowedClass 例外が発生します。yamlがエイリアスを含んでいてキーワード引数aliasesが false の時、 Psych::BadAlias 例外が発生します。filenameはパース中に発生した例外のメッセージに用います。キーワード引数
symbolize_names: true の例symbolize_namesに true を指定した場合はハッシュのキーを Symbol に変換して返します。require 'psych' p Psych.safe_load("---\n foo: bar") # => {"foo" => "bar"} p Psych.safe_load("---\n foo: bar", symbolize_names: true) # => {foo: "bar"}キーワード引数
freeze: true の例freezeに true を指定した場合は再帰的に Object#freeze したオブジェクトを返します。require "psych" data = <<~EOS aaa: bbb: [hoge] EOS yaml = Psych.load(data, freeze: true) p yaml # => {"aaa" => {"bbb" => ["hoge"]}} p yaml.frozen? # = true p yaml["aaa"].frozen? # = true p yaml["aaa"]["bbb"].frozen? # = true p yaml["aaa"]["bbb"].first.frozen? # = true- [PARAM]
permitted_classes: - 追加で読み込みを許可するクラスの配列。
- [PARAM]
permitted_symbols: -
引数
permitted_classesに Symbol を含む場合に読み込みを許可する Symbol の配列。省略した場合は全ての Symbol を許可します。 - [PARAM]
aliases: - エイリアスの読み込みを許可するかどうか。
- [PARAM]
filename: - Psych::SyntaxError 発生時にファイル名として表示する文字列。
- [PARAM]
fallback: -
引数
yamlに空のYAMLを指定した場合の戻り値を指定します。デフォルトは nil です。 - [PARAM]
symbolize_names: - ハッシュ(YAMLの仕様では正確にはマッピング)のキーを Symbol に変換するかどうかを指定します。 true を指定した場合は変換します。デフォルトでは文字列に変換されます。
- [PARAM]
freeze: - true を指定すると再帰的に Object#freeze されたオブジェクトを返します。デフォルトは false です。
- [PARAM]
strict_integer: - true を指定すると、"1,000" のようなカンマを含む数値を Integer に変換せず、文字列として返します。デフォルトは false です。
- [PARAM]
parse_symbols: - false を指定すると、":foo" のような文字列を Symbol に変換せず、文字列として返します。デフォルトは true です。
- [PARAM]