module Gem::SafeYAML

This module is used for safely loading YAML specs from a gem. The ‘safe_load` method defined on this module is specifically designed for loading Gem specifications. For loading other YAML safely, please see Psych.safe_load

Constants

PERMITTED_CLASSES
PERMITTED_SYMBOLS

Public Class Methods

# File lib/rubygems/safe_yaml.rb, line 37
def self.safe_load(input)
  # Psych rejects legacy metadata bytes, so preserve them with the internal parser.
  if Gem.use_psych? && valid_encoding?(input)
    ::Psych.safe_load(input, permitted_classes: PERMITTED_CLASSES,
                             permitted_symbols: PERMITTED_SYMBOLS, aliases: @aliases_enabled)
  else
    Gem::YAMLSerializer.load(
      input,
      permitted_classes: PERMITTED_CLASSES,
      permitted_symbols: PERMITTED_SYMBOLS,
      aliases: aliases_enabled?
    )
  end
end
Also aliased as: load
# File lib/rubygems/safe_yaml.rb, line 56
                     def self.valid_encoding?(input)
  return true unless input.is_a?(String)

  input.dup.force_encoding(Encoding::UTF_8).valid_encoding?
end