summaryrefslogtreecommitdiff
path: root/lib/rubygems/config_file.rb
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2023-04-17 18:54:29 +0900
committergit <svn-admin@ruby-lang.org>2023-04-19 06:56:18 +0000
commitbf8d8ce1ee196a508c934f6664af949ca98548e5 (patch)
treeba7d9ab8027bbc58f5c93ae7d4e067af954fa690 /lib/rubygems/config_file.rb
parent364c2fea345a2b0cc5f1d975e1b55c7f542a7936 (diff)
[rubygems/rubygems] Keep compatiblity of Bundler specs
https://github.com/rubygems/rubygems/commit/b211eeacba
Diffstat (limited to 'lib/rubygems/config_file.rb')
-rw-r--r--lib/rubygems/config_file.rb22
1 files changed, 21 insertions, 1 deletions
diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb
index 36cf20194c..97c11bd95d 100644
--- a/lib/rubygems/config_file.rb
+++ b/lib/rubygems/config_file.rb
@@ -352,7 +352,27 @@ if you believe they were disclosed to a third party.
begin
content = Bundler::YAMLSerializer.load(File.read(filename))
- unless content.is_a? Hash
+ if content.is_a? Hash
+ content.transform_keys! do |k|
+ if k.match?(/__/)
+ if k.is_a?(Symbol)
+ k.to_s.gsub(/__/,".").to_sym
+ else
+ k.dup.gsub(/__/,".")
+ end
+ else
+ k
+ end
+ end
+
+ content.transform_values! do |v|
+ if (v.is_a?(Hash) || v.is_a?(String)) && v.empty?
+ nil
+ else
+ v
+ end
+ end
+ else
warn "Failed to load #{filename} because it doesn't contain valid YAML hash"
return {}
end