123456789_123456789_123456789_123456789_123456789_

Module: Gem::SafeYAML

Relationships & Source Files
Defined in: lib/rubygems/safe_yaml.rb

Overview

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

Constant Summary

Class Attribute Summary

Class Method Summary

Class Attribute Details

.aliases_enabled=(value) (rw)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rubygems/safe_yaml.rb', line 29

def self.aliases_enabled=(value) # :nodoc:
  @aliases_enabled = !!value
end

.aliases_enabled?Boolean (rw)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rubygems/safe_yaml.rb', line 33

def self.aliases_enabled? # :nodoc:
  @aliases_enabled
end

Class Method Details

.load(input)

Alias for .safe_load.

[ GitHub ]

  
# File 'lib/rubygems/safe_yaml.rb', line 53

alias_method :load, :safe_load

.safe_load(input) Also known as: .load

[ GitHub ]

  
# 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

.valid_encoding?(input) ⇒ Boolean (private)

[ GitHub ]

  
# File 'lib/rubygems/safe_yaml.rb', line 56

private_class_method def self.valid_encoding?(input)
  return true unless input.is_a?(String)

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