bundler 2.5.16 → 2.5.17
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 +4 -4
- data/CHANGELOG.md +16 -0
- data/lib/bundler/build_metadata.rb +2 -2
- data/lib/bundler/cli/check.rb +1 -1
- data/lib/bundler/cli/gem.rb +1 -1
- data/lib/bundler/cli.rb +18 -18
- data/lib/bundler/definition.rb +12 -9
- data/lib/bundler/force_platform.rb +0 -2
- data/lib/bundler/plugin/api/source.rb +1 -0
- data/lib/bundler/rubygems_ext.rb +7 -13
- data/lib/bundler/runtime.rb +0 -5
- data/lib/bundler/source/git.rb +29 -16
- data/lib/bundler/spec_set.rb +2 -2
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler/yaml_serializer.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60cb5ee8526a6f8eb3c413e7d3d2ae8c9b32315685862943fc2a956f2fdcd5a1
|
4
|
+
data.tar.gz: 52aa4c3a435ed97c8dbc2adcfa51dc6d2113fefcb5020df0a5b0be3b605cc49f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: afafe4e932d1840de3938e609f45555b1fbdf3fea481ee6d395a1f1458d579606d2f5ac64edc90d74799d9b117aae3fd1028b6d3a660df97e087bb9f6475d583
|
7
|
+
data.tar.gz: fd8907298e40c98124857ea7bf2594953d962946b66da695ce929db2623e67dacbee7dec6500a3dfb89cb6308377a26c305a25cd28a7083432ec10baf0d59810
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
# 2.5.17 (August 1, 2024)
|
2
|
+
|
3
|
+
## Enhancements:
|
4
|
+
|
5
|
+
- Print better log message when current platform is not present in the lockfile [#7891](https://github.com/rubygems/rubygems/pull/7891)
|
6
|
+
- Explicitly encode `Gem::Dependency` to yaml [#7867](https://github.com/rubygems/rubygems/pull/7867)
|
7
|
+
- Enable lockfile checksums on future Bundler 3 when there's no previous lockfile [#7805](https://github.com/rubygems/rubygems/pull/7805)
|
8
|
+
|
9
|
+
## Bug fixes:
|
10
|
+
|
11
|
+
- Fix truffleruby removing gems from lockfile [#7795](https://github.com/rubygems/rubygems/pull/7795)
|
12
|
+
- Fix `bundle check` exit code when gem git source is not checked out [#7894](https://github.com/rubygems/rubygems/pull/7894)
|
13
|
+
- Generate gems.rb from Gemfile.tt template for `bundle-gem` [#7853](https://github.com/rubygems/rubygems/pull/7853)
|
14
|
+
- Fix git source cache being used as the install location [#4469](https://github.com/rubygems/rubygems/pull/4469)
|
15
|
+
- Fix `bundle exec gem uninstall` [#7886](https://github.com/rubygems/rubygems/pull/7886)
|
16
|
+
|
1
17
|
# 2.5.16 (July 18, 2024)
|
2
18
|
|
3
19
|
## 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 = "2024-
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2024-08-01".freeze
|
8
|
+
@git_commit_sha = "74d92b2502".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
data/lib/bundler/cli/check.rb
CHANGED
@@ -17,7 +17,7 @@ module Bundler
|
|
17
17
|
begin
|
18
18
|
definition.resolve_only_locally!
|
19
19
|
not_installed = definition.missing_specs
|
20
|
-
rescue GemNotFound, SolveFailure
|
20
|
+
rescue GemNotFound, GitError, SolveFailure
|
21
21
|
Bundler.ui.error "Bundler can't satisfy your Gemfile's dependencies."
|
22
22
|
Bundler.ui.warn "Install missing gems with `bundle install`."
|
23
23
|
exit 1
|
data/lib/bundler/cli/gem.rb
CHANGED
@@ -79,7 +79,7 @@ module Bundler
|
|
79
79
|
ensure_safe_gem_name(name, constant_array)
|
80
80
|
|
81
81
|
templates = {
|
82
|
-
"
|
82
|
+
"Gemfile.tt" => Bundler.preferred_gemfile_name,
|
83
83
|
"lib/newgem.rb.tt" => "lib/#{namespaced_path}.rb",
|
84
84
|
"lib/newgem/version.rb.tt" => "lib/#{namespaced_path}/version.rb",
|
85
85
|
"sig/newgem.rbs.tt" => "sig/#{namespaced_path}.rbs",
|
data/lib/bundler/cli.rb
CHANGED
@@ -110,8 +110,8 @@ module Bundler
|
|
110
110
|
default_task(Bundler.feature_flag.default_cli_command)
|
111
111
|
|
112
112
|
class_option "no-color", type: :boolean, desc: "Disable colorization in output"
|
113
|
-
class_option "retry",
|
114
|
-
|
113
|
+
class_option "retry", type: :numeric, aliases: "-r", banner: "NUM",
|
114
|
+
desc: "Specify the number of times you wish to attempt network commands"
|
115
115
|
class_option "verbose", type: :boolean, desc: "Enable verbose output mode", aliases: "-V"
|
116
116
|
|
117
117
|
def help(cli = nil)
|
@@ -260,15 +260,15 @@ module Bundler
|
|
260
260
|
method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile"
|
261
261
|
method_option "group", aliases: "-g", type: :array, banner: "Update a specific group"
|
262
262
|
method_option "jobs", aliases: "-j", type: :numeric, banner: "Specify the number of jobs to run in parallel"
|
263
|
-
method_option "local", type: :boolean, banner:
|
264
|
-
method_option "quiet", type: :boolean, banner:
|
263
|
+
method_option "local", type: :boolean, banner: "Do not attempt to fetch gems remotely and use the gem cache instead"
|
264
|
+
method_option "quiet", type: :boolean, banner: "Only output warnings and errors."
|
265
265
|
method_option "source", type: :array, banner: "Update a specific source (and all gems associated with it)"
|
266
266
|
method_option "redownload", type: :boolean, aliases: "--force", banner: "Force downloading every gem."
|
267
267
|
method_option "ruby", type: :boolean, banner: "Update ruby specified in Gemfile.lock"
|
268
268
|
method_option "bundler", type: :string, lazy_default: "> 0.a", banner: "Update the locked version of bundler"
|
269
|
-
method_option "patch", type: :boolean, banner:
|
270
|
-
method_option "minor", type: :boolean, banner:
|
271
|
-
method_option "major", type: :boolean, banner:
|
269
|
+
method_option "patch", type: :boolean, banner: "Prefer updating only to next patch version"
|
270
|
+
method_option "minor", type: :boolean, banner: "Prefer updating only to next minor version"
|
271
|
+
method_option "major", type: :boolean, banner: "Prefer updating to next major version (default)"
|
272
272
|
method_option "pre", type: :boolean, banner: "Always choose the highest allowed version when updating gems, regardless of prerelease status"
|
273
273
|
method_option "strict", type: :boolean, banner: "Do not allow any gem to be updated past latest --patch | --minor | --major"
|
274
274
|
method_option "conservative", type: :boolean, banner: "Use bundle install conservative update behavior and do not allow shared dependencies to be updated."
|
@@ -397,11 +397,11 @@ module Bundler
|
|
397
397
|
end
|
398
398
|
|
399
399
|
desc "cache [OPTIONS]", "Locks and then caches all of the gems into vendor/cache"
|
400
|
-
method_option "all",
|
401
|
-
|
402
|
-
|
400
|
+
method_option "all", type: :boolean,
|
401
|
+
default: Bundler.feature_flag.cache_all?,
|
402
|
+
banner: "Include all sources (including path and git)."
|
403
403
|
method_option "all-platforms", type: :boolean, banner: "Include gems for all platforms present in the lockfile, not only the current one"
|
404
|
-
method_option "cache-path", type: :string, banner:
|
404
|
+
method_option "cache-path", type: :string, banner: "Specify a different cache path than the default (vendor/cache)."
|
405
405
|
method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile"
|
406
406
|
method_option "no-install", type: :boolean, banner: "Don't install the gems, only update the cache."
|
407
407
|
method_option "no-prune", type: :boolean, banner: "Don't remove stale gems from the cache."
|
@@ -605,7 +605,7 @@ module Bundler
|
|
605
605
|
end
|
606
606
|
|
607
607
|
desc "inject GEM VERSION", "Add the named gem, with version requirements, to the resolved Gemfile", hide: true
|
608
|
-
method_option "source", type: :string, banner:
|
608
|
+
method_option "source", type: :string, banner: "Install gem from the given source"
|
609
609
|
method_option "group", type: :string, banner: "Install gem into a bundler group"
|
610
610
|
def inject(name, version)
|
611
611
|
SharedHelpers.major_deprecation 2, "The `inject` command has been replaced by the `add` command"
|
@@ -615,16 +615,16 @@ module Bundler
|
|
615
615
|
|
616
616
|
desc "lock", "Creates a lockfile without installing"
|
617
617
|
method_option "update", type: :array, lazy_default: true, banner: "ignore the existing lockfile, update all gems by default, or update list of given gems"
|
618
|
-
method_option "local", type: :boolean, default: false, banner:
|
619
|
-
method_option "print", type: :boolean, default: false, banner:
|
618
|
+
method_option "local", type: :boolean, default: false, banner: "do not attempt to fetch remote gemspecs and use the local gem cache only"
|
619
|
+
method_option "print", type: :boolean, default: false, banner: "print the lockfile to STDOUT instead of writing to the file system"
|
620
620
|
method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile"
|
621
621
|
method_option "lockfile", type: :string, default: nil, banner: "the path the lockfile should be written to"
|
622
622
|
method_option "full-index", type: :boolean, default: false, banner: "Fall back to using the single-file index of all gems"
|
623
623
|
method_option "add-platform", type: :array, default: [], banner: "Add a new platform to the lockfile"
|
624
|
-
method_option "remove-platform", type: :array, default: [], banner:
|
625
|
-
method_option "patch", type: :boolean, banner:
|
626
|
-
method_option "minor", type: :boolean, banner:
|
627
|
-
method_option "major", type: :boolean, banner:
|
624
|
+
method_option "remove-platform", type: :array, default: [], banner: "Remove a platform from the lockfile"
|
625
|
+
method_option "patch", type: :boolean, banner: "If updating, prefer updating only to next patch version"
|
626
|
+
method_option "minor", type: :boolean, banner: "If updating, prefer updating only to next minor version"
|
627
|
+
method_option "major", type: :boolean, banner: "If updating, prefer updating to next major version (default)"
|
628
628
|
method_option "pre", type: :boolean, banner: "If updating, always choose the highest allowed version, regardless of prerelease status"
|
629
629
|
method_option "strict", type: :boolean, banner: "If updating, do not allow any gem to be updated past latest --patch | --minor | --major"
|
630
630
|
method_option "conservative", type: :boolean, banner: "If updating, use bundle install conservative update behavior and do not allow shared dependencies to be updated"
|
data/lib/bundler/definition.rb
CHANGED
@@ -115,7 +115,7 @@ module Bundler
|
|
115
115
|
@originally_locked_specs = @locked_specs
|
116
116
|
@locked_sources = []
|
117
117
|
@locked_platforms = []
|
118
|
-
@locked_checksums =
|
118
|
+
@locked_checksums = Bundler.feature_flag.bundler_3_mode?
|
119
119
|
end
|
120
120
|
|
121
121
|
locked_gem_sources = @locked_sources.select {|s| s.is_a?(Source::Rubygems) }
|
@@ -137,7 +137,7 @@ module Bundler
|
|
137
137
|
end
|
138
138
|
@unlocking ||= @unlock[:ruby] ||= (!@locked_ruby_version ^ !@ruby_version)
|
139
139
|
|
140
|
-
add_current_platform unless Bundler.frozen_bundle?
|
140
|
+
@current_platform_missing = add_current_platform unless Bundler.frozen_bundle?
|
141
141
|
|
142
142
|
converge_path_sources_to_gemspec_sources
|
143
143
|
@path_changes = converge_paths
|
@@ -484,6 +484,7 @@ module Bundler
|
|
484
484
|
|
485
485
|
!@source_changes &&
|
486
486
|
!@dependency_changes &&
|
487
|
+
!@current_platform_missing &&
|
487
488
|
@new_platforms.empty? &&
|
488
489
|
!@path_changes &&
|
489
490
|
!@local_changes &&
|
@@ -629,6 +630,7 @@ module Bundler
|
|
629
630
|
def start_resolution
|
630
631
|
local_platform_needed_for_resolvability = @most_specific_non_local_locked_ruby_platform && !@platforms.include?(local_platform)
|
631
632
|
@platforms << local_platform if local_platform_needed_for_resolvability
|
633
|
+
add_platform(Gem::Platform::RUBY) if RUBY_ENGINE == "truffleruby"
|
632
634
|
|
633
635
|
result = SpecSet.new(resolver.start)
|
634
636
|
|
@@ -671,19 +673,19 @@ module Bundler
|
|
671
673
|
end
|
672
674
|
|
673
675
|
def add_current_platform
|
674
|
-
|
676
|
+
return if @platforms.include?(local_platform)
|
677
|
+
|
678
|
+
@most_specific_non_local_locked_ruby_platform = find_most_specific_locked_ruby_platform
|
675
679
|
return if @most_specific_non_local_locked_ruby_platform
|
676
680
|
|
677
|
-
|
681
|
+
@platforms << local_platform
|
682
|
+
true
|
678
683
|
end
|
679
684
|
|
680
|
-
def
|
685
|
+
def find_most_specific_locked_ruby_platform
|
681
686
|
return unless generic_local_platform_is_ruby? && current_platform_locked?
|
682
687
|
|
683
|
-
|
684
|
-
return unless most_specific_locked_ruby_platform != local_platform
|
685
|
-
|
686
|
-
most_specific_locked_ruby_platform
|
688
|
+
most_specific_locked_platform
|
687
689
|
end
|
688
690
|
|
689
691
|
def change_reason
|
@@ -705,6 +707,7 @@ module Bundler
|
|
705
707
|
[
|
706
708
|
[@source_changes, "the list of sources changed"],
|
707
709
|
[@dependency_changes, "the dependencies in your gemfile changed"],
|
710
|
+
[@current_platform_missing, "your lockfile does not include the current platform"],
|
708
711
|
[@new_platforms.any?, "you added a new platform to your gemfile"],
|
709
712
|
[@path_changes, "the gemspecs for path gems changed"],
|
710
713
|
[@local_changes, "the gemspecs for git local gems changed"],
|
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
module Bundler
|
4
4
|
module ForcePlatform
|
5
|
-
private
|
6
|
-
|
7
5
|
# The `:force_ruby_platform` value used by dependencies for resolution, and
|
8
6
|
# by locked specifications for materialization is `false` by default, except
|
9
7
|
# for TruffleRuby. TruffleRuby generally needs to force the RUBY platform
|
data/lib/bundler/rubygems_ext.rb
CHANGED
@@ -237,26 +237,20 @@ module Gem
|
|
237
237
|
|
238
238
|
include ::Bundler::ForcePlatform
|
239
239
|
|
240
|
+
attr_reader :force_ruby_platform
|
241
|
+
|
240
242
|
attr_accessor :source, :groups
|
241
243
|
|
242
244
|
alias_method :eql?, :==
|
243
245
|
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
def encode_with(coder)
|
251
|
-
to_yaml_properties.each do |ivar|
|
252
|
-
coder[ivar.to_s.sub(/^@/, "")] = instance_variable_get(ivar)
|
246
|
+
unless method_defined?(:encode_with, false)
|
247
|
+
def encode_with(coder)
|
248
|
+
[:@name, :@requirement, :@type, :@prerelease, :@version_requirements].each do |ivar|
|
249
|
+
coder[ivar.to_s.sub(/^@/, "")] = instance_variable_get(ivar)
|
250
|
+
end
|
253
251
|
end
|
254
252
|
end
|
255
253
|
|
256
|
-
def to_yaml_properties
|
257
|
-
instance_variables.reject {|p| ["@source", "@groups"].include?(p.to_s) }
|
258
|
-
end
|
259
|
-
|
260
254
|
def to_lock
|
261
255
|
out = String.new(" #{name}")
|
262
256
|
unless requirement.none?
|
data/lib/bundler/runtime.rb
CHANGED
@@ -128,11 +128,6 @@ module Bundler
|
|
128
128
|
spec.source.cache(spec, custom_path) if spec.source.respond_to?(:cache)
|
129
129
|
end
|
130
130
|
|
131
|
-
Dir[cache_path.join("*/.git")].each do |git_dir|
|
132
|
-
FileUtils.rm_rf(git_dir)
|
133
|
-
FileUtils.touch(File.expand_path("../.bundlecache", git_dir))
|
134
|
-
end
|
135
|
-
|
136
131
|
prune_cache(cache_path) unless Bundler.settings[:no_prune]
|
137
132
|
end
|
138
133
|
|
data/lib/bundler/source/git.rb
CHANGED
@@ -164,7 +164,8 @@ module Bundler
|
|
164
164
|
"does not exist. Run `bundle config unset local.#{override_for(original_path)}` to remove the local override"
|
165
165
|
end
|
166
166
|
|
167
|
-
|
167
|
+
@local = true
|
168
|
+
set_paths!(path)
|
168
169
|
|
169
170
|
# Create a new git proxy without the cached revision
|
170
171
|
# so the Gemfile.lock always picks up the new revision.
|
@@ -187,13 +188,11 @@ module Bundler
|
|
187
188
|
end
|
188
189
|
|
189
190
|
def specs(*)
|
190
|
-
|
191
|
+
set_cache_path!(app_cache_path) if has_app_cache? && !local?
|
191
192
|
|
192
193
|
if requires_checkout? && !@copied
|
193
194
|
fetch
|
194
|
-
|
195
|
-
serialize_gemspecs_in(install_path)
|
196
|
-
@copied = true
|
195
|
+
checkout
|
197
196
|
end
|
198
197
|
|
199
198
|
local_specs
|
@@ -206,10 +205,7 @@ module Bundler
|
|
206
205
|
print_using_message "Using #{version_message(spec, options[:previous_spec])} from #{self}"
|
207
206
|
|
208
207
|
if (requires_checkout? && !@copied) || force
|
209
|
-
|
210
|
-
git_proxy.copy_to(install_path, submodules)
|
211
|
-
serialize_gemspecs_in(install_path)
|
212
|
-
@copied = true
|
208
|
+
checkout
|
213
209
|
end
|
214
210
|
|
215
211
|
generate_bin_options = { disable_extensions: !Bundler.rubygems.spec_missing_extensions?(spec), build_args: options[:build_args] }
|
@@ -221,12 +217,13 @@ module Bundler
|
|
221
217
|
def cache(spec, custom_path = nil)
|
222
218
|
app_cache_path = app_cache_path(custom_path)
|
223
219
|
return unless Bundler.feature_flag.cache_all?
|
224
|
-
return if
|
220
|
+
return if install_path == app_cache_path
|
221
|
+
return if cache_path == app_cache_path
|
225
222
|
cached!
|
226
223
|
FileUtils.rm_rf(app_cache_path)
|
227
224
|
git_proxy.checkout if requires_checkout?
|
228
|
-
|
229
|
-
|
225
|
+
FileUtils.cp_r("#{cache_path}/.", app_cache_path)
|
226
|
+
FileUtils.touch(app_cache_path.join(".bundlecache"))
|
230
227
|
end
|
231
228
|
|
232
229
|
def load_spec_files
|
@@ -270,6 +267,13 @@ module Bundler
|
|
270
267
|
|
271
268
|
private
|
272
269
|
|
270
|
+
def checkout
|
271
|
+
Bundler.ui.debug " * Checking out revision: #{ref}"
|
272
|
+
git_proxy.copy_to(install_path, submodules)
|
273
|
+
serialize_gemspecs_in(install_path)
|
274
|
+
@copied = true
|
275
|
+
end
|
276
|
+
|
273
277
|
def humanized_ref
|
274
278
|
if local?
|
275
279
|
path
|
@@ -298,10 +302,19 @@ module Bundler
|
|
298
302
|
end
|
299
303
|
end
|
300
304
|
|
301
|
-
def
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
+
def set_paths!(path)
|
306
|
+
set_cache_path!(path)
|
307
|
+
set_install_path!(path)
|
308
|
+
end
|
309
|
+
|
310
|
+
def set_cache_path!(path)
|
311
|
+
@git_proxy = nil
|
312
|
+
@cache_path = path
|
313
|
+
end
|
314
|
+
|
315
|
+
def set_install_path!(path)
|
316
|
+
@local_specs = nil
|
317
|
+
@install_path = path
|
305
318
|
end
|
306
319
|
|
307
320
|
def has_app_cache?
|
data/lib/bundler/spec_set.rb
CHANGED
@@ -94,7 +94,7 @@ module Bundler
|
|
94
94
|
end
|
95
95
|
|
96
96
|
def delete(specs)
|
97
|
-
specs.each {|spec| @specs.delete(spec) }
|
97
|
+
Array(specs).each {|spec| @specs.delete(spec) }
|
98
98
|
|
99
99
|
reset!
|
100
100
|
end
|
@@ -280,7 +280,7 @@ module Bundler
|
|
280
280
|
if platform
|
281
281
|
GemHelpers.select_best_platform_match(specs_for_name, platform, force_ruby: dep.force_ruby_platform)
|
282
282
|
else
|
283
|
-
GemHelpers.select_best_local_platform_match(specs_for_name, force_ruby: dep.force_ruby_platform)
|
283
|
+
GemHelpers.select_best_local_platform_match(specs_for_name, force_ruby: dep.force_ruby_platform || dep.default_force_ruby_platform)
|
284
284
|
end
|
285
285
|
end
|
286
286
|
|
data/lib/bundler/version.rb
CHANGED
@@ -41,7 +41,7 @@ module Bundler
|
|
41
41
|
HASH_REGEX = /
|
42
42
|
^
|
43
43
|
([ ]*) # indentations
|
44
|
-
(
|
44
|
+
([^#]+) # key excludes comment char '#'
|
45
45
|
(?::(?=(?:\s|$))) # : (without the lookahead the #key includes this when : is present in value)
|
46
46
|
[ ]?
|
47
47
|
(['"]?) # optional opening quote
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- André Arko
|
@@ -22,7 +22,7 @@ authors:
|
|
22
22
|
autorequire:
|
23
23
|
bindir: exe
|
24
24
|
cert_chain: []
|
25
|
-
date: 2024-
|
25
|
+
date: 2024-08-01 00:00:00.000000000 Z
|
26
26
|
dependencies: []
|
27
27
|
description: Bundler manages an application's dependencies through its entire life,
|
28
28
|
across many machines, systematically and repeatably
|
@@ -400,7 +400,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
400
400
|
- !ruby/object:Gem::Version
|
401
401
|
version: 3.2.3
|
402
402
|
requirements: []
|
403
|
-
rubygems_version: 3.5.
|
403
|
+
rubygems_version: 3.5.17
|
404
404
|
signing_key:
|
405
405
|
specification_version: 4
|
406
406
|
summary: The best way to manage your application's dependencies
|