rubygems-update 3.3.14 → 3.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52a5488d06e43628daedcaca933ff49a5ba653ce05b1ec00b1995648f2ed5e3e
4
- data.tar.gz: d29d6a1465b98d4ce61a1a507e9ec063b5a5b0788090be53578a62c85bc01a75
3
+ metadata.gz: 9c8251cdf4ded47257679e20301da2396899478015bbf63592a1e0953949761d
4
+ data.tar.gz: 6db38aaea1698dac8472f55f7a778c511f0d3807441e0de7af1d1d4ac607188f
5
5
  SHA512:
6
- metadata.gz: 3f3a0e464abd62978adc54bcef238b6e100e70432625db8b5cb7c1416b52f98e67194189ba98bc3f7b2b2d559f2725d1634a22b0d11d949b927b93bf09c8e23b
7
- data.tar.gz: 17a6265f067e9c63876fde29b9054ce59dc08ae4f4ea1558ef4fc92e595db788b54467c816db3b9a154ad6aa8f3c31dd5e647c9e87e125bfd7f03185fb6b826e
6
+ metadata.gz: 933a409f4ecba3a01f5141058d3a2796af6920c098a704471ee5400f98df4f9054520e5cd2d0eab88fe8afc010cff4e9d985d05caf84304d17f2e61403b6eb1e
7
+ data.tar.gz: 35d232187dde951c88c90e856e304b417b4984c40b6e5409a96bc9456a4bffd9650cdc37aac82c4ae40f83eca108a04bde4ba533e8db0bc29276a054bad659f2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ # 3.3.15 / 2022-06-01
2
+
3
+ ## Enhancements:
4
+
5
+ * Support the change of did_you_mean about `Exception#detailed_message`.
6
+ Pull request #5560 by mame
7
+ * Installs bundler 2.3.15 as a default gem.
8
+
9
+ ## Bug fixes:
10
+
11
+ * Fix loading old marshaled specs including `YAML::PrivateType` constant.
12
+ Pull request #5415 by deivid-rodriguez
13
+ * Fix rubygems update when non default `--install-dir` is configured. Pull
14
+ request #5566 by deivid-rodriguez
15
+
1
16
  # 3.3.14 / 2022-05-18
2
17
 
3
18
  ## Enhancements:
data/bundler/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ # 2.3.15 (June 1, 2022)
2
+
3
+ ## Enhancements:
4
+
5
+ - Show better error when previous installation fails to be removed [#5564](https://github.com/rubygems/rubygems/pull/5564)
6
+ - Show exception cause in bug report template [#5563](https://github.com/rubygems/rubygems/pull/5563)
7
+
8
+ ## Bug fixes:
9
+
10
+ - Fix `bundle remove` by invalidating cached `Bundle.definition` [#5443](https://github.com/rubygems/rubygems/pull/5443)
11
+ - Fix generated standalone script when it includes default gems [#5586](https://github.com/rubygems/rubygems/pull/5586)
12
+ - Skip duplicated dependency warning for gemspec dev deps [#5587](https://github.com/rubygems/rubygems/pull/5587)
13
+ - Give better conflict resolution advice [#5581](https://github.com/rubygems/rubygems/pull/5581)
14
+ - Fix crash when commenting out a mirror in configuration [#5576](https://github.com/rubygems/rubygems/pull/5576)
15
+ - Fix crash when installing gems with symlinks [#5570](https://github.com/rubygems/rubygems/pull/5570)
16
+ - Ignore `Errno::EROFS` errors when creating `bundler.lock` [#5580](https://github.com/rubygems/rubygems/pull/5580)
17
+ - Ignore `Errno::EPERM` errors when creating `bundler.lock` [#5579](https://github.com/rubygems/rubygems/pull/5579)
18
+ - Fix crash when printing resolution conflicts on metadata requirements [#5562](https://github.com/rubygems/rubygems/pull/5562)
19
+
1
20
  # 2.3.14 (May 18, 2022)
2
21
 
3
22
  ## Bug fixes:
@@ -4,8 +4,8 @@ module Bundler
4
4
  # Represents metadata from when the Bundler gem was built.
5
5
  module BuildMetadata
6
6
  # begin ivars
7
- @built_at = "2022-05-18".freeze
8
- @git_commit_sha = "467ad58a7c".freeze
7
+ @built_at = "2022-06-01".freeze
8
+ @git_commit_sha = "e7e41afd92".freeze
9
9
  @release = true
10
10
  # end ivars
11
11
 
@@ -124,19 +124,17 @@ module Bundler
124
124
  raise GemfileError, "You cannot specify the same gem twice with different version requirements.\n" \
125
125
  "You specified: #{current.name} (#{current.requirement}) and #{dep.name} (#{dep.requirement})" \
126
126
  "#{update_prompt}"
127
+ elsif current.source != dep.source
128
+ return if dep.type == :development
129
+ raise GemfileError, "You cannot specify the same gem twice coming from different sources.\n" \
130
+ "You specified that #{dep.name} (#{dep.requirement}) should come from " \
131
+ "#{current.source || "an unspecified source"} and #{dep.source}\n"
127
132
  else
128
133
  Bundler.ui.warn "Your Gemfile lists the gem #{current.name} (#{current.requirement}) more than once.\n" \
129
134
  "You should probably keep only one of them.\n" \
130
135
  "Remove any duplicate entries and specify the gem only once.\n" \
131
136
  "While it's not a problem now, it could cause errors if you change the version of one of them later."
132
137
  end
133
-
134
- if current.source != dep.source
135
- return if dep.type == :development
136
- raise GemfileError, "You cannot specify the same gem twice coming from different sources.\n" \
137
- "You specified that #{dep.name} (#{dep.requirement}) should come from " \
138
- "#{current.source || "an unspecified source"} and #{dep.source}\n"
139
- end
140
138
  end
141
139
  end
142
140
 
@@ -79,10 +79,6 @@ module Bundler
79
79
  case @permission_type
80
80
  when :create
81
81
  "executable permissions for all parent directories and write permissions for `#{parent_folder}`"
82
- when :delete
83
- permissions = "executable permissions for all parent directories and write permissions for `#{parent_folder}`"
84
- permissions += ", and the same thing for all subdirectories inside #{@path}" if File.directory?(@path)
85
- permissions
86
82
  else
87
83
  "#{@permission_type} permissions for that path"
88
84
  end
@@ -172,4 +168,16 @@ module Bundler
172
168
 
173
169
  status_code(32)
174
170
  end
171
+
172
+ class DirectoryRemovalError < BundlerError
173
+ def initialize(orig_exception, msg)
174
+ full_message = "#{msg}.\n" \
175
+ "The underlying error was #{orig_exception.class}: #{orig_exception.message}, with backtrace:\n" \
176
+ " #{orig_exception.backtrace.join("\n ")}\n\n" \
177
+ "Bundler Error Backtrace:"
178
+ super(full_message)
179
+ end
180
+
181
+ status_code(36)
182
+ end
175
183
  end
@@ -65,8 +65,7 @@ module Bundler
65
65
  --- ERROR REPORT TEMPLATE -------------------------------------------------------
66
66
 
67
67
  ```
68
- #{e.class}: #{e.message}
69
- #{e.backtrace && e.backtrace.join("\n ").chomp}
68
+ #{exception_message(e)}
70
69
  ```
71
70
 
72
71
  #{Bundler::Env.report}
@@ -85,6 +84,21 @@ module Bundler
85
84
  EOS
86
85
  end
87
86
 
87
+ def exception_message(error)
88
+ message = serialized_exception_for(error)
89
+ cause = error.cause
90
+ return message unless cause
91
+
92
+ message + serialized_exception_for(cause)
93
+ end
94
+
95
+ def serialized_exception_for(e)
96
+ <<-EOS.gsub(/^ {8}/, "")
97
+ #{e.class}: #{e.message}
98
+ #{e.backtrace && e.backtrace.join("\n ").chomp}
99
+ EOS
100
+ end
101
+
88
102
  def issues_url(exception)
89
103
  message = exception.message.lines.first.tr(":", " ").chomp
90
104
  message = message.split("-").first if exception.is_a?(Errno)
@@ -72,6 +72,10 @@ module Bundler
72
72
 
73
73
  deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep, false)} was removed." }
74
74
  end
75
+
76
+ # Invalidate the cached Bundler.definition.
77
+ # This prevents e.g. `bundle remove ...` from using outdated information.
78
+ Bundler.reset_paths!
75
79
  end
76
80
 
77
81
  private
@@ -38,12 +38,7 @@ def gemfile(install = false, options = {}, &gemfile)
38
38
  raise ArgumentError, "Unknown options: #{opts.keys.join(", ")}" unless opts.empty?
39
39
 
40
40
  begin
41
- old_root = Bundler.method(:root)
42
- bundler_module = class << Bundler; self; end
43
- bundler_module.send(:remove_method, :root)
44
- def Bundler.root
45
- Bundler::SharedHelpers.pwd.expand_path
46
- end
41
+ Bundler.instance_variable_set(:@bundle_path, Pathname.new(Gem.dir))
47
42
  old_gemfile = ENV["BUNDLE_GEMFILE"]
48
43
  Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", "Gemfile"
49
44
 
@@ -71,11 +66,6 @@ def gemfile(install = false, options = {}, &gemfile)
71
66
  runtime.setup.require
72
67
  end
73
68
  ensure
74
- if bundler_module
75
- bundler_module.send(:remove_method, :root)
76
- bundler_module.send(:define_method, :root, old_root)
77
- end
78
-
79
69
  if old_gemfile
80
70
  ENV["BUNDLE_GEMFILE"] = old_gemfile
81
71
  else
@@ -66,7 +66,7 @@ module Bundler
66
66
  # require paths and save them in a `setup.rb` file. See `bundle standalone --help` for more
67
67
  # information.
68
68
  def run(options)
69
- create_bundle_path
69
+ Bundler.create_bundle_path
70
70
 
71
71
  ProcessLock.lock do
72
72
  if Bundler.frozen_bundle?
@@ -262,15 +262,6 @@ module Bundler
262
262
  end
263
263
  end
264
264
 
265
- def create_bundle_path
266
- SharedHelpers.filesystem_access(Bundler.bundle_path.to_s) do |p|
267
- Bundler.mkdir_p(p)
268
- end unless Bundler.bundle_path.exist?
269
- rescue Errno::EEXIST
270
- raise PathError, "Could not install to path `#{Bundler.bundle_path}` " \
271
- "because a file already exists at that path. Either remove or rename the file so the directory can be created."
272
- end
273
-
274
265
  # returns whether or not a re-resolve was needed
275
266
  def resolve_if_needed(options)
276
267
  if !@definition.unlocking? && !options["force"] && !Bundler.settings[:inline] && Bundler.default_lockfile.file?
@@ -12,7 +12,7 @@ module Bundler
12
12
  yield
13
13
  f.flock(File::LOCK_UN)
14
14
  end
15
- rescue Errno::EACCES, Errno::ENOLCK, Errno::ENOTSUP
15
+ rescue Errno::EACCES, Errno::ENOLCK, Errno::ENOTSUP, Errno::EPERM, Errno::EROFS
16
16
  # In the case the user does not have access to
17
17
  # create the lock file or is using NFS where
18
18
  # locks are not available we skip locking.
@@ -19,13 +19,15 @@ module Bundler
19
19
  # collection of gemspecs is returned. Otherwise, nil is returned.
20
20
  def self.resolve(requirements, source_requirements = {}, base = [], gem_version_promoter = GemVersionPromoter.new, additional_base_requirements = [], platforms = nil)
21
21
  base = SpecSet.new(base) unless base.is_a?(SpecSet)
22
- resolver = new(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms)
22
+ metadata_requirements, regular_requirements = requirements.partition {|dep| dep.name.end_with?("\0") }
23
+ resolver = new(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms, metadata_requirements)
23
24
  result = resolver.start(requirements)
24
- SpecSet.new(SpecSet.new(result).for(requirements.reject {|dep| dep.name.end_with?("\0") }))
25
+ SpecSet.new(SpecSet.new(result).for(regular_requirements))
25
26
  end
26
27
 
27
- def initialize(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms)
28
+ def initialize(source_requirements, base, gem_version_promoter, additional_base_requirements, platforms, metadata_requirements)
28
29
  @source_requirements = source_requirements
30
+ @metadata_requirements = metadata_requirements
29
31
  @base = base
30
32
  @resolver = Molinillo::Resolver.new(self, self)
31
33
  @search_for = {}
@@ -344,8 +346,6 @@ module Bundler
344
346
  trees.sort_by! {|t| t.reverse.map(&:name) }
345
347
  end
346
348
 
347
- metadata_requirements = {}
348
-
349
349
  o << trees.map do |tree|
350
350
  t = "".dup
351
351
  depth = 2
@@ -354,7 +354,6 @@ module Bundler
354
354
  base_tree_name = base_tree.name
355
355
 
356
356
  if base_tree_name.end_with?("\0")
357
- metadata_requirements[base_tree_name] = base_tree
358
357
  t = nil
359
358
  else
360
359
  tree.each do |req|
@@ -393,10 +392,10 @@ module Bundler
393
392
  end
394
393
  end
395
394
  elsif name.end_with?("\0")
396
- o << %(\n Current #{name} version:\n #{SharedHelpers.pretty_dependency(metadata_requirements[name])}\n\n)
395
+ o << %(\n Current #{name} version:\n #{SharedHelpers.pretty_dependency(@metadata_requirements.find {|req| req.name == name })}\n\n)
397
396
  elsif conflict.locked_requirement
398
397
  o << "\n"
399
- o << %(Running `bundle update` will rebuild your snapshot from scratch, using only\n)
398
+ o << %(Deleting your #{name_for_locking_dependency_source} file and running `bundle install` will rebuild your snapshot from scratch, using only\n)
400
399
  o << %(the gems in your Gemfile, which may resolve the conflict.\n)
401
400
  elsif !conflict.existing
402
401
  o << "\n"
@@ -93,14 +93,9 @@ module Bundler
93
93
  private
94
94
 
95
95
  def strict_rm_rf(dir)
96
- # FileUtils.rm_rf should probably rise in case of permission issues like
97
- # `rm -rf` does. However, it fails to delete the folder silently due to
98
- # https://github.com/ruby/fileutils/issues/57. It should probably be fixed
99
- # inside `fileutils` but for now I`m checking whether the folder was
100
- # removed after it completes, and raising otherwise.
101
- FileUtils.rm_rf dir
102
-
103
- raise PermissionError.new(dir, :delete) if File.directory?(dir)
96
+ Bundler.rm_rf dir
97
+ rescue Errno::ENOTEMPTY => e
98
+ raise DirectoryRemovalError.new(e.cause, "Could not delete previous installation of `#{dir}`")
104
99
  end
105
100
 
106
101
  def validate_bundler_checksum(checksum)
@@ -487,7 +487,7 @@ module Bundler
487
487
  /ix.freeze
488
488
 
489
489
  def self.key_for(key)
490
- key = normalize_uri(key).to_s if key.is_a?(String) && /https?:/ =~ key
490
+ key = normalize_uri(key).to_s if key.is_a?(String) && key.start_with?("http", "mirror.http")
491
491
  key = key.to_s.gsub(".", "__").gsub("-", "___").upcase
492
492
  "BUNDLE_#{key}"
493
493
  end
@@ -499,7 +499,7 @@ module Bundler
499
499
  end
500
500
 
501
501
  def rubygems_dir
502
- Bundler.rubygems.gem_dir
502
+ Bundler.bundle_path
503
503
  end
504
504
 
505
505
  def default_cache_path_for(dir)
@@ -64,9 +64,11 @@ module Bundler
64
64
  end
65
65
 
66
66
  def full_gem_path
67
- # deleted gems can have their stubs return nil, so in that case grab the
68
- # expired path from the full spec
69
- stub.full_gem_path || method_missing(:full_gem_path)
67
+ stub.full_gem_path
68
+ end
69
+
70
+ def full_gem_path=(path)
71
+ stub.full_gem_path = path
70
72
  end
71
73
 
72
74
  def full_require_paths
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: false
2
2
 
3
3
  module Bundler
4
- VERSION = "2.3.14".freeze
4
+ VERSION = "2.3.15".freeze
5
5
 
6
6
  def self.bundler_major_version
7
7
  @bundler_major_version ||= VERSION.split(".").first.to_i
@@ -97,6 +97,17 @@ module Bundler
97
97
  @bundle_path ||= Pathname.new(configured_bundle_path.path).expand_path(root)
98
98
  end
99
99
 
100
+ def create_bundle_path
101
+ SharedHelpers.filesystem_access(bundle_path.to_s) do |p|
102
+ mkdir_p(p)
103
+ end unless bundle_path.exist?
104
+
105
+ @bundle_path = bundle_path.realpath
106
+ rescue Errno::EEXIST
107
+ raise PathError, "Could not install to path `#{bundle_path}` " \
108
+ "because a file already exists at that path. Either remove or rename the file so the directory can be created."
109
+ end
110
+
100
111
  def configured_bundle_path
101
112
  @configured_bundle_path ||= settings.path.tap(&:validate!)
102
113
  end
@@ -148,7 +148,12 @@ class Gem::CommandManager
148
148
  def run(args, build_args=nil)
149
149
  process_args(args, build_args)
150
150
  rescue StandardError, Timeout::Error => ex
151
- alert_error clean_text("While executing gem ... (#{ex.class})\n #{ex}")
151
+ if ex.respond_to?(:detailed_message)
152
+ msg = ex.detailed_message(highlight: false).sub(/\A(.*?)(?: \(.+?\))/) { $1 }
153
+ else
154
+ msg = ex.message
155
+ end
156
+ alert_error clean_text("While executing gem ... (#{ex.class})\n #{msg}")
152
157
  ui.backtrace ex
153
158
 
154
159
  terminate_interaction(1)
@@ -173,10 +173,11 @@ command to remove old versions.
173
173
  highest_remote_gem.first
174
174
  end
175
175
 
176
- def install_rubygems(version) # :nodoc:
176
+ def install_rubygems(spec) # :nodoc:
177
177
  args = update_rubygems_arguments
178
+ version = spec.version
178
179
 
179
- update_dir = File.join Gem.dir, 'gems', "rubygems-update-#{version}"
180
+ update_dir = File.join spec.base_dir, 'gems', "rubygems-update-#{version}"
180
181
 
181
182
  Dir.chdir update_dir do
182
183
  say "Installing RubyGems #{version}" unless options[:silent]
@@ -290,9 +291,7 @@ command to remove old versions.
290
291
  installed_gems = update_gem('rubygems-update', version) if installed_gems.empty? || installed_gems.first.version != version
291
292
  return if installed_gems.empty?
292
293
 
293
- version = installed_gems.first.version
294
-
295
- install_rubygems version
294
+ install_rubygems installed_gems.first
296
295
  end
297
296
 
298
297
  def update_rubygems_arguments # :nodoc:
@@ -1270,7 +1270,14 @@ class Gem::Specification < Gem::BasicSpecification
1270
1270
  def self._load(str)
1271
1271
  Gem.load_yaml
1272
1272
 
1273
- array = Marshal.load str
1273
+ array = begin
1274
+ Marshal.load str
1275
+ rescue ArgumentError => e
1276
+ raise unless e.message.include?("YAML")
1277
+
1278
+ Object.const_set "YAML", Psych
1279
+ Marshal.load str
1280
+ end
1274
1281
 
1275
1282
  spec = Gem::Specification.new
1276
1283
  spec.instance_variable_set :@specification_version, array[1]
@@ -1289,11 +1296,6 @@ class Gem::Specification < Gem::BasicSpecification
1289
1296
  raise TypeError, "invalid Gem::Specification format #{array.inspect}"
1290
1297
  end
1291
1298
 
1292
- # Cleanup any Psych::PrivateType. They only show up for an old bug
1293
- # where nil => null, so just convert them to nil based on the type.
1294
-
1295
- array.map! {|e| e.kind_of?(Psych::PrivateType) ? nil : e }
1296
-
1297
1299
  spec.instance_variable_set :@rubygems_version, array[0]
1298
1300
  # spec version
1299
1301
  spec.instance_variable_set :@name, array[2]
data/lib/rubygems.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'rbconfig'
9
9
 
10
10
  module Gem
11
- VERSION = "3.3.14".freeze
11
+ VERSION = "3.3.15".freeze
12
12
  end
13
13
 
14
14
  # Must be first since it unloads the prelude from 1.9.2
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rubygems-update"
5
- s.version = "3.3.14"
5
+ s.version = "3.3.15"
6
6
  s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
7
7
  s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
8
8
 
@@ -80,7 +80,13 @@ class TestGemCommandManager < Gem::TestCase
80
80
  message << "\nDid you mean? \"push\""
81
81
  end
82
82
 
83
- assert_equal message, e.message
83
+ if e.respond_to?(:detailed_message)
84
+ actual_message = e.detailed_message(highlight: false).sub(/\A(.*?)(?: \(.+?\))/) { $1 }
85
+ else
86
+ actual_message = e.message
87
+ end
88
+
89
+ assert_equal message, actual_message
84
90
  end
85
91
 
86
92
  def test_run_interrupt
@@ -191,6 +191,37 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
191
191
  assert_empty out
192
192
  end
193
193
 
194
+ def test_execute_system_update_installed_in_non_default_gem_path
195
+ rubygems_update_spec = quick_gem "rubygems-update", 9 do |s|
196
+ write_file File.join(@tempdir, 'setup.rb')
197
+
198
+ s.files += %w[setup.rb]
199
+ end
200
+
201
+ util_setup_spec_fetcher rubygems_update_spec
202
+
203
+ rubygems_update_package = Gem::Package.build rubygems_update_spec
204
+
205
+ gemhome2 = "#{@gemhome}2"
206
+
207
+ Gem::Installer.at(rubygems_update_package, :install_dir => gemhome2).install
208
+
209
+ Gem.use_paths @gemhome, [gemhome2, @gemhome]
210
+
211
+ @cmd.options[:args] = []
212
+ @cmd.options[:system] = true
213
+
214
+ use_ui @ui do
215
+ @cmd.execute
216
+ end
217
+
218
+ out = @ui.output.split "\n"
219
+ assert_equal "Installing RubyGems 9", out.shift
220
+ assert_equal "RubyGems system software updated", out.shift
221
+
222
+ assert_empty out
223
+ end
224
+
194
225
  def test_execute_system_specific
195
226
  spec_fetcher do |fetcher|
196
227
  fetcher.download 'rubygems-update', 8 do |s|
@@ -1072,7 +1072,7 @@ dependencies: []
1072
1072
 
1073
1073
  data = Marshal.load Gem::Util.inflate(Gem.read_binary(path))
1074
1074
 
1075
- assert_nil data.signing_key
1075
+ assert_instance_of Gem::Specification, data
1076
1076
  end
1077
1077
 
1078
1078
  def test_initialize
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubygems-update
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.14
4
+ version: 3.3.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Weirich
@@ -16,7 +16,7 @@ authors:
16
16
  autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
- date: 2022-05-18 00:00:00.000000000 Z
19
+ date: 2022-06-01 00:00:00.000000000 Z
20
20
  dependencies: []
21
21
  description: |-
22
22
  A package (also known as a library) contains a set of functionality
@@ -817,7 +817,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
817
817
  - !ruby/object:Gem::Version
818
818
  version: '0'
819
819
  requirements: []
820
- rubygems_version: 3.3.14
820
+ rubygems_version: 3.3.15
821
821
  signing_key:
822
822
  specification_version: 4
823
823
  summary: RubyGems is a package management framework for Ruby.