diff options
Diffstat (limited to 'lib/rubygems/safe_yaml.rb')
-rw-r--r-- | lib/rubygems/safe_yaml.rb | 40 |
1 files changed, 14 insertions, 26 deletions
diff --git a/lib/rubygems/safe_yaml.rb b/lib/rubygems/safe_yaml.rb index 81f99ee26e..6a02a48230 100644 --- a/lib/rubygems/safe_yaml.rb +++ b/lib/rubygems/safe_yaml.rb @@ -1,5 +1,6 @@ -module Gem +# frozen_string_literal: true +module Gem ### # This module is used for safely loading YAML specs from a gem. The # `safe_load` method defined on this module is specifically designed for @@ -24,34 +25,21 @@ module Gem runtime ].freeze - if ::Psych.respond_to? :safe_load - def self.safe_load(input) - if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1') - ::Psych.safe_load(input, permitted_classes: PERMITTED_CLASSES, permitted_symbols: PERMITTED_SYMBOLS, aliases: true) - else - ::Psych.safe_load(input, PERMITTED_CLASSES, PERMITTED_SYMBOLS, true) - end - end + @aliases_enabled = true + def self.aliases_enabled=(value) # :nodoc: + @aliases_enabled = !!value + end - def self.load(input) - if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1') - ::Psych.safe_load(input, permitted_classes: [::Symbol]) - else - ::Psych.safe_load(input, [::Symbol]) - end - end - else - unless Gem::Deprecate.skip - warn "Psych safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0)." - end + def self.aliases_enabled? # :nodoc: + @aliases_enabled + end - def self.safe_load(input, *args) - ::Psych.load input - end + def self.safe_load(input) + ::Psych.safe_load(input, permitted_classes: PERMITTED_CLASSES, permitted_symbols: PERMITTED_SYMBOLS, aliases: @aliases_enabled) + end - def self.load(input) - ::Psych.load input - end + def self.load(input) + ::Psych.safe_load(input, permitted_classes: [::Symbol]) end end end |