From 9e248d467931cedecb4452db4c27db497bebf2cc Mon Sep 17 00:00:00 2001 From: Charlie Savage Date: Thu, 5 Jun 2025 23:30:22 -0700 Subject: [PATCH 001/295] :Revamp CmakeBuilder to fix the issues described in #8572. Specifically: * Correctly pass command line arguments to CMake * Call CMake twice - once to configure a project and a second time to build (which is the standard way to use CMake). This fixes the previously incorrect assumption that CMake generates a Make file. * Update the tests to specify a CMake minimum version of 3.26 (which is already two years old). 3.26 is a bit arbritary but it aligns with Rice, and updates from the ancient 3.5 version being used (which CMake generates a warning message saying stop using it!) * Update the CMake call to use CMAKE_RUNTIME_OUTPUT_DIRECTORY and CMAKE_LIBRARY_OUTPUT_DIRECTORY to tell CMake to copy compiled binaries to the a Gem's lib directory. Note the updated builder took inspiration from the Cargo Builder, meaning you first create an instance of CmakeBuilder versus just calling class methods. --- lib/rubygems/ext/builder.rb | 2 +- lib/rubygems/ext/cmake_builder.rb | 103 ++++++++++++++++++-- test/rubygems/test_gem_ext_cmake_builder.rb | 95 ++++++++++++++---- 3 files changed, 175 insertions(+), 25 deletions(-) diff --git a/lib/rubygems/ext/builder.rb b/lib/rubygems/ext/builder.rb index b47996d0920b..600a6a5ff675 100644 --- a/lib/rubygems/ext/builder.rb +++ b/lib/rubygems/ext/builder.rb @@ -169,7 +169,7 @@ def builder_for(extension) # :nodoc: @ran_rake = true Gem::Ext::RakeBuilder when /CMakeLists.txt/ then - Gem::Ext::CmakeBuilder + Gem::Ext::CmakeBuilder.new when /Cargo.toml/ then Gem::Ext::CargoBuilder.new else diff --git a/lib/rubygems/ext/cmake_builder.rb b/lib/rubygems/ext/cmake_builder.rb index c7bfbb8a57ad..2915568b39d0 100644 --- a/lib/rubygems/ext/cmake_builder.rb +++ b/lib/rubygems/ext/cmake_builder.rb @@ -1,21 +1,110 @@ # frozen_string_literal: true +# This builder creates extensions defined using CMake. Its is invoked if a Gem's spec file +# sets the `extension` property to a string that contains `CMakeLists.txt`. +# +# In general, CMake projects are built in two steps: +# +# * configure +# * build +# +# The builder follow this convention. First it runs a configuration step and then it runs a build step. +# +# CMake projects can be quite configurable - it is likely you will want to specify options when +# installing a gem. To pass options to CMake specify them after `--` in the gem install command. For example: +# +# gem install -- --preset +# +# Note that options are ONLY sent to the configure step - it is not currently possible to specify +# options for the build step. If this becomes and issue then the CMake builder can be updated to +# support build options. +# +# Useful options to know are: +# +# -G to specify a generator (-G Ninja is recommended) +# -D to set a CMake variable (for example -DCMAKE_BUILD_TYPE=Release) +# --preset to use a preset +# +# If the Gem author provides presets, via CMakePresets.json file, you will likely want to use one of them. +# If not, you may wish to specify a generator. Ninja is recommended because it can build projects in parallel +# and thus much faster than building them serially like Make does. + class Gem::Ext::CmakeBuilder < Gem::Ext::Builder - def self.build(extension, dest_path, results, args = [], lib_dir = nil, cmake_dir = Dir.pwd, + attr_accessor :runner, :profile + def initialize + @runner = self.class.method(:run) + @profile = :release + end + + def build(extension, dest_path, results, args = [], lib_dir = nil, cmake_dir = Dir.pwd, target_rbconfig = Gem.target_rbconfig) if target_rbconfig.path warn "--target-rbconfig is not yet supported for CMake extensions. Ignoring" end - unless File.exist?(File.join(cmake_dir, "Makefile")) - require_relative "../command" - cmd = ["cmake", ".", "-DCMAKE_INSTALL_PREFIX=#{dest_path}", *Gem::Command.build_args] + # Figure the build dir + build_dir = File.join(cmake_dir, "build") - run cmd, results, class_name, cmake_dir - end + # Check if the gem defined presets + check_presets(cmake_dir, args, results) + + # Configure + configure(cmake_dir, build_dir, dest_path, args, results) - make dest_path, results, cmake_dir, target_rbconfig: target_rbconfig + # Compile + compile(cmake_dir, build_dir, args, results) results end + + def configure(cmake_dir, build_dir, install_dir, args, results) + cmd = ["cmake", + cmake_dir, + "-B", + build_dir, + "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=#{install_dir}", # Windows + "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=#{install_dir}", # Not Windows + *Gem::Command.build_args, + *args] + + runner.call(cmd, results, "cmake_configure", cmake_dir) + end + + def compile(cmake_dir, build_dir, args, results) + cmd = ["cmake", + "--build", + build_dir.to_s, + "--config", + @profile.to_s] + + runner.call(cmd, results, "cmake_compile", cmake_dir) + end + + private + + def check_presets(cmake_dir, args, results) + # Return if the user specified a preset + return unless args.grep(/--preset/i).empty? + + cmd = ["cmake", + "--list-presets"] + + presets = Array.new + begin + runner.call(cmd, presets, "cmake_presets", cmake_dir) + + # Remove the first two lines of the array which is the current_directory and the command + # that was run + presets = presets[2..].join + results << <<~EOS + The gem author provided a list of presets that can be used to build the gem. To use a preset specify it on the command line: + + gem install -- --preset + + #{presets} + EOS + rescue Gem::InstallError + # Do nothing, CMakePresets.json was not included in the Gem + end + end end diff --git a/test/rubygems/test_gem_ext_cmake_builder.rb b/test/rubygems/test_gem_ext_cmake_builder.rb index b4cf8a8443c9..e2bdedc71054 100644 --- a/test/rubygems/test_gem_ext_cmake_builder.rb +++ b/test/rubygems/test_gem_ext_cmake_builder.rb @@ -29,7 +29,7 @@ def setup def test_self_build File.open File.join(@ext, "CMakeLists.txt"), "w" do |cmakelists| cmakelists.write <<-EO_CMAKE -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.26) project(self_build NONE) install (FILES test.txt DESTINATION bin) EO_CMAKE @@ -39,46 +39,107 @@ def test_self_build output = [] - Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext + builder = Gem::Ext::CmakeBuilder.new + builder.build nil, @dest_path, output, [], @dest_path, @ext output = output.join "\n" - assert_match(/^cmake \. -DCMAKE_INSTALL_PREFIX\\=#{Regexp.escape @dest_path}/, output) + assert_match(/^current directory: #{Regexp.escape @ext}/, output) + assert_match(/cmake.*-DCMAKE_RUNTIME_OUTPUT_DIRECTORY\\=#{Regexp.escape @dest_path}/, output) + assert_match(/cmake.*-DCMAKE_LIBRARY_OUTPUT_DIRECTORY\\=#{Regexp.escape @dest_path}/, output) + assert_match(/#{Regexp.escape @ext}/, output) + end + + def test_self_build_presets + File.open File.join(@ext, "CMakeLists.txt"), "w" do |cmakelists| + cmakelists.write <<-EO_CMAKE +cmake_minimum_required(VERSION 3.26) +project(self_build NONE) +install (FILES test.txt DESTINATION bin) + EO_CMAKE + end + + File.open File.join(@ext, "CMakePresets.json"), "w" do |presets| + presets.write <<-EO_CMAKE +{ + "version": 6, + "configurePresets": [ + { + "name": "debug", + "displayName": "Debug", + "generator": "Ninja", + "binaryDir": "build/debug", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "release", + "displayName": "Release", + "generator": "Ninja", + "binaryDir": "build/release", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + } + ] +} + EO_CMAKE + end + + FileUtils.touch File.join(@ext, "test.txt") + + output = [] + + builder = Gem::Ext::CmakeBuilder.new + builder.build nil, @dest_path, output, [], @dest_path, @ext + + output = output.join "\n" + + assert_match(/The gem author provided a list of presets that can be used to build the gem./, output) + assert_match(/Available configure presets/, output) + assert_match(/\"debug\" - Debug/, output) + assert_match(/\"release\" - Release/, output) + assert_match(/^current directory: #{Regexp.escape @ext}/, output) + assert_match(/cmake.*-DCMAKE_RUNTIME_OUTPUT_DIRECTORY\\=#{Regexp.escape @dest_path}/, output) + assert_match(/cmake.*-DCMAKE_LIBRARY_OUTPUT_DIRECTORY\\=#{Regexp.escape @dest_path}/, output) assert_match(/#{Regexp.escape @ext}/, output) - assert_contains_make_command "", output - assert_contains_make_command "install", output - assert_match(/test\.txt/, output) end def test_self_build_fail output = [] + builder = Gem::Ext::CmakeBuilder.new error = assert_raise Gem::InstallError do - Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext + builder.build nil, @dest_path, output, [], @dest_path, @ext end - output = output.join "\n" + assert_match "cmake_configure failed", error.message shell_error_msg = /(CMake Error: .*)/ - - assert_match "cmake failed", error.message - - assert_match(/^cmake . -DCMAKE_INSTALL_PREFIX\\=#{Regexp.escape @dest_path}/, output) + output = output.join "\n" assert_match(/#{shell_error_msg}/, output) + assert_match(/CMake Error: The source directory .* does not appear to contain CMakeLists.txt./, output) end def test_self_build_has_makefile - File.open File.join(@ext, "Makefile"), "w" do |makefile| - makefile.puts "all:\n\t@echo ok\ninstall:\n\t@echo ok" + File.open File.join(@ext, "CMakeLists.txt"), "w" do |cmakelists| + cmakelists.write <<-EO_CMAKE +cmake_minimum_required(VERSION 3.26) +project(self_build NONE) +install (FILES test.txt DESTINATION bin) + EO_CMAKE end output = [] - Gem::Ext::CmakeBuilder.build nil, @dest_path, output, [], nil, @ext + builder = Gem::Ext::CmakeBuilder.new + builder.build nil, @dest_path, output, [], @dest_path, @ext output = output.join "\n" - assert_contains_make_command "", output - assert_contains_make_command "install", output + # The default generator will create a Makefile in the build directory + makefile = File.join(@ext, "build", "Makefile") + assert(File.exist?(makefile)) end end From d2af4396711b4245276e9d0cf415ebf4282cec9b Mon Sep 17 00:00:00 2001 From: Edouard CHIN Date: Mon, 29 Sep 2025 02:20:57 +0200 Subject: [PATCH 002/295] Fix `bundle install` when the Gemfile contains "install_if" git gems: - Fix #8985 - ### Problem If you have a Gemfile that contains a `install_if` git gem, it will be impossible to add other gems in the Gemfile and run `bundle install`, you'll get a "The git source [...] is not yet checked out". ### Context The change that modified this behaviour was in abbea0cc94dd8ad74e52fff17aacf5f175ba0cff, and the issue is about the call to `current_dependencies`. This call filters out irrelevant dependencies such as the one that get condtionnally installed. By doing so, we skip over setting the source based of the lockfile for that dependency https://github.com/rubygems/rubygems/blob/ade324bdc8ea77b342f203cb7f3929a456d725ed/bundler/lib/bundler/definition.rb#L978 Ultimately, because of this, the dependency source doesn't have any additional information such as the `revision`. Down the line, when we end up to converge the spec, Bundler will attempt to get the revision for that spec but won't be able to because the git source isn't configured to allow running git operations. ### Solution Filter out the irrelevant only spec only after we have set its source. --- bundler/lib/bundler/definition.rb | 12 ++++-- bundler/spec/lock/lockfile_spec.rb | 68 ++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 3 deletions(-) diff --git a/bundler/lib/bundler/definition.rb b/bundler/lib/bundler/definition.rb index 49627cc56237..cc2394fda60f 100644 --- a/bundler/lib/bundler/definition.rb +++ b/bundler/lib/bundler/definition.rb @@ -282,12 +282,17 @@ def current_locked_dependencies end def filter_relevant(dependencies) - platforms_array = [Bundler.generic_local_platform].freeze dependencies.select do |d| - d.should_include? && !d.gem_platforms(platforms_array).empty? + relevant_deps?(d) end end + def relevant_deps?(dep) + platforms_array = [Bundler.generic_local_platform].freeze + + dep.should_include? && !dep.gem_platforms(platforms_array).empty? + end + def locked_dependencies @locked_deps.values end @@ -973,10 +978,11 @@ def converge_dependencies @missing_lockfile_dep = nil @changed_dependencies = [] - current_dependencies.each do |dep| + @dependencies.each do |dep| if dep.source dep.source = sources.get(dep.source) end + next unless relevant_deps?(dep) name = dep.name diff --git a/bundler/spec/lock/lockfile_spec.rb b/bundler/spec/lock/lockfile_spec.rb index 4b767c7415b6..02e53454d89a 100644 --- a/bundler/spec/lock/lockfile_spec.rb +++ b/bundler/spec/lock/lockfile_spec.rb @@ -2111,6 +2111,74 @@ L end + it "successfully updates the lockfile when a new gem is added in the Gemfile includes a gem that shouldn't be included" do + build_repo4 do + build_gem "logger", "1.7.0" + build_gem "rack", "3.2.0" + build_gem "net-smtp", "0.5.0" + end + + gemfile <<~G + source "#{file_uri_for(gem_repo4)}" + gem "logger" + gem "net-smtp" + + install_if -> { false } do + gem 'rack', github: 'rack/rack' + end + G + + lockfile <<~L + GIT + remote: https://github.com/rack/rack.git + revision: 2fface9ac09fc582a81386becd939c987ad33f99 + specs: + rack (3.2.0) + + GEM + remote: #{file_uri_for(gem_repo4)}/ + specs: + logger (1.7.0) + + PLATFORMS + #{lockfile_platforms} + + DEPENDENCIES + logger + rack! + + BUNDLED WITH + #{Bundler::VERSION} + L + + bundle "install" + + expect(lockfile).to eq <<~L + GIT + remote: https://github.com/rack/rack.git + revision: 2fface9ac09fc582a81386becd939c987ad33f99 + specs: + rack (3.2.0) + + GEM + remote: #{file_uri_for(gem_repo4)}/ + specs: + logger (1.7.0) + net-smtp (0.5.0) + + PLATFORMS + #{lockfile_platforms} + + DEPENDENCIES + logger + net-smtp + rack! + + BUNDLED WITH + #{Bundler::VERSION} + L + end + shared_examples_for "a lockfile missing dependent specs" do it "auto-heals" do build_repo4 do From 8ca623dea4adc86ef63e85c9cbc8dcc69f0ccbaa Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 7 Oct 2025 12:26:05 +0900 Subject: [PATCH 003/295] Add a workflow to sync commits to ruby/ruby --- .github/workflows/sync-ruby.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/sync-ruby.yml diff --git a/.github/workflows/sync-ruby.yml b/.github/workflows/sync-ruby.yml new file mode 100644 index 000000000000..29c434491478 --- /dev/null +++ b/.github/workflows/sync-ruby.yml @@ -0,0 +1,33 @@ +name: Sync ruby +on: + push: + branches: [master] +jobs: + sync: + name: Sync ruby + runs-on: ubuntu-latest + if: ${{ github.repository_owner == 'ruby' }} + steps: + - uses: actions/checkout@v5 + + - name: Create GitHub App token + id: app-token + uses: actions/create-github-app-token@v2 + with: + app-id: 2060836 + private-key: ${{ secrets.RUBY_SYNC_DEFAULT_GEMS_PRIVATE_KEY }} + owner: ruby + repositories: ruby + + - name: Sync to ruby/ruby + uses: convictional/trigger-workflow-and-wait@v1.6.5 + with: + owner: ruby + repo: ruby + workflow_file_name: sync_default_gems.yml + github_token: ${{ steps.app-token.outputs.token }} + ref: master + client_payload: | + {"gem":"${{ github.event.repository.name }}","before":"${{ github.event.before }}","after":"${{ github.event.after }}"} + propagate_failure: true + wait_interval: 10 From 509ebc94efa7ff937f7dbf5f3cbd289ad0cb922d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Oct 2025 03:28:39 +0000 Subject: [PATCH 004/295] Bump github/codeql-action from 3.30.3 to 3.30.5 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.3 to 3.30.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/192325c86100d080feab897ff886c34abd4c83a3...3599b3baa15b485a2e49ef411a7a4bb2452e7f93) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- .github/workflows/ubuntu-lint.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 9521cecd0bb6..645f5c346707 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 + uses: github/codeql-action/upload-sarif@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 with: sarif_file: results.sarif diff --git a/.github/workflows/ubuntu-lint.yml b/.github/workflows/ubuntu-lint.yml index 99f608d6f8e9..223892570cbe 100644 --- a/.github/workflows/ubuntu-lint.yml +++ b/.github/workflows/ubuntu-lint.yml @@ -52,7 +52,7 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 + uses: github/codeql-action/upload-sarif@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 if: matrix.command == 'zizmor' with: sarif_file: results.sarif From 9ba7bf72f79be757fd1b9436541204fa45ebca08 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 7 Oct 2025 13:16:36 +0900 Subject: [PATCH 005/295] Ignore to store git credential --- .github/workflows/sync-ruby.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/sync-ruby.yml b/.github/workflows/sync-ruby.yml index 29c434491478..acf4b361e3f8 100644 --- a/.github/workflows/sync-ruby.yml +++ b/.github/workflows/sync-ruby.yml @@ -9,6 +9,8 @@ jobs: if: ${{ github.repository_owner == 'ruby' }} steps: - uses: actions/checkout@v5 + with: + persist-credentials: false - name: Create GitHub App token id: app-token From 7a85b509ca27479b4331f7150c5f63a80e590625 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 7 Oct 2025 13:16:58 +0900 Subject: [PATCH 006/295] Use pin hash --- .github/workflows/sync-ruby.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/sync-ruby.yml b/.github/workflows/sync-ruby.yml index acf4b361e3f8..79096bb2b1a1 100644 --- a/.github/workflows/sync-ruby.yml +++ b/.github/workflows/sync-ruby.yml @@ -8,13 +8,13 @@ jobs: runs-on: ubuntu-latest if: ${{ github.repository_owner == 'ruby' }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - name: Create GitHub App token id: app-token - uses: actions/create-github-app-token@v2 + uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4 with: app-id: 2060836 private-key: ${{ secrets.RUBY_SYNC_DEFAULT_GEMS_PRIVATE_KEY }} @@ -22,7 +22,7 @@ jobs: repositories: ruby - name: Sync to ruby/ruby - uses: convictional/trigger-workflow-and-wait@v1.6.5 + uses: convictional/trigger-workflow-and-wait@f69fa9eedd3c62a599220f4d5745230e237904be # v1.6.5 with: owner: ruby repo: ruby From 94e8d2dc8aa7768500d38c90d71e0f79a628da6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Oct 2025 04:45:48 +0000 Subject: [PATCH 007/295] Bump ossf/scorecard-action from 2.4.2 to 2.4.3 Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.2 to 2.4.3. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/05b42c624433fc40578a4040d5cf5e36ddca8cde...4eaacf0543bb3f2c246792bd56e8cdeffafb205a) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-version: 2.4.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 645f5c346707..08faf85213da 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -33,7 +33,7 @@ jobs: persist-credentials: false - name: Run analysis - uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2 + uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3 with: results_file: results.sarif results_format: sarif From 222348bf4f6934512a45f64d608ca56503756e28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Oct 2025 06:16:03 +0000 Subject: [PATCH 008/295] Bump astral-sh/setup-uv from 6.7.0 to 6.8.0 Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 6.7.0 to 6.8.0. - [Release notes](https://github.com/astral-sh/setup-uv/releases) - [Commits](https://github.com/astral-sh/setup-uv/compare/b75a909f75acd358c2196fb9a5f1299a9a8868a4...d0cc045d04ccac9d8b7881df0226f9e82c39688e) --- updated-dependencies: - dependency-name: astral-sh/setup-uv dependency-version: 6.8.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/ubuntu-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ubuntu-lint.yml b/.github/workflows/ubuntu-lint.yml index 223892570cbe..0c19a075d4d8 100644 --- a/.github/workflows/ubuntu-lint.yml +++ b/.github/workflows/ubuntu-lint.yml @@ -32,7 +32,7 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # v6.7.0 + - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0 with: python-version: "3.13" activate-environment: true From 2f26da4cea799d4dcb965ccfe8495a00fd914816 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Oct 2025 06:16:36 +0000 Subject: [PATCH 009/295] Bump zizmor from 1.12.1 to 1.14.2 in /.github/workflows Bumps [zizmor](https://github.com/zizmorcore/zizmor) from 1.12.1 to 1.14.2. - [Release notes](https://github.com/zizmorcore/zizmor/releases) - [Changelog](https://github.com/zizmorcore/zizmor/blob/main/docs/release-notes.md) - [Commits](https://github.com/zizmorcore/zizmor/compare/v1.12.1...v1.14.2) --- updated-dependencies: - dependency-name: zizmor dependency-version: 1.14.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/lint/requirements.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint/requirements.in b/.github/workflows/lint/requirements.in index 182f49633827..97f78f83879b 100644 --- a/.github/workflows/lint/requirements.in +++ b/.github/workflows/lint/requirements.in @@ -1,3 +1,3 @@ codespell==2.4.1 yamllint==1.37.1 -zizmor==1.12.1 +zizmor==1.14.2 From 5b963fb7d34ea79dd215d4acfe1734a171303c8e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 9 Oct 2025 13:51:13 +0900 Subject: [PATCH 010/295] Bump up to RubyGems 4.0.0.dev that is next major version --- lib/rubygems.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 8bb8cdfc0486..b523544e198f 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -9,7 +9,7 @@ require "rbconfig" module Gem - VERSION = "3.8.0.dev" + VERSION = "4.0.0.dev" end require_relative "rubygems/defaults" From a51334ba9987c4b76e85ae03595f75f9521bfe9f Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 9 Oct 2025 14:10:55 +0900 Subject: [PATCH 011/295] Bump up to Bundler 4.0.0.dev that is next major version --- bundler/lib/bundler/version.rb | 2 +- tool/bundler/rubocop_gems.rb.lock | 2 +- tool/bundler/standard_gems.rb.lock | 2 +- tool/bundler/test_gems.rb.lock | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bundler/lib/bundler/version.rb b/bundler/lib/bundler/version.rb index 5a55b23ac18b..0715f6dfee58 100644 --- a/bundler/lib/bundler/version.rb +++ b/bundler/lib/bundler/version.rb @@ -1,7 +1,7 @@ # frozen_string_literal: false module Bundler - VERSION = "2.8.0.dev".freeze + VERSION = "4.0.0.dev".freeze def self.bundler_major_version @bundler_major_version ||= gem_version.segments.first diff --git a/tool/bundler/rubocop_gems.rb.lock b/tool/bundler/rubocop_gems.rb.lock index c26b12dbf1cb..04a721296c5e 100644 --- a/tool/bundler/rubocop_gems.rb.lock +++ b/tool/bundler/rubocop_gems.rb.lock @@ -148,4 +148,4 @@ CHECKSUMS unicode-emoji (4.0.4) sha256=2c2c4ef7f353e5809497126285a50b23056cc6e61b64433764a35eff6c36532a BUNDLED WITH - 2.8.0.dev + 4.0.0.dev diff --git a/tool/bundler/standard_gems.rb.lock b/tool/bundler/standard_gems.rb.lock index cfc47e25fd9a..a8a09541c80c 100644 --- a/tool/bundler/standard_gems.rb.lock +++ b/tool/bundler/standard_gems.rb.lock @@ -168,4 +168,4 @@ CHECKSUMS unicode-emoji (4.0.4) sha256=2c2c4ef7f353e5809497126285a50b23056cc6e61b64433764a35eff6c36532a BUNDLED WITH - 2.8.0.dev + 4.0.0.dev diff --git a/tool/bundler/test_gems.rb.lock b/tool/bundler/test_gems.rb.lock index 7e2e15e9159a..6d68728a85ee 100644 --- a/tool/bundler/test_gems.rb.lock +++ b/tool/bundler/test_gems.rb.lock @@ -100,4 +100,4 @@ CHECKSUMS tilt (2.6.0) sha256=263d748466e0d83e510aa1a2e2281eff547937f0ef06be33d3632721e255f76b BUNDLED WITH - 2.8.0.dev + 4.0.0.dev From 0e553c44251bdcb2bbc5c11bb5010fb0de7e6450 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 9 Oct 2025 14:25:53 +0900 Subject: [PATCH 012/295] Fixed failing examples with 4.0.0.dev version --- bundler/spec/bundler/cli_spec.rb | 6 +++--- bundler/spec/commands/version_spec.rb | 28 +++++++++++++-------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/bundler/spec/bundler/cli_spec.rb b/bundler/spec/bundler/cli_spec.rb index 41cd8c636d40..927906e83716 100644 --- a/bundler/spec/bundler/cli_spec.rb +++ b/bundler/spec/bundler/cli_spec.rb @@ -266,10 +266,10 @@ def out_with_macos_man_workaround RSpec.describe "bundler executable" do it "shows the bundler version just as the `bundle` executable does" do bundler "--version" - expect(out).to eq("Bundler version #{Bundler::VERSION}") + expect(out).to eq("#{Bundler::VERSION}") - bundle "config simulate_version 4" + bundle "config simulate_version 5" bundler "--version" - expect(out).to eq("#{Bundler::VERSION} (simulating Bundler 4)") + expect(out).to eq("#{Bundler::VERSION} (simulating Bundler 5)") end end diff --git a/bundler/spec/commands/version_spec.rb b/bundler/spec/commands/version_spec.rb index 1019803c8705..c683cc0790aa 100644 --- a/bundler/spec/commands/version_spec.rb +++ b/bundler/spec/commands/version_spec.rb @@ -12,53 +12,53 @@ context "with -v" do it "outputs the version and virtual version if set" do bundle "-v" - expect(out).to eq("Bundler version #{Bundler::VERSION}") + expect(out).to eq("#{Bundler::VERSION}") - bundle "config simulate_version 4" + bundle "config simulate_version 5" bundle "-v" - expect(out).to eq("#{Bundler::VERSION} (simulating Bundler 4)") + expect(out).to eq("#{Bundler::VERSION} (simulating Bundler 5)") end end context "with --version" do it "outputs the version and virtual version if set" do bundle "--version" - expect(out).to eq("Bundler version #{Bundler::VERSION}") + expect(out).to eq("#{Bundler::VERSION}") - bundle "config simulate_version 4" + bundle "config simulate_version 5" bundle "--version" - expect(out).to eq("#{Bundler::VERSION} (simulating Bundler 4)") + expect(out).to eq("#{Bundler::VERSION} (simulating Bundler 5)") end end context "with version" do context "when released", :ruby_repo do before do - system_gems "bundler-2.9.9", released: true + system_gems "bundler-4.9.9", released: true end it "outputs the version, virtual version if set, and build metadata" do bundle "version" - expect(out).to match(/\ABundler version 2\.9\.9 \(2100-01-01 commit #{COMMIT_HASH}\)\z/) + expect(out).to match(/\A4\.9\.9 \(2100-01-01 commit #{COMMIT_HASH}\)\z/) - bundle "config simulate_version 4" + bundle "config simulate_version 5" bundle "version" - expect(out).to match(/\A2\.9\.9 \(simulating Bundler 4\) \(2100-01-01 commit #{COMMIT_HASH}\)\z/) + expect(out).to match(/\A4\.9\.9 \(simulating Bundler 5\) \(2100-01-01 commit #{COMMIT_HASH}\)\z/) end end context "when not released" do before do - system_gems "bundler-2.9.9", released: false + system_gems "bundler-4.9.9", released: false end it "outputs the version, virtual version if set, and build metadata" do bundle "version" - expect(out).to match(/\ABundler version 2\.9\.9 \(20\d{2}-\d{2}-\d{2} commit #{COMMIT_HASH}\)\z/) + expect(out).to match(/\A4\.9\.9 \(20\d{2}-\d{2}-\d{2} commit #{COMMIT_HASH}\)\z/) - bundle "config simulate_version 4" + bundle "config simulate_version 5" bundle "version" - expect(out).to match(/\A2\.9\.9 \(simulating Bundler 4\) \(20\d{2}-\d{2}-\d{2} commit #{COMMIT_HASH}\)\z/) + expect(out).to match(/\A4\.9\.9 \(simulating Bundler 5\) \(20\d{2}-\d{2}-\d{2} commit #{COMMIT_HASH}\)\z/) end end end From 0d4e77d7982110d12618eded51150a14c8f335b8 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 9 Oct 2025 14:51:31 +0900 Subject: [PATCH 013/295] Removed Bundler.current_ruby.maglev*? and raise Bundler::RemovedError MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Rodríguez <2887858+deivid-rodriguez@users.noreply.github.com> --- bundler/lib/bundler/current_ruby.rb | 16 ++-------------- bundler/spec/bundler/current_ruby_spec.rb | 14 ++++---------- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/bundler/lib/bundler/current_ruby.rb b/bundler/lib/bundler/current_ruby.rb index faec69536972..b350baa24fd5 100644 --- a/bundler/lib/bundler/current_ruby.rb +++ b/bundler/lib/bundler/current_ruby.rb @@ -50,19 +50,10 @@ def jruby? end def maglev? - message = - "`CurrentRuby#maglev?` is deprecated with no replacement. Please use the " \ - "built-in Ruby `RUBY_ENGINE` constant to check the Ruby implementation you are running on." removed_message = "`CurrentRuby#maglev?` was removed with no replacement. Please use the " \ "built-in Ruby `RUBY_ENGINE` constant to check the Ruby implementation you are running on." - internally_exempted = caller_locations(1, 1).first.path == __FILE__ - - unless internally_exempted - SharedHelpers.major_deprecation(2, message, removed_message: removed_message, print_caller_location: true) - end - - RUBY_ENGINE == "maglev" + SharedHelpers.feature_removed!(removed_message) end def truffleruby? @@ -90,14 +81,11 @@ def windows? end define_method(:"maglev_#{trimmed_version}?") do - message = - "`CurrentRuby##{__method__}` is deprecated with no replacement. Please use the " \ - "built-in Ruby `RUBY_ENGINE` and `RUBY_VERSION` constants to perform a similar check." removed_message = "`CurrentRuby##{__method__}` was removed with no replacement. Please use the " \ "built-in Ruby `RUBY_ENGINE` and `RUBY_VERSION` constants to perform a similar check." - SharedHelpers.major_deprecation(2, message, removed_message: removed_message, print_caller_location: true) + SharedHelpers.feature_removed!(removed_message) send(:"maglev?") && send(:"on_#{trimmed_version}?") end diff --git a/bundler/spec/bundler/current_ruby_spec.rb b/bundler/spec/bundler/current_ruby_spec.rb index 8764c4971fe8..83c42e73e1ef 100644 --- a/bundler/spec/bundler/current_ruby_spec.rb +++ b/bundler/spec/bundler/current_ruby_spec.rb @@ -139,18 +139,12 @@ end describe "Deprecated platform" do - it "Outputs a deprecation warning when calling maglev?" do - expect(Bundler.ui).to receive(:warn).with(/`CurrentRuby#maglev\?` is deprecated with no replacement./) - - Bundler.current_ruby.maglev? + it "outputs an error and aborts when calling maglev?" do + expect { Bundler.current_ruby.maglev? }.to raise_error(Bundler::RemovedError, /`CurrentRuby#maglev\?` was removed with no replacement./) end - it "Outputs a deprecation warning when calling maglev_31?" do - expect(Bundler.ui).to receive(:warn).with(/`CurrentRuby#maglev_31\?` is deprecated with no replacement./) - - Bundler.current_ruby.maglev_31? + it "outputs an error and aborts when calling maglev_31?" do + expect { Bundler.current_ruby.maglev_31? }.to raise_error(Bundler::RemovedError, /`CurrentRuby#maglev_31\?` was removed with no replacement./) end - - pending "is removed and shows a helpful error message about it", bundler: "4" end end From b9960f2c6a94cf8a9d03f9fa04970c01081c5ab7 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 9 Oct 2025 14:59:23 +0900 Subject: [PATCH 014/295] Removed obsoleted example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Rodríguez <2887858+deivid-rodriguez@users.noreply.github.com> --- bundler/spec/install/gemfile/path_spec.rb | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/bundler/spec/install/gemfile/path_spec.rb b/bundler/spec/install/gemfile/path_spec.rb index ea59f11bbe97..31d79ed41ca5 100644 --- a/bundler/spec/install/gemfile/path_spec.rb +++ b/bundler/spec/install/gemfile/path_spec.rb @@ -1,17 +1,6 @@ # frozen_string_literal: true RSpec.describe "bundle install with explicit source paths" do - it "fetches gems with a global path source" do - build_lib "foo" - - install_gemfile <<-G - path "#{lib_path("foo-1.0")}" - gem 'foo' - G - - expect(the_bundle).to include_gems("foo 1.0") - end - it "fetches gems" do build_lib "foo" From edd6b1d3356f6fe053cfd7e4119ae1f4e61379e1 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 9 Oct 2025 15:20:11 +0900 Subject: [PATCH 015/295] Removed obsoleted windows platform example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Rodríguez <2887858+deivid-rodriguez@users.noreply.github.com> --- bundler/spec/commands/cache_spec.rb | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/bundler/spec/commands/cache_spec.rb b/bundler/spec/commands/cache_spec.rb index 80c2ebf68f34..1e90f01ce7f8 100644 --- a/bundler/spec/commands/cache_spec.rb +++ b/bundler/spec/commands/cache_spec.rb @@ -207,18 +207,7 @@ expect(bundled_app("vendor/cache/myrack-1.0.0.gem")).to exist end - it "puts the gems in vendor/cache even for legacy windows rubies, but prints a warning" do - gemfile <<-D - source "https://gem.repo1/" - gem 'myrack', :platforms => [:ruby_20, :x64_mingw_20] - D - - bundle "cache --all-platforms" - expect(err).to include("deprecated") - expect(bundled_app("vendor/cache/myrack-1.0.0.gem")).to exist - end - - it "prints an error when using legacy windows rubies", bundler: "4" do + it "prints an error when using legacy windows rubies" do gemfile <<-D source "https://gem.repo1/" gem 'myrack', :platforms => [:ruby_20, :x64_mingw_20] From 8945e0872bca9a2474f154733884c3685effdebe Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 9 Oct 2025 15:23:47 +0900 Subject: [PATCH 016/295] Catch error instead of deprecated message at --no-keep-file-descriptors option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Rodríguez <2887858+deivid-rodriguez@users.noreply.github.com> --- bundler/spec/other/major_deprecation_spec.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bundler/spec/other/major_deprecation_spec.rb b/bundler/spec/other/major_deprecation_spec.rb index 6117ff613748..f61dc1bc8859 100644 --- a/bundler/spec/other/major_deprecation_spec.rb +++ b/bundler/spec/other/major_deprecation_spec.rb @@ -83,11 +83,9 @@ bundle "exec --no-keep-file-descriptors -e 1", raise_on_error: false end - it "is deprecated" do - expect(deprecations).to include "The `--no-keep-file-descriptors` has been deprecated. `bundle exec` no longer mess with your file descriptors. Close them in the exec'd script if you need to" + it "is removed and shows a helpful error message about it" do + expect(err).to include "The `--no-keep-file-descriptors` has been removed. `bundle exec` no longer mess with your file descriptors. Close them in the exec'd script if you need to" end - - pending "is removed and shows a helpful error message about it", bundler: "4" end describe "bundle update --quiet" do From 12753b3262ea4a2ab7e5fd932d0393c2913d2f0d Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 9 Oct 2025 16:12:02 +0900 Subject: [PATCH 017/295] bin/rubocop -A --- bundler/spec/bundler/cli_spec.rb | 2 +- bundler/spec/commands/version_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bundler/spec/bundler/cli_spec.rb b/bundler/spec/bundler/cli_spec.rb index 927906e83716..07f589bd5de3 100644 --- a/bundler/spec/bundler/cli_spec.rb +++ b/bundler/spec/bundler/cli_spec.rb @@ -266,7 +266,7 @@ def out_with_macos_man_workaround RSpec.describe "bundler executable" do it "shows the bundler version just as the `bundle` executable does" do bundler "--version" - expect(out).to eq("#{Bundler::VERSION}") + expect(out).to eq(Bundler::VERSION.to_s) bundle "config simulate_version 5" bundler "--version" diff --git a/bundler/spec/commands/version_spec.rb b/bundler/spec/commands/version_spec.rb index c683cc0790aa..995a6e1e2063 100644 --- a/bundler/spec/commands/version_spec.rb +++ b/bundler/spec/commands/version_spec.rb @@ -12,7 +12,7 @@ context "with -v" do it "outputs the version and virtual version if set" do bundle "-v" - expect(out).to eq("#{Bundler::VERSION}") + expect(out).to eq(Bundler::VERSION.to_s) bundle "config simulate_version 5" bundle "-v" @@ -23,7 +23,7 @@ context "with --version" do it "outputs the version and virtual version if set" do bundle "--version" - expect(out).to eq("#{Bundler::VERSION}") + expect(out).to eq(Bundler::VERSION.to_s) bundle "config simulate_version 5" bundle "--version" From 82d46d3b2895c33070dc000e26e985a74257ca3a Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 9 Oct 2025 16:22:19 +0900 Subject: [PATCH 018/295] Update lockfiles with 4.0.0.dev --- bundler/spec/realworld/fixtures/tapioca/Gemfile.lock | 2 +- bundler/spec/realworld/fixtures/warbler/Gemfile.lock | 2 +- tool/bundler/dev_gems.rb.lock | 2 +- tool/bundler/lint_gems.rb.lock | 2 +- tool/bundler/release_gems.rb.lock | 2 +- tool/bundler/vendor_gems.rb.lock | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock index ccb51b6fd31e..1b6a649c1faa 100644 --- a/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock +++ b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock @@ -46,4 +46,4 @@ DEPENDENCIES tapioca BUNDLED WITH - 2.8.0.dev + 4.0.0.dev diff --git a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock index d84e09f4337a..3a8fb336ff82 100644 --- a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock +++ b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock @@ -36,4 +36,4 @@ DEPENDENCIES warbler! BUNDLED WITH - 2.8.0.dev + 4.0.0.dev diff --git a/tool/bundler/dev_gems.rb.lock b/tool/bundler/dev_gems.rb.lock index ff1bcfcf63e1..bc1d2acfc98d 100644 --- a/tool/bundler/dev_gems.rb.lock +++ b/tool/bundler/dev_gems.rb.lock @@ -119,4 +119,4 @@ CHECKSUMS turbo_tests (2.2.5) sha256=3fa31497d12976d11ccc298add29107b92bda94a90d8a0a5783f06f05102509f BUNDLED WITH - 2.8.0.dev + 4.0.0.dev diff --git a/tool/bundler/lint_gems.rb.lock b/tool/bundler/lint_gems.rb.lock index 1181e569ba0c..9ba2487db8d0 100644 --- a/tool/bundler/lint_gems.rb.lock +++ b/tool/bundler/lint_gems.rb.lock @@ -119,4 +119,4 @@ CHECKSUMS wmi-lite (1.0.7) sha256=116ef5bb470dbe60f58c2db9047af3064c16245d6562c646bc0d90877e27ddda BUNDLED WITH - 2.8.0.dev + 4.0.0.dev diff --git a/tool/bundler/release_gems.rb.lock b/tool/bundler/release_gems.rb.lock index e8fac3fd9f98..378b895144a0 100644 --- a/tool/bundler/release_gems.rb.lock +++ b/tool/bundler/release_gems.rb.lock @@ -82,4 +82,4 @@ CHECKSUMS uri (1.0.3) sha256=e9f2244608eea2f7bc357d954c65c910ce0399ca5e18a7a29207ac22d8767011 BUNDLED WITH - 2.8.0.dev + 4.0.0.dev diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index 2a26122d711b..ec2763726187 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -83,4 +83,4 @@ CHECKSUMS uri (1.0.3) sha256=e9f2244608eea2f7bc357d954c65c910ce0399ca5e18a7a29207ac22d8767011 BUNDLED WITH - 2.8.0.dev + 4.0.0.dev From 8109c356a83daecf9ca6b7602444cff37c7db2cc Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 9 Oct 2025 18:03:05 +0900 Subject: [PATCH 019/295] Fixed owner name --- .github/workflows/sync-ruby.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync-ruby.yml b/.github/workflows/sync-ruby.yml index 79096bb2b1a1..38b489a40875 100644 --- a/.github/workflows/sync-ruby.yml +++ b/.github/workflows/sync-ruby.yml @@ -6,7 +6,7 @@ jobs: sync: name: Sync ruby runs-on: ubuntu-latest - if: ${{ github.repository_owner == 'ruby' }} + if: ${{ github.repository_owner == 'rubygems' }} steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: From 8e9abb5472973b2f4b5204bb47c21c09a782c6c3 Mon Sep 17 00:00:00 2001 From: Edouard CHIN Date: Thu, 9 Oct 2025 17:23:43 +0200 Subject: [PATCH 020/295] Add checksum of gems hosted on private servers: - ### Problem Running `bundle lock --add-checksums` doesn't add the checksum of gems hosted on server that don't implement the compact index API. This result in a lockfile which is unusable in production as some checksums will be missing and Bundler raising an error. Users can work around this problem by running: `BUNDLE_LOCKFILE_CHECKSUMS=true bundle install --force` But this means redownloading and installing all gems which isn't great and slow on large apps. ### Context Bundler uses the Compact Index API to get the checksum of gems, but most private gem servers don't implement the compact index API (such as cloudsmith or packagecloud). This results in a soft failure on bundler side, and bundler leaving out blank checksum for those gems. ### Solution For gems that are hosted on private servers that don't send back the checksum of the gem, I'd like to fallback to the `bundle install` mechanism, which don't rely on an external API but instead compute the checksum of the package installed on disk. This patch goes through the spec that didn't return a checksum, and compute one if the package exists on disk. This solution makes the `bundle lock --add-checksums` command actually usable in real world scenarios while keeping the `bundle lock` command fast enough. --- bundler/lib/bundler/definition.rb | 13 ++++- bundler/spec/commands/lock_spec.rb | 91 ++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/bundler/lib/bundler/definition.rb b/bundler/lib/bundler/definition.rb index cc2394fda60f..77632a590584 100644 --- a/bundler/lib/bundler/definition.rb +++ b/bundler/lib/bundler/definition.rb @@ -540,7 +540,18 @@ def add_checksums setup_domain!(add_checksums: true) - specs # force materialization to real specifications, so that checksums are fetched + # force materialization to real specifications, so that checksums are fetched + specs.each do |spec| + next unless spec.source.is_a?(Bundler::Source::Rubygems) + # Checksum was fetched from the compact index API. + next if !spec.source.checksum_store.missing?(spec) && !spec.source.checksum_store.empty?(spec) + # The gem isn't installed, can't compute the checksum. + next unless spec.loaded_from + + package = Gem::Package.new(spec.source.cached_built_in_gem(spec)) + checksum = Checksum.from_gem_package(package) + spec.source.checksum_store.register(spec, checksum) + end end private diff --git a/bundler/spec/commands/lock_spec.rb b/bundler/spec/commands/lock_spec.rb index a7460ed695a4..36493e108a2c 100644 --- a/bundler/spec/commands/lock_spec.rb +++ b/bundler/spec/commands/lock_spec.rb @@ -2174,6 +2174,97 @@ L end + it "add checksums for gems installed on disk" do + build_repo4 do + build_gem "warning", "18.0.0" + end + + bundle "config lockfile_checksums false" + + simulate_platform "x86_64-linux" do + install_gemfile(<<-G, artifice: "endpoint") + source "https://gem.repo4/" + + gem "warning" + G + + bundle "config --delete lockfile_checksums" + bundle("lock --add-checksums", artifice: "endpoint") + end + + checksums = checksums_section do |c| + c.checksum gem_repo4, "warning", "18.0.0" + end + + expect(lockfile).to eq <<~L + GEM + remote: https://gem.repo4/ + specs: + warning (18.0.0) + + PLATFORMS + ruby + x86_64-linux + + DEPENDENCIES + warning + #{checksums} + BUNDLED WITH + #{Bundler::VERSION} + L + end + + it "doesn't add checksum for gems not installed on disk" do + lockfile(<<~L) + GEM + remote: https://gem.repo4/ + specs: + warning (18.0.0) + + PLATFORMS + #{local_platform} + + DEPENDENCIES + warning + + BUNDLED WITH + #{Bundler::VERSION} + L + + gemfile(<<~G) + source "https://gem.repo4/" + + gem "warning" + G + + build_repo4 do + build_gem "warning", "18.0.0" + end + + FileUtils.rm_rf("#{gem_repo4}/gems") + + bundle("lock --add-checksums", artifice: "endpoint") + + expect(lockfile).to eq <<~L + GEM + remote: https://gem.repo4/ + specs: + warning (18.0.0) + + PLATFORMS + #{local_platform} + + DEPENDENCIES + warning + + CHECKSUMS + warning (18.0.0) + + BUNDLED WITH + #{Bundler::VERSION} + L + end + context "when re-resolving to include prereleases" do before do build_repo4 do From ced8ef3a129f62c1b6cdc78af122107d42204fa6 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 10 Oct 2025 11:30:41 +0900 Subject: [PATCH 021/295] Replaced Bundler.feature_flag.plugins? to Bundler.settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Rodríguez <2887858+deivid-rodriguez@users.noreply.github.com> --- bundler/lib/bundler/cli.rb | 4 ++-- bundler/lib/bundler/cli/install.rb | 2 +- bundler/lib/bundler/cli/update.rb | 2 +- bundler/lib/bundler/feature_flag.rb | 1 - bundler/lib/bundler/inline.rb | 2 +- bundler/lib/bundler/plugin.rb | 2 +- bundler/lib/bundler/settings.rb | 1 + 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index c577f4981470..6ee6bc76aec8 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -143,7 +143,7 @@ def help(cli = nil) end def self.handle_no_command_error(command, has_namespace = $thor_runner) - if Bundler.feature_flag.plugins? && Bundler::Plugin.command?(command) + if Bundler.settings[:plugins] && Bundler::Plugin.command?(command) return Bundler::Plugin.exec_command(command, ARGV[1..-1]) end @@ -623,7 +623,7 @@ def pristine(*gems) end end - if Bundler.feature_flag.plugins? + if Bundler.settings[:plugins] require_relative "cli/plugin" desc "plugin", "Manage the bundler plugins" subcommand "plugin", Plugin diff --git a/bundler/lib/bundler/cli/install.rb b/bundler/lib/bundler/cli/install.rb index 57c28379e5f5..20e22155de8e 100644 --- a/bundler/lib/bundler/cli/install.rb +++ b/bundler/lib/bundler/cli/install.rb @@ -38,7 +38,7 @@ def run Bundler::Fetcher.disable_endpoint = options["full-index"] - Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins? + Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.settings[:plugins] # For install we want to enable strict validation # (rather than some optimizations we perform at app runtime). diff --git a/bundler/lib/bundler/cli/update.rb b/bundler/lib/bundler/cli/update.rb index 13f576cfa75b..cf0ceac0bd19 100644 --- a/bundler/lib/bundler/cli/update.rb +++ b/bundler/lib/bundler/cli/update.rb @@ -15,7 +15,7 @@ def run Bundler.self_manager.update_bundler_and_restart_with_it_if_needed(update_bundler) if update_bundler - Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.feature_flag.plugins? + Plugin.gemfile_install(Bundler.default_gemfile) if Bundler.settings[:plugins] sources = Array(options[:source]) groups = Array(options[:group]).map(&:to_sym) diff --git a/bundler/lib/bundler/feature_flag.rb b/bundler/lib/bundler/feature_flag.rb index b2b134889573..2109f50d785e 100644 --- a/bundler/lib/bundler/feature_flag.rb +++ b/bundler/lib/bundler/feature_flag.rb @@ -28,7 +28,6 @@ def self.settings_method(name, key, &default) (1..10).each {|v| define_method("bundler_#{v}_mode?") { @major_version >= v } } settings_flag(:global_gem_cache) { bundler_5_mode? } - settings_flag(:plugins) { @bundler_version >= Gem::Version.new("1.14") } settings_flag(:update_requires_all_flag) { bundler_5_mode? } settings_option(:default_cli_command) { bundler_4_mode? ? :cli_help : :install } diff --git a/bundler/lib/bundler/inline.rb b/bundler/lib/bundler/inline.rb index f2f5b22cd381..4e4b51e7a5df 100644 --- a/bundler/lib/bundler/inline.rb +++ b/bundler/lib/bundler/inline.rb @@ -51,7 +51,7 @@ def gemfile(force_latest_compatible = false, options = {}, &gemfile) Bundler.instance_variable_set(:@bundle_path, Pathname.new(Gem.dir)) Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", "Gemfile" - Bundler::Plugin.gemfile_install(&gemfile) if Bundler.feature_flag.plugins? + Bundler::Plugin.gemfile_install(&gemfile) if Bundler.settings[:plugins] builder = Bundler::Dsl.new builder.instance_eval(&gemfile) diff --git a/bundler/lib/bundler/plugin.rb b/bundler/lib/bundler/plugin.rb index 44129cc0ff50..fd6da6cf6dec 100644 --- a/bundler/lib/bundler/plugin.rb +++ b/bundler/lib/bundler/plugin.rb @@ -220,7 +220,7 @@ def add_hook(event, &block) # # @param [String] event def hook(event, *args, &arg_blk) - return unless Bundler.feature_flag.plugins? + return unless Bundler.settings[:plugins] unless Events.defined_event?(event) raise ArgumentError, "Event '#{event}' not defined in Bundler::Plugin::Events" end diff --git a/bundler/lib/bundler/settings.rb b/bundler/lib/bundler/settings.rb index 7923ba51c366..f8065ad277b2 100644 --- a/bundler/lib/bundler/settings.rb +++ b/bundler/lib/bundler/settings.rb @@ -83,6 +83,7 @@ class Settings "BUNDLE_VERSION" => "lockfile", "BUNDLE_LOCKFILE_CHECKSUMS" => true, "BUNDLE_CACHE_ALL" => true, + "BUNDLE_PLUGINS" => true, }.freeze def initialize(root = nil) From aee50b31dbd812b1bdc2541d5282f2e0f8f7c2cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <2887858+deivid-rodriguez@users.noreply.github.com> Date: Tue, 9 Sep 2025 19:21:52 +0200 Subject: [PATCH 022/295] Consolidate removal of `Bundler::SpecSet#-` and `Bundler::SpecSet#<<` --- bundler/lib/bundler/spec_set.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/bundler/lib/bundler/spec_set.rb b/bundler/lib/bundler/spec_set.rb index 411393ce1bdd..4ae03171dc58 100644 --- a/bundler/lib/bundler/spec_set.rb +++ b/bundler/lib/bundler/spec_set.rb @@ -179,9 +179,7 @@ def insecurely_materialized_specs end def -(other) - SharedHelpers.major_deprecation 2, "SpecSet#- has been removed with no replacement" - - SpecSet.new(to_a - other.to_a) + SharedHelpers.feature_removed! "SpecSet#- has been removed with no replacement" end def find_by_name_and_platform(name, platform) @@ -212,9 +210,7 @@ def what_required(spec) end def <<(spec) - SharedHelpers.major_deprecation 2, "SpecSet#<< has been removed with no replacement" - - @specs << spec + SharedHelpers.feature_removed! "SpecSet#<< has been removed with no replacement" end def length From 73779331ce9872c98e2aeedf6b8195d349d3ea7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <2887858+deivid-rodriguez@users.noreply.github.com> Date: Tue, 9 Sep 2025 19:21:29 +0200 Subject: [PATCH 023/295] Consolidate removal of `Bundler.rubygems.all_specs` --- bundler/lib/bundler/rubygems_integration.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/bundler/lib/bundler/rubygems_integration.rb b/bundler/lib/bundler/rubygems_integration.rb index 31f255d997a8..d8f95cffb8fc 100644 --- a/bundler/lib/bundler/rubygems_integration.rb +++ b/bundler/lib/bundler/rubygems_integration.rb @@ -416,11 +416,7 @@ def path_separator end def all_specs - SharedHelpers.major_deprecation 2, "Bundler.rubygems.all_specs has been removed in favor of Bundler.rubygems.installed_specs" - - Gem::Specification.stubs.map do |stub| - StubSpecification.from_stub(stub) - end + SharedHelpers.feature_removed! "Bundler.rubygems.all_specs has been removed in favor of Bundler.rubygems.installed_specs" end def installed_specs From bfe15a47123407954d495739ca43861702db4cb5 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 10 Oct 2025 14:10:45 +0900 Subject: [PATCH 024/295] Make global_gem_cache flag to settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Rodríguez <2887858+deivid-rodriguez@users.noreply.github.com> --- bundler/lib/bundler/feature_flag.rb | 1 - bundler/lib/bundler/settings.rb | 1 + bundler/lib/bundler/source.rb | 2 +- bundler/lib/bundler/source/git.rb | 2 +- bundler/lib/bundler/source/rubygems.rb | 2 +- 5 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bundler/lib/bundler/feature_flag.rb b/bundler/lib/bundler/feature_flag.rb index 2109f50d785e..c3b8d790fbbc 100644 --- a/bundler/lib/bundler/feature_flag.rb +++ b/bundler/lib/bundler/feature_flag.rb @@ -27,7 +27,6 @@ def self.settings_method(name, key, &default) (1..10).each {|v| define_method("bundler_#{v}_mode?") { @major_version >= v } } - settings_flag(:global_gem_cache) { bundler_5_mode? } settings_flag(:update_requires_all_flag) { bundler_5_mode? } settings_option(:default_cli_command) { bundler_4_mode? ? :cli_help : :install } diff --git a/bundler/lib/bundler/settings.rb b/bundler/lib/bundler/settings.rb index f8065ad277b2..64f0c9900eb2 100644 --- a/bundler/lib/bundler/settings.rb +++ b/bundler/lib/bundler/settings.rb @@ -84,6 +84,7 @@ class Settings "BUNDLE_LOCKFILE_CHECKSUMS" => true, "BUNDLE_CACHE_ALL" => true, "BUNDLE_PLUGINS" => true, + "BUNDLE_GLOBAL_GEM_CACHE" => false, }.freeze def initialize(root = nil) diff --git a/bundler/lib/bundler/source.rb b/bundler/lib/bundler/source.rb index 232873503b39..2b90a0eff1bf 100644 --- a/bundler/lib/bundler/source.rb +++ b/bundler/lib/bundler/source.rb @@ -79,7 +79,7 @@ def path? end def extension_cache_path(spec) - return unless Bundler.feature_flag.global_gem_cache? + return unless Bundler.settings[:global_gem_cache] return unless source_slug = extension_cache_slug(spec) Bundler.user_cache.join( "extensions", Gem::Platform.local.to_s, Bundler.ruby_scope, diff --git a/bundler/lib/bundler/source/git.rb b/bundler/lib/bundler/source/git.rb index bb12ff52f514..bb669ebba39d 100644 --- a/bundler/lib/bundler/source/git.rb +++ b/bundler/lib/bundler/source/git.rb @@ -238,7 +238,7 @@ def load_spec_files # across different projects, this cache will be shared. # When using local git repos, this is set to the local repo. def cache_path - @cache_path ||= if Bundler.feature_flag.global_gem_cache? + @cache_path ||= if Bundler.settings[:global_gem_cache] Bundler.user_cache else Bundler.bundle_path.join("cache", "bundler") diff --git a/bundler/lib/bundler/source/rubygems.rb b/bundler/lib/bundler/source/rubygems.rb index fdc3a77b2480..2631c860a010 100644 --- a/bundler/lib/bundler/source/rubygems.rb +++ b/bundler/lib/bundler/source/rubygems.rb @@ -493,7 +493,7 @@ def download_gem(spec, download_cache_path, previous_spec = nil) # @return [Pathname] The global cache path. # def download_cache_path(spec) - return unless Bundler.feature_flag.global_gem_cache? + return unless Bundler.settings[:global_gem_cache] return unless remote = spec.remote return unless cache_slug = remote.cache_slug From 31d67ecc056fb5a9193bc66a6e69e21576a87702 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 10 Oct 2025 15:30:31 +0900 Subject: [PATCH 025/295] Make default_cli_command flag to settings --- bundler/lib/bundler/cli.rb | 2 +- bundler/lib/bundler/feature_flag.rb | 2 -- bundler/lib/bundler/settings.rb | 1 + 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index 6ee6bc76aec8..62225a352d71 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -107,7 +107,7 @@ def cli_help shell.say self.class.send(:class_options_help, shell) end - default_task(Bundler.feature_flag.default_cli_command) + default_task(Bundler.settings[:default_cli_command]) class_option "no-color", type: :boolean, desc: "Disable colorization in output" class_option "retry", type: :numeric, aliases: "-r", banner: "NUM", diff --git a/bundler/lib/bundler/feature_flag.rb b/bundler/lib/bundler/feature_flag.rb index c3b8d790fbbc..593d704e2b3e 100644 --- a/bundler/lib/bundler/feature_flag.rb +++ b/bundler/lib/bundler/feature_flag.rb @@ -29,8 +29,6 @@ def self.settings_method(name, key, &default) settings_flag(:update_requires_all_flag) { bundler_5_mode? } - settings_option(:default_cli_command) { bundler_4_mode? ? :cli_help : :install } - def removed_major?(target_major_version) @major_version > target_major_version end diff --git a/bundler/lib/bundler/settings.rb b/bundler/lib/bundler/settings.rb index 64f0c9900eb2..b6bc6c5a8a5c 100644 --- a/bundler/lib/bundler/settings.rb +++ b/bundler/lib/bundler/settings.rb @@ -83,6 +83,7 @@ class Settings "BUNDLE_VERSION" => "lockfile", "BUNDLE_LOCKFILE_CHECKSUMS" => true, "BUNDLE_CACHE_ALL" => true, + "BUNDLE_DEFAULT_CLI_COMMAND" => "cli_help", "BUNDLE_PLUGINS" => true, "BUNDLE_GLOBAL_GEM_CACHE" => false, }.freeze From b2472e7b82a0f58623341d5469aeb10034b3d301 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 10 Oct 2025 15:32:29 +0900 Subject: [PATCH 026/295] Added extra examples for cli_help default command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Rodríguez <2887858+deivid-rodriguez@users.noreply.github.com> --- bundler/spec/bundler/cli_spec.rb | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/bundler/spec/bundler/cli_spec.rb b/bundler/spec/bundler/cli_spec.rb index 07f589bd5de3..b3a97e72ceb2 100644 --- a/bundler/spec/bundler/cli_spec.rb +++ b/bundler/spec/bundler/cli_spec.rb @@ -87,7 +87,7 @@ def out_with_macos_man_workaround end context "with no arguments" do - it "prints a concise help message", bundler: "4" do + it "prints a concise help message by default" do bundle "" expect(err).to be_empty expect(out).to include("Bundler version #{Bundler::VERSION}"). @@ -96,6 +96,23 @@ def out_with_macos_man_workaround and include("\n\n Utilities:\n"). and include("\n\nOptions:\n") end + + it "prints a concise help message when default_cli_command set to cli_help" do + bundle "config set default_cli_command cli_help" + bundle "" + expect(err).to be_empty + expect(out).to include("Bundler version #{Bundler::VERSION}"). + and include("\n\nBundler commands:\n\n"). + and include("\n\n Primary commands:\n"). + and include("\n\n Utilities:\n"). + and include("\n\nOptions:\n") + end + + it "runs bundle install when default_cli_command set to install" do + bundle "config set default_cli_command install" + bundle "", raise_on_error: false + expect(err).to include("Could not locate Gemfile") + end end context "when ENV['BUNDLE_GEMFILE'] is set to an empty string" do From 631a55be918cee6881df2642beba99fd1f1446f8 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 10 Oct 2025 15:47:10 +0900 Subject: [PATCH 027/295] Make update_requires_all_flag to settings --- bundler/lib/bundler/cli/update.rb | 2 +- bundler/lib/bundler/feature_flag.rb | 2 -- bundler/lib/bundler/settings.rb | 1 + 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bundler/lib/bundler/cli/update.rb b/bundler/lib/bundler/cli/update.rb index cf0ceac0bd19..4b4ba3c64712 100644 --- a/bundler/lib/bundler/cli/update.rb +++ b/bundler/lib/bundler/cli/update.rb @@ -23,7 +23,7 @@ def run full_update = gems.empty? && sources.empty? && groups.empty? && !options[:ruby] && !update_bundler if full_update && !options[:all] - if Bundler.feature_flag.update_requires_all_flag? + if Bundler.settings[:update_requires_all_flag] raise InvalidOption, "To update everything, pass the `--all` flag." end SharedHelpers.major_deprecation 4, "Pass --all to `bundle update` to update everything" diff --git a/bundler/lib/bundler/feature_flag.rb b/bundler/lib/bundler/feature_flag.rb index 593d704e2b3e..8ec62fc1c9e6 100644 --- a/bundler/lib/bundler/feature_flag.rb +++ b/bundler/lib/bundler/feature_flag.rb @@ -27,8 +27,6 @@ def self.settings_method(name, key, &default) (1..10).each {|v| define_method("bundler_#{v}_mode?") { @major_version >= v } } - settings_flag(:update_requires_all_flag) { bundler_5_mode? } - def removed_major?(target_major_version) @major_version > target_major_version end diff --git a/bundler/lib/bundler/settings.rb b/bundler/lib/bundler/settings.rb index b6bc6c5a8a5c..81f1857eec76 100644 --- a/bundler/lib/bundler/settings.rb +++ b/bundler/lib/bundler/settings.rb @@ -86,6 +86,7 @@ class Settings "BUNDLE_DEFAULT_CLI_COMMAND" => "cli_help", "BUNDLE_PLUGINS" => true, "BUNDLE_GLOBAL_GEM_CACHE" => false, + "BUNDLE_UPDATE_REQUIRES_ALL_FLAG" => false, }.freeze def initialize(root = nil) From e4f1772d803d9d8deb83a1bee61261451fa2c6a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Barri=C3=A9?= Date: Mon, 13 Oct 2025 16:26:11 +0200 Subject: [PATCH 028/295] Fix typo --- lib/rubygems/specification_record.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rubygems/specification_record.rb b/lib/rubygems/specification_record.rb index 195a35549670..d08410096fac 100644 --- a/lib/rubygems/specification_record.rb +++ b/lib/rubygems/specification_record.rb @@ -73,7 +73,7 @@ def stubs_for_pattern(pattern, match_platform = true) end ## - # Adds +spec+ to the the record, keeping the collection properly sorted. + # Adds +spec+ to the record, keeping the collection properly sorted. def add_spec(spec) return if all.include? spec From 7d910dd94cffaf77b0b306dbd9ca7fbc05c942b6 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 14 Oct 2025 14:39:42 +0900 Subject: [PATCH 029/295] Removed deprecated legacy windows platform support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Rodríguez <2887858+deivid-rodriguez@users.noreply.github.com> --- bundler/lib/bundler/dsl.rb | 18 +-- bundler/lib/bundler/lockfile_parser.rb | 14 +- bundler/spec/bundler/dsl_spec.rb | 8 +- bundler/spec/bundler/lockfile_parser_spec.rb | 128 ------------------- 4 files changed, 13 insertions(+), 155 deletions(-) diff --git a/bundler/lib/bundler/dsl.rb b/bundler/lib/bundler/dsl.rb index 3bf5dbc1153c..d98dbd4759e9 100644 --- a/bundler/lib/bundler/dsl.rb +++ b/bundler/lib/bundler/dsl.rb @@ -411,7 +411,13 @@ def normalize_options(name, version, opts) next if VALID_PLATFORMS.include?(p) raise GemfileError, "`#{p}` is not a valid platform. The available options are: #{VALID_PLATFORMS.inspect}" end - deprecate_legacy_windows_platforms(platforms) + + windows_platforms = platforms.select {|pl| pl.to_s.match?(/mingw|mswin/) } + if windows_platforms.any? + windows_platforms = windows_platforms.map! {|pl| ":#{pl}" }.join(", ") + removed_message = "Platform #{windows_platforms} has been removed. Please use platform :windows instead." + Bundler::SharedHelpers.feature_removed! removed_message + end # Save sources passed in a key if opts.key?("source") @@ -492,16 +498,6 @@ def normalize_source(source) end end - def deprecate_legacy_windows_platforms(platforms) - windows_platforms = platforms.select {|pl| pl.to_s.match?(/mingw|mswin/) } - return if windows_platforms.empty? - - windows_platforms = windows_platforms.map! {|pl| ":#{pl}" }.join(", ") - message = "Platform #{windows_platforms} is deprecated. Please use platform :windows instead." - removed_message = "Platform #{windows_platforms} has been removed. Please use platform :windows instead." - Bundler::SharedHelpers.major_deprecation 2, message, removed_message: removed_message - end - def check_path_source_safety return if @sources.global_path_source.nil? diff --git a/bundler/lib/bundler/lockfile_parser.rb b/bundler/lib/bundler/lockfile_parser.rb index 9ab9d73ae26d..07b5bd75147c 100644 --- a/bundler/lib/bundler/lockfile_parser.rb +++ b/bundler/lib/bundler/lockfile_parser.rb @@ -141,18 +141,8 @@ def initialize(lockfile, strict: false) @pos.advance!(line) end - if !Bundler.frozen_bundle? && @platforms.include?(Gem::Platform::X64_MINGW_LEGACY) - if @platforms.include?(Gem::Platform::X64_MINGW) - @platforms.delete(Gem::Platform::X64_MINGW_LEGACY) - SharedHelpers.major_deprecation(2, - "Found x64-mingw32 in lockfile, which is deprecated. Removing it. Support for x64-mingw32 will be removed in Bundler 4.0.", - removed_message: "Found x64-mingw32 in lockfile, which is no longer supported as of Bundler 4.0.") - else - @platforms[@platforms.index(Gem::Platform::X64_MINGW_LEGACY)] = Gem::Platform::X64_MINGW - SharedHelpers.major_deprecation(2, - "Found x64-mingw32 in lockfile, which is deprecated. Using x64-mingw-ucrt, the replacement for x64-mingw32 in modern rubies, instead. Support for x64-mingw32 will be removed in Bundler 4.0.", - removed_message: "Found x64-mingw32 in lockfile, which is no longer supported as of Bundler 4.0.") - end + if @platforms.include?(Gem::Platform::X64_MINGW_LEGACY) + SharedHelpers.feature_removed!("Found x64-mingw32 in lockfile, which is no longer supported as of Bundler 4.0.") end @most_specific_locked_platform = @platforms.min_by do |bundle_platform| diff --git a/bundler/spec/bundler/dsl_spec.rb b/bundler/spec/bundler/dsl_spec.rb index ac28aea4d7da..e88033e95542 100644 --- a/bundler/spec/bundler/dsl_spec.rb +++ b/bundler/spec/bundler/dsl_spec.rb @@ -221,8 +221,8 @@ to raise_error(Bundler::GemfileError, /is not a valid platform/) end - it "raises a deprecation warning for legacy windows platforms" do - expect(Bundler::SharedHelpers).to receive(:major_deprecation).with(2, /\APlatform :mswin, :x64_mingw is deprecated/, removed_message: /\APlatform :mswin, :x64_mingw has been removed/) + it "raises an error for legacy windows platforms" do + expect(Bundler::SharedHelpers).to receive(:feature_removed!).with(/\APlatform :mswin, :x64_mingw has been removed/) subject.gem("foo", platforms: [:mswin, :jruby, :x64_mingw]) end @@ -291,8 +291,8 @@ end describe "#platforms" do - it "raises a deprecation warning for legacy windows platforms" do - expect(Bundler::SharedHelpers).to receive(:major_deprecation).with(2, /\APlatform :mswin64, :mingw is deprecated/, removed_message: /\APlatform :mswin64, :mingw has been removed/) + it "raises an error for legacy windows platforms" do + expect(Bundler::SharedHelpers).to receive(:feature_removed!).with(/\APlatform :mswin64, :mingw has been removed/) subject.platforms(:mswin64, :jruby, :mingw) do subject.gem("foo") end diff --git a/bundler/spec/bundler/lockfile_parser_spec.rb b/bundler/spec/bundler/lockfile_parser_spec.rb index 54aa6a0bfe37..f38da2c99321 100644 --- a/bundler/spec/bundler/lockfile_parser_spec.rb +++ b/bundler/spec/bundler/lockfile_parser_spec.rb @@ -95,134 +95,6 @@ end end - describe "X64_MINGW_LEGACY platform handling" do - before { allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app("gems.rb")) } - - describe "when X64_MINGW_LEGACY is present alone" do - let(:lockfile_with_legacy_platform) { <<~L } - GEM - remote: https://rubygems.org/ - specs: - rake (10.3.2) - - PLATFORMS - ruby - x64-mingw32 - - DEPENDENCIES - rake - - BUNDLED WITH - 3.6.9 - L - - context "when bundle is not frozen" do - before { allow(Bundler).to receive(:frozen_bundle?).and_return(false) } - subject { described_class.new(lockfile_with_legacy_platform) } - - it "replaces X64_MINGW_LEGACY with X64_MINGW" do - allow(Bundler::SharedHelpers).to receive(:major_deprecation) - expect(subject.platforms.map(&:to_s)).to contain_exactly("ruby", "x64-mingw-ucrt") - expect(subject.platforms.map(&:to_s)).not_to include("x64-mingw32") - end - - it "shows deprecation warning for replacement" do - expect(Bundler::SharedHelpers).to receive(:major_deprecation).with( - 2, - "Found x64-mingw32 in lockfile, which is deprecated. Using x64-mingw-ucrt, the replacement for x64-mingw32 in modern rubies, instead. Support for x64-mingw32 will be removed in Bundler 4.0.", - removed_message: "Found x64-mingw32 in lockfile, which is no longer supported as of Bundler 4.0." - ) - subject - end - end - - context "when bundle is frozen" do - before { allow(Bundler).to receive(:frozen_bundle?).and_return(true) } - subject { described_class.new(lockfile_with_legacy_platform) } - - it "preserves X64_MINGW_LEGACY platform without replacement" do - expect(subject.platforms.map(&:to_s)).to contain_exactly("ruby", "x64-mingw32") - end - - it "does not show any deprecation warnings" do - expect(Bundler::SharedHelpers).not_to receive(:major_deprecation) - subject - end - end - end - - describe "when both X64_MINGW_LEGACY and X64_MINGW are present" do - let(:lockfile_with_both_platforms) { <<~L } - GEM - remote: https://rubygems.org/ - specs: - rake (10.3.2) - - PLATFORMS - ruby - x64-mingw32 - x64-mingw-ucrt - - DEPENDENCIES - rake - - BUNDLED WITH - 3.6.9 - L - - context "when bundle is not frozen" do - before { allow(Bundler).to receive(:frozen_bundle?).and_return(false) } - subject { described_class.new(lockfile_with_both_platforms) } - - it "removes X64_MINGW_LEGACY and keeps X64_MINGW" do - allow(Bundler::SharedHelpers).to receive(:major_deprecation) - expect(subject.platforms.map(&:to_s)).to contain_exactly("ruby", "x64-mingw-ucrt") - expect(subject.platforms.map(&:to_s)).not_to include("x64-mingw32") - end - - it "shows deprecation warning for removing legacy platform" do - expect(Bundler::SharedHelpers).to receive(:major_deprecation).with( - 2, - "Found x64-mingw32 in lockfile, which is deprecated. Removing it. Support for x64-mingw32 will be removed in Bundler 4.0.", - removed_message: "Found x64-mingw32 in lockfile, which is no longer supported as of Bundler 4.0." - ) - subject - end - end - end - - describe "when no X64_MINGW_LEGACY platform is present" do - let(:lockfile_with_modern_platforms) { <<~L } - GEM - remote: https://rubygems.org/ - specs: - rake (10.3.2) - - PLATFORMS - ruby - x64-mingw-ucrt - - DEPENDENCIES - rake - - BUNDLED WITH - 3.6.9 - L - - before { allow(Bundler).to receive(:frozen_bundle?).and_return(false) } - subject { described_class.new(lockfile_with_modern_platforms) } - - it "preserves all modern platforms without changes" do - expect(subject.platforms.map(&:to_s)).to contain_exactly("ruby", "x64-mingw-ucrt") - end - - it "does not show any deprecation warnings" do - expect(Bundler::SharedHelpers).not_to receive(:major_deprecation) - subject - end - end - end - describe "#initialize" do before { allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app("gems.rb")) } subject { described_class.new(lockfile_contents) } From 7b0da18764e34704ffabc9bca70eeaaa6f7ad8e9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 14 Oct 2025 15:18:10 +0900 Subject: [PATCH 030/295] Removed obsoleted examples for legacy windows platform --- bundler/spec/commands/cache_spec.rb | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/bundler/spec/commands/cache_spec.rb b/bundler/spec/commands/cache_spec.rb index 1e90f01ce7f8..283719bedf53 100644 --- a/bundler/spec/commands/cache_spec.rb +++ b/bundler/spec/commands/cache_spec.rb @@ -207,17 +207,6 @@ expect(bundled_app("vendor/cache/myrack-1.0.0.gem")).to exist end - it "prints an error when using legacy windows rubies" do - gemfile <<-D - source "https://gem.repo1/" - gem 'myrack', :platforms => [:ruby_20, :x64_mingw_20] - D - - bundle "cache --all-platforms", raise_on_error: false - expect(err).to include("removed") - expect(bundled_app("vendor/cache/myrack-1.0.0.gem")).not_to exist - end - it "does not attempt to install gems in without groups" do build_repo4 do build_gem "uninstallable", "2.0" do |s| From 90130c0648d5e0168918e5000471b5543e266144 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 14 Oct 2025 15:20:51 +0900 Subject: [PATCH 031/295] Added example for legacy windows platform --- bundler/spec/other/major_deprecation_spec.rb | 32 ++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/bundler/spec/other/major_deprecation_spec.rb b/bundler/spec/other/major_deprecation_spec.rb index f61dc1bc8859..d701c4008dbf 100644 --- a/bundler/spec/other/major_deprecation_spec.rb +++ b/bundler/spec/other/major_deprecation_spec.rb @@ -573,6 +573,38 @@ end end + context "bundle install with a lockfile including X64_MINGW_LEGACY platform" do + before do + gemfile <<~G + source "https://gem.repo1/" + gem "rake" + G + + lockfile <<~L + GEM + remote: https://rubygems.org/ + specs: + rake (10.3.2) + + PLATFORMS + ruby + x64-mingw32 + + DEPENDENCIES + rake + + BUNDLED WITH + #{Bundler::VERSION} + L + end + + it "raises a helpful error" do + bundle "install", raise_on_error: false + + expect(err).to include("Found x64-mingw32 in lockfile, which is no longer supported as of Bundler 4.0.") + end + end + context "when Bundler.setup is run in a ruby script" do before do create_file "gems.rb", "source 'https://gem.repo1/'" From 9d7088718568594a1ecb9d3820eb3a4695eec0be Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 14 Oct 2025 15:58:25 +0900 Subject: [PATCH 032/295] Bump up to test version for 4.0.0.dev --- bundler/spec/commands/update_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bundler/spec/commands/update_spec.rb b/bundler/spec/commands/update_spec.rb index f81c5578841d..299285ba8b01 100644 --- a/bundler/spec/commands/update_spec.rb +++ b/bundler/spec/commands/update_spec.rb @@ -1571,12 +1571,12 @@ end it "does not claim to update to Bundler version to a wrong version when cached gems are present" do - pristine_system_gems "bundler-2.99.0" + pristine_system_gems "bundler-4.99.0" build_repo4 do build_gem "myrack", "3.0.9.1" - build_bundler "2.99.0" + build_bundler "4.99.0" end gemfile <<~G From 376e4ec8c796d9d372d541d007ffc3bdf7430e4e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 14 Oct 2025 18:12:59 +0900 Subject: [PATCH 033/295] Removed legacy_check option from SpecSet#for MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Rodríguez <2887858+deivid-rodriguez@users.noreply.github.com> --- bundler/lib/bundler/spec_set.rb | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/bundler/lib/bundler/spec_set.rb b/bundler/lib/bundler/spec_set.rb index 4ae03171dc58..f9179e7a0693 100644 --- a/bundler/lib/bundler/spec_set.rb +++ b/bundler/lib/bundler/spec_set.rb @@ -11,16 +11,11 @@ def initialize(specs) @specs = specs end - def for(dependencies, platforms_or_legacy_check = [nil], legacy_platforms = [nil], skips: []) - platforms = if [true, false].include?(platforms_or_legacy_check) - Bundler::SharedHelpers.major_deprecation 2, + def for(dependencies, platforms = [nil], legacy_platforms = [nil], skips: []) + if [true, false].include?(platforms) + Bundler::SharedHelpers.feature_removed! \ "SpecSet#for received a `check` parameter, but that's no longer used and deprecated. " \ - "SpecSet#for always implicitly performs validation. Please remove this parameter", - print_caller_location: true - - legacy_platforms - else - platforms_or_legacy_check + "SpecSet#for always implicitly performs validation. Please remove this parameter" end materialize_dependencies(dependencies, platforms, skips: skips) From 40490d918b78212852b0a5ce2ffaa6c044581abf Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 14 Oct 2025 17:30:52 -0700 Subject: [PATCH 034/295] remove some memoization I don't think these methods are hotspots, and since gem specifications are sometimes serialized to yaml / marshal, I think we should remove as many instance variables as possible --- lib/rubygems/specification.rb | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 1d351f8aff97..ea7b58f20e23 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -488,8 +488,6 @@ def platform=(platform) end @platform = @new_platform.to_s - - invalidate_memoized_attributes end ## @@ -1620,14 +1618,14 @@ def build_info_file # spec's cached gem. def cache_dir - @cache_dir ||= File.join base_dir, "cache" + File.join base_dir, "cache" end ## # Returns the full path to the cached gem for this spec. def cache_file - @cache_file ||= File.join cache_dir, "#{full_name}.gem" + File.join cache_dir, "#{full_name}.gem" end ## @@ -1903,10 +1901,6 @@ def for_cache spec end - def full_name - @full_name ||= super - end - ## # Work around old bundler versions removing my methods # Can be removed once RubyGems can no longer install Bundler 2.5 @@ -2044,17 +2038,6 @@ def base_dir end end - ## - # Expire memoized instance variables that can incorrectly generate, replace - # or miss files due changes in certain attributes used to compute them. - - def invalidate_memoized_attributes - @full_name = nil - @cache_file = nil - end - - private :invalidate_memoized_attributes - def inspect # :nodoc: if $DEBUG super @@ -2093,8 +2076,6 @@ def licenses def internal_init # :nodoc: super @bin_dir = nil - @cache_dir = nil - @cache_file = nil @doc_dir = nil @ri_dir = nil @spec_dir = nil @@ -2606,9 +2587,6 @@ def validate_permissions def version=(version) @version = Gem::Version.create(version) - return if @version.nil? - - invalidate_memoized_attributes end def stubbed? From b1b963b34a59aa6e00cac04c586dc856fafc9fd3 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 15 Oct 2025 09:28:20 +0900 Subject: [PATCH 035/295] Replaced Bundler::SharedHelpers.major_deprecation to feature_removed! or feature_deprecated! MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Rodríguez <2887858+deivid-rodriguez@users.noreply.github.com> --- bundler/lib/bundler/cli.rb | 3 +-- bundler/lib/bundler/cli/config.rb | 3 +-- bundler/lib/bundler/cli/update.rb | 2 +- bundler/lib/bundler/definition.rb | 2 +- bundler/lib/bundler/dsl.rb | 8 ++---- bundler/lib/bundler/shared_helpers.rb | 19 ++----------- bundler/spec/bundler/shared_helpers_spec.rb | 30 --------------------- 7 files changed, 8 insertions(+), 59 deletions(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index 62225a352d71..9c7c1217fbf8 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -447,9 +447,8 @@ def cache D def exec(*args) if ARGV.include?("--no-keep-file-descriptors") - message = "The `--no-keep-file-descriptors` has been deprecated. `bundle exec` no longer mess with your file descriptors. Close them in the exec'd script if you need to" removed_message = "The `--no-keep-file-descriptors` has been removed. `bundle exec` no longer mess with your file descriptors. Close them in the exec'd script if you need to" - SharedHelpers.major_deprecation(2, message, removed_message: removed_message) + raise InvalidOption, removed_message end require_relative "cli/exec" diff --git a/bundler/lib/bundler/cli/config.rb b/bundler/lib/bundler/cli/config.rb index d963679085eb..6a77e4a65ea3 100644 --- a/bundler/lib/bundler/cli/config.rb +++ b/bundler/lib/bundler/cli/config.rb @@ -26,8 +26,7 @@ def base(name = nil, *value) end message = "Using the `config` command without a subcommand [list, get, set, unset] is deprecated and will be removed in the future. Use `bundle #{new_args.join(" ")}` instead." - removed_message = "Using the `config` command without a subcommand [list, get, set, unset] has been removed. Use `bundle #{new_args.join(" ")}` instead." - SharedHelpers.major_deprecation 4, message, removed_message: removed_message + SharedHelpers.feature_deprecated! message Base.new(options, name, value, self).run end diff --git a/bundler/lib/bundler/cli/update.rb b/bundler/lib/bundler/cli/update.rb index 4b4ba3c64712..9cc90acc5853 100644 --- a/bundler/lib/bundler/cli/update.rb +++ b/bundler/lib/bundler/cli/update.rb @@ -26,7 +26,7 @@ def run if Bundler.settings[:update_requires_all_flag] raise InvalidOption, "To update everything, pass the `--all` flag." end - SharedHelpers.major_deprecation 4, "Pass --all to `bundle update` to update everything" + SharedHelpers.feature_deprecated! "Pass --all to `bundle update` to update everything" elsif !full_update && options[:all] raise InvalidOption, "Cannot specify --all along with specific options." end diff --git a/bundler/lib/bundler/definition.rb b/bundler/lib/bundler/definition.rb index cc2394fda60f..6cae8964d814 100644 --- a/bundler/lib/bundler/definition.rb +++ b/bundler/lib/bundler/definition.rb @@ -372,7 +372,7 @@ def lock(file_or_preserve_unknown_sections = false, preserve_unknown_sections_or msg = "`Definition#lock` was passed a target file argument. #{suggestion}" - Bundler::SharedHelpers.major_deprecation 2, msg + Bundler::SharedHelpers.feature_removed! msg end write_lock(target_lockfile, preserve_unknown_sections) diff --git a/bundler/lib/bundler/dsl.rb b/bundler/lib/bundler/dsl.rb index d98dbd4759e9..998a8134f8e1 100644 --- a/bundler/lib/bundler/dsl.rb +++ b/bundler/lib/bundler/dsl.rb @@ -483,14 +483,10 @@ def validate_keys(command, opts, valid_keys) def normalize_source(source) case source when :gemcutter, :rubygems, :rubyforge - message = - "The source :#{source} is deprecated because HTTP requests are insecure.\n" \ - "Please change your source to 'https://rubygems.org/' if possible, or 'http://rubygems.org/' if not." removed_message = "The source :#{source} is disallowed because HTTP requests are insecure.\n" \ "Please change your source to 'https://rubygems.org/' if possible, or 'http://rubygems.org/' if not." - Bundler::SharedHelpers.major_deprecation 2, message, removed_message: removed_message - "http://rubygems.org/" + Bundler::SharedHelpers.feature_removed! removed_message when String source else @@ -509,7 +505,7 @@ def check_path_source_safety " gem 'rails'\n" \ " end\n\n" - SharedHelpers.major_deprecation(2, msg.strip) + SharedHelpers.feature_removed! msg.strip end def check_rubygems_source_safety diff --git a/bundler/lib/bundler/shared_helpers.rb b/bundler/lib/bundler/shared_helpers.rb index 41b7128d36e1..987a68afd753 100644 --- a/bundler/lib/bundler/shared_helpers.rb +++ b/bundler/lib/bundler/shared_helpers.rb @@ -125,28 +125,13 @@ def filesystem_access(path, action = :write, &block) raise GenericSystemCallError.new(e, "There was an error #{[:create, :write].include?(action) ? "creating" : "accessing"} `#{path}`.") end - def major_deprecation(major_version, message, removed_message: nil, print_caller_location: false) - if print_caller_location - caller_location = caller_locations(2, 2).first - suffix = " (called at #{caller_location.path}:#{caller_location.lineno})" - message += suffix - end - - require_relative "../bundler" - - feature_flag = Bundler.feature_flag + def feature_deprecated!(message) + return unless prints_major_deprecations? - if feature_flag.removed_major?(major_version) - feature_removed!(removed_message || message) - end - - return unless feature_flag.deprecated_major?(major_version) && prints_major_deprecations? Bundler.ui.warn("[DEPRECATED] #{message}") end def feature_removed!(message) - require_relative "../bundler" - require_relative "errors" raise RemovedError, "[REMOVED] #{message}" end diff --git a/bundler/spec/bundler/shared_helpers_spec.rb b/bundler/spec/bundler/shared_helpers_spec.rb index 5b3a9c17a7e8..0aacb93c16e2 100644 --- a/bundler/spec/bundler/shared_helpers_spec.rb +++ b/bundler/spec/bundler/shared_helpers_spec.rb @@ -515,34 +515,4 @@ end end end - - describe "#major_deprecation" do - before { allow(Bundler).to receive(:feature_flag).and_return(Bundler::FeatureFlag.new(37)) } - before { allow(Bundler.ui).to receive(:warn) } - - it "prints and raises nothing below the deprecated major version" do - subject.major_deprecation(38, "Message") - subject.major_deprecation(39, "Message", removed_message: "Removal", print_caller_location: true) - expect(Bundler.ui).not_to have_received(:warn) - end - - it "prints but does not raise _at_ the deprecated major version" do - subject.major_deprecation(37, "Message") - subject.major_deprecation(37, "Message", removed_message: "Removal") - expect(Bundler.ui).to have_received(:warn).with("[DEPRECATED] Message").twice - - subject.major_deprecation(37, "Message", print_caller_location: true) - expect(Bundler.ui).to have_received(:warn). - with(a_string_matching(/^\[DEPRECATED\] Message \(called at .*:\d+\)$/)) - end - - it "raises the appropriate errors when _past_ the deprecated major version" do - expect { subject.major_deprecation(36, "Message") }. - to raise_error(Bundler::RemovedError, "[REMOVED] Message") - expect { subject.major_deprecation(36, "Message", removed_message: "Removal") }. - to raise_error(Bundler::RemovedError, "[REMOVED] Removal") - expect { subject.major_deprecation(35, "Message", removed_message: "Removal", print_caller_location: true) }. - to raise_error(Bundler::RemovedError, "[REMOVED] Removal") - end - end end From 15be905c444865024ac404fad8ebd2539ad8b955 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 15 Oct 2025 12:23:40 +0900 Subject: [PATCH 036/295] Fixed wrong option message --- bundler/lib/bundler/cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index 9c7c1217fbf8..b8a8be82c185 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -438,7 +438,7 @@ def cache map aliases_for("cache") desc "exec [OPTIONS]", "Run the command in context of the bundle" - method_option :keep_file_descriptors, type: :boolean, default: true, banner: "Passes all file descriptors to the new processes. Default is true, and setting it to false is deprecated" + method_option :keep_file_descriptors, type: :boolean, default: true, banner: "Passes all file descriptors to the new processes. Default is true, and setting it to false is not permitted (removed)." method_option :gemfile, type: :string, required: false, banner: "Use the specified gemfile instead of Gemfile" long_desc <<-D Exec runs a command, providing it access to the gems in the bundle. While using From 89bcdfc94193279fe2793ac7a10009c3e8aabd17 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 15 Oct 2025 13:09:58 +0900 Subject: [PATCH 037/295] Removed deprecated settings methods --- bundler/lib/bundler/feature_flag.rb | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/bundler/lib/bundler/feature_flag.rb b/bundler/lib/bundler/feature_flag.rb index 8ec62fc1c9e6..dea8abedba39 100644 --- a/bundler/lib/bundler/feature_flag.rb +++ b/bundler/lib/bundler/feature_flag.rb @@ -2,29 +2,6 @@ module Bundler class FeatureFlag - def self.settings_flag(flag, &default) - unless Bundler::Settings::BOOL_KEYS.include?(flag.to_s) - raise "Cannot use `#{flag}` as a settings feature flag since it isn't a bool key" - end - - settings_method("#{flag}?", flag, &default) - end - private_class_method :settings_flag - - def self.settings_option(key, &default) - settings_method(key, key, &default) - end - private_class_method :settings_option - - def self.settings_method(name, key, &default) - define_method(name) do - value = Bundler.settings[key] - value = instance_eval(&default) if value.nil? - value - end - end - private_class_method :settings_method - (1..10).each {|v| define_method("bundler_#{v}_mode?") { @major_version >= v } } def removed_major?(target_major_version) From 06508374aa159f76306beda73857ae115792206c Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 15 Oct 2025 13:22:30 +0900 Subject: [PATCH 038/295] Restore an accidentally changes of cache_spec.rb --- bundler/spec/commands/cache_spec.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/bundler/spec/commands/cache_spec.rb b/bundler/spec/commands/cache_spec.rb index 283719bedf53..1e90f01ce7f8 100644 --- a/bundler/spec/commands/cache_spec.rb +++ b/bundler/spec/commands/cache_spec.rb @@ -207,6 +207,17 @@ expect(bundled_app("vendor/cache/myrack-1.0.0.gem")).to exist end + it "prints an error when using legacy windows rubies" do + gemfile <<-D + source "https://gem.repo1/" + gem 'myrack', :platforms => [:ruby_20, :x64_mingw_20] + D + + bundle "cache --all-platforms", raise_on_error: false + expect(err).to include("removed") + expect(bundled_app("vendor/cache/myrack-1.0.0.gem")).not_to exist + end + it "does not attempt to install gems in without groups" do build_repo4 do build_gem "uninstallable", "2.0" do |s| From c43e35c3eaeda4a898982ccbbd3d15b82ac48ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <2887858+deivid-rodriguez@users.noreply.github.com> Date: Tue, 9 Sep 2025 19:22:06 +0200 Subject: [PATCH 039/295] Test current clean after bundle update behavior --- bundler/spec/commands/clean_spec.rb | 43 ++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/bundler/spec/commands/clean_spec.rb b/bundler/spec/commands/clean_spec.rb index f2cd8868935d..6b678d0aa545 100644 --- a/bundler/spec/commands/clean_spec.rb +++ b/bundler/spec/commands/clean_spec.rb @@ -220,7 +220,7 @@ def should_not_have_gems(*gems) expect(bundled_app("symlink-path/#{Bundler.ruby_scope}/bundler/gems/foo-#{revision[0..11]}")).to exist end - it "removes old git gems" do + it "removes old git gems on bundle update" do build_git "foo-bar", path: lib_path("foo-bar") revision = revision_for(lib_path("foo-bar")) @@ -383,7 +383,7 @@ def should_not_have_gems(*gems) expect(out).to include("myrack (1.0.0)").and include("thin (1.0)") end - it "automatically cleans when path has not been set", bundler: "5" do + it "does not clean on bundle update when path has not been set" do build_repo2 install_gemfile <<-G @@ -398,8 +398,43 @@ def should_not_have_gems(*gems) bundle "update", all: true - files = Pathname.glob(bundled_app(".bundle", Bundler.ruby_scope, "*", "*")) - files.map! {|f| f.to_s.sub(bundled_app(".bundle", Bundler.ruby_scope).to_s, "") } + files = Pathname.glob(default_bundle_path("*", "*")) + files.map! {|f| f.to_s.sub(default_bundle_path.to_s, "") } + expected_files = %W[ + /bin/bundle + /bin/bundler + /cache/bundler-#{Bundler::VERSION}.gem + /cache/foo-1.0.1.gem + /cache/foo-1.0.gem + /gems/bundler-#{Bundler::VERSION} + /gems/foo-1.0 + /gems/foo-1.0.1 + /specifications/bundler-#{Bundler::VERSION}.gemspec + /specifications/foo-1.0.1.gemspec + /specifications/foo-1.0.gemspec + ] + expected_files += ["/bin/bundle.bat", "/bin/bundler.bat"] if Gem.win_platform? + + expect(files.sort).to eq(expected_files.sort) + end + + it "will automatically clean on bundle update when path has not been set", bundler: "5" do + build_repo2 + + install_gemfile <<-G + source "https://gem.repo2/" + + gem "foo" + G + + update_repo2 do + build_gem "foo", "1.0.1" + end + + bundle "update", all: true + + files = Pathname.glob(local_gem_path("*", "*")) + files.map! {|f| f.to_s.sub(local_gem_path.to_s, "") } expect(files.sort).to eq %w[ /cache/foo-1.0.1.gem /gems/foo-1.0.1 From 29a12c3d46370643fae35e6412739e05d2ce6a02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <2887858+deivid-rodriguez@users.noreply.github.com> Date: Tue, 9 Sep 2025 19:22:13 +0200 Subject: [PATCH 040/295] Use `default_cache_path` helper for brevity --- bundler/spec/install/gemfile/git_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/spec/install/gemfile/git_spec.rb b/bundler/spec/install/gemfile/git_spec.rb index 216548cf27cc..faf938383269 100644 --- a/bundler/spec/install/gemfile/git_spec.rb +++ b/bundler/spec/install/gemfile/git_spec.rb @@ -70,7 +70,7 @@ it "caches the git repo" do install_base_gemfile - expect(Dir["#{default_bundle_path}/cache/bundler/git/foo-1.0-*"]).to have_attributes size: 1 + expect(Dir["#{default_cache_path}/git/foo-1.0-*"]).to have_attributes size: 1 end it "does not write to cache on bundler/setup" do From 59b909fa743d6271b7e25570e0ec744d3c733854 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 15 Oct 2025 13:39:32 +0900 Subject: [PATCH 041/295] Removed duplicated examples with bundle install --- bundler/spec/commands/install_spec.rb | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/bundler/spec/commands/install_spec.rb b/bundler/spec/commands/install_spec.rb index 65903b3e7800..8506005746a2 100644 --- a/bundler/spec/commands/install_spec.rb +++ b/bundler/spec/commands/install_spec.rb @@ -327,21 +327,6 @@ end end - describe "doing bundle install foo" do - before do - gemfile <<-G - source "https://gem.repo1/" - gem "myrack" - G - end - - it "works" do - bundle "config set --local path vendor" - bundle "install" - expect(the_bundle).to include_gems "myrack 1.0" - end - end - it "gives useful errors if no global sources are set, and gems not installed locally, with and without a lockfile" do install_gemfile <<-G, raise_on_error: false gem "myrack" From cd1493eec4c728010452dc25f0bef0901fd093d6 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 15 Oct 2025 13:43:29 +0900 Subject: [PATCH 042/295] Added example for global path with Gemfile --- bundler/spec/other/major_deprecation_spec.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/bundler/spec/other/major_deprecation_spec.rb b/bundler/spec/other/major_deprecation_spec.rb index d701c4008dbf..1b04af763257 100644 --- a/bundler/spec/other/major_deprecation_spec.rb +++ b/bundler/spec/other/major_deprecation_spec.rb @@ -605,6 +605,21 @@ end end + context "with a global path source" do + before do + build_lib "foo" + + install_gemfile <<-G, raise_on_error: false + path "#{lib_path("foo-1.0")}" + gem 'foo' + G + end + + it "shows an error" do + expect(err).to include("You can no longer specify a path source by itself") + end + end + context "when Bundler.setup is run in a ruby script" do before do create_file "gems.rb", "source 'https://gem.repo1/'" From 6a3342541a15e80a83360aa6a6d5216ad177a065 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 15 Oct 2025 14:11:06 +0900 Subject: [PATCH 043/295] Removed obsoleted option from bundle-exec manpages --- bundler/lib/bundler/man/bundle-exec.1 | 5 +---- bundler/lib/bundler/man/bundle-exec.1.ronn | 6 +----- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/bundler/lib/bundler/man/bundle-exec.1 b/bundler/lib/bundler/man/bundle-exec.1 index 93788a850f46..24c84889b5bf 100644 --- a/bundler/lib/bundler/man/bundle-exec.1 +++ b/bundler/lib/bundler/man/bundle-exec.1 @@ -4,7 +4,7 @@ .SH "NAME" \fBbundle\-exec\fR \- Execute a command in the context of the bundle .SH "SYNOPSIS" -\fBbundle exec\fR [\-\-keep\-file\-descriptors] [\-\-gemfile=GEMFILE] \fIcommand\fR +\fBbundle exec\fR [\-\-gemfile=GEMFILE] \fIcommand\fR .SH "DESCRIPTION" This command executes the command, making all gems specified in the [\fBGemfile(5)\fR][Gemfile(5)] available to \fBrequire\fR in Ruby programs\. .P @@ -13,9 +13,6 @@ Essentially, if you would normally have run something like \fBrspec spec/my_spec Note that \fBbundle exec\fR does not require that an executable is available on your shell's \fB$PATH\fR\. .SH "OPTIONS" .TP -\fB\-\-keep\-file\-descriptors\fR -Passes all file descriptors to the new processes\. Default is true from bundler version 2\.2\.26\. Setting it to false is now deprecated\. -.TP \fB\-\-gemfile=GEMFILE\fR Use the specified gemfile instead of [\fBGemfile(5)\fR][Gemfile(5)]\. .SH "BUNDLE INSTALL \-\-BINSTUBS" diff --git a/bundler/lib/bundler/man/bundle-exec.1.ronn b/bundler/lib/bundler/man/bundle-exec.1.ronn index 3d3f0eed7b89..e51a66a0840c 100644 --- a/bundler/lib/bundler/man/bundle-exec.1.ronn +++ b/bundler/lib/bundler/man/bundle-exec.1.ronn @@ -3,7 +3,7 @@ bundle-exec(1) -- Execute a command in the context of the bundle ## SYNOPSIS -`bundle exec` [--keep-file-descriptors] [--gemfile=GEMFILE] +`bundle exec` [--gemfile=GEMFILE] ## DESCRIPTION @@ -20,10 +20,6 @@ available on your shell's `$PATH`. ## OPTIONS -* `--keep-file-descriptors`: - Passes all file descriptors to the new processes. Default is true from - bundler version 2.2.26. Setting it to false is now deprecated. - * `--gemfile=GEMFILE`: Use the specified gemfile instead of [`Gemfile(5)`][Gemfile(5)]. From 54e2781b73b5687911245077f46308792879709c Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 16 Oct 2025 14:05:17 -0700 Subject: [PATCH 044/295] Restrict what schemes are acceptable in the remote fetcher The remote fetcher only works with certain schemes (`http`, `https`, `s3`, and `file`). It's possible for other schemes to show up in this code and it can cause bugs. Before this patch, doing `gem install path:///hello` would result in an infinite loop because this function would do `send "fetch_path"`, calling itself forever. Now we see an exception. I think we should validate gem names earlier, but it's really best practice to restrict the possible strings passed to `send`. --- lib/rubygems/remote_fetcher.rb | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/rubygems/remote_fetcher.rb b/lib/rubygems/remote_fetcher.rb index 6ed0842963e6..01788a6a5f17 100644 --- a/lib/rubygems/remote_fetcher.rb +++ b/lib/rubygems/remote_fetcher.rb @@ -245,11 +245,14 @@ def fetch_http(uri, last_modified = nil, head = false, depth = 0) def fetch_path(uri, mtime = nil, head = false) uri = Gem::Uri.new uri - unless uri.scheme - raise ArgumentError, "uri scheme is invalid: #{uri.scheme.inspect}" - end - - data = send "fetch_#{uri.scheme}", uri, mtime, head + method = { + "http" => "fetch_http", + "https" => "fetch_http", + "s3" => "fetch_s3", + "file" => "fetch_file", + }.fetch(uri.scheme) { raise ArgumentError, "uri scheme is invalid: #{uri.scheme.inspect}" } + + data = send method, uri, mtime, head if data && !head && uri.to_s.end_with?(".gz") begin From 9b3a5a8ae9cd8bc3666185d5c09c9fea403c80c6 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 17 Oct 2025 20:00:55 +0900 Subject: [PATCH 045/295] Postpone to remove legacy mingw platform --- bundler/lib/bundler/lockfile_parser.rb | 2 +- bundler/spec/other/major_deprecation_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bundler/lib/bundler/lockfile_parser.rb b/bundler/lib/bundler/lockfile_parser.rb index 07b5bd75147c..ac0ce1ef3d0a 100644 --- a/bundler/lib/bundler/lockfile_parser.rb +++ b/bundler/lib/bundler/lockfile_parser.rb @@ -142,7 +142,7 @@ def initialize(lockfile, strict: false) end if @platforms.include?(Gem::Platform::X64_MINGW_LEGACY) - SharedHelpers.feature_removed!("Found x64-mingw32 in lockfile, which is no longer supported as of Bundler 4.0.") + SharedHelpers.feature_deprecated!("Found x64-mingw32 in lockfile, which is deprecated and will be removed in the future.") end @most_specific_locked_platform = @platforms.min_by do |bundle_platform| diff --git a/bundler/spec/other/major_deprecation_spec.rb b/bundler/spec/other/major_deprecation_spec.rb index 1b04af763257..947800be22ba 100644 --- a/bundler/spec/other/major_deprecation_spec.rb +++ b/bundler/spec/other/major_deprecation_spec.rb @@ -601,7 +601,7 @@ it "raises a helpful error" do bundle "install", raise_on_error: false - expect(err).to include("Found x64-mingw32 in lockfile, which is no longer supported as of Bundler 4.0.") + expect(err).to include("Found x64-mingw32 in lockfile, which is deprecated and will be removed in the future.") end end From b7fb39461301fd3dcb562fdc06da578b859b15f8 Mon Sep 17 00:00:00 2001 From: Ufuk Kayserilioglu Date: Fri, 17 Oct 2025 15:10:26 +0300 Subject: [PATCH 046/295] Update repo owner in `sync-ruby` --- .github/workflows/sync-ruby.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync-ruby.yml b/.github/workflows/sync-ruby.yml index 38b489a40875..79096bb2b1a1 100644 --- a/.github/workflows/sync-ruby.yml +++ b/.github/workflows/sync-ruby.yml @@ -6,7 +6,7 @@ jobs: sync: name: Sync ruby runs-on: ubuntu-latest - if: ${{ github.repository_owner == 'rubygems' }} + if: ${{ github.repository_owner == 'ruby' }} steps: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: From 1ba8eb4ab3312736105c12093c924642240475aa Mon Sep 17 00:00:00 2001 From: Mat Sadler Date: Fri, 17 Oct 2025 19:49:12 -0700 Subject: [PATCH 047/295] update magnus version in rust extension gem template --- bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt b/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt index 0ebce0e4a0c6..c0dc63fbfa3a 100644 --- a/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt +++ b/bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt @@ -12,4 +12,4 @@ publish = false crate-type = ["cdylib"] [dependencies] -magnus = { version = "0.6.2" } +magnus = { version = "0.8.2" } From c637007e91b70e59a204971d8d03a1c2f6aa9da7 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 20 Oct 2025 10:23:20 +0900 Subject: [PATCH 048/295] Now ruby/rubygems is the canonical repository url --- bundler/lib/bundler/cli/issue.rb | 4 ++-- bundler/lib/bundler/friendly_errors.rb | 4 ++-- bundler/lib/bundler/source/git/git_proxy.rb | 2 +- bundler/spec/bundler/bundler_spec.rb | 6 +++--- bundler/spec/bundler/friendly_errors_spec.rb | 8 ++++---- .../spec/bundler/source/git/git_proxy_spec.rb | 12 ++++++------ bundler/spec/commands/exec_spec.rb | 18 +++++++++--------- bundler/spec/lock/lockfile_spec.rb | 2 +- lib/rubygems.rb | 6 +++--- lib/rubygems/ext/cargo_builder.rb | 2 +- test/rubygems/test_bundled_ca.rb | 2 +- .../rubygems/test_gem_commands_info_command.rb | 2 +- test/rubygems/test_gem_ext_cmake_builder.rb | 2 +- test/rubygems/test_gem_ext_rake_builder.rb | 2 +- 14 files changed, 36 insertions(+), 36 deletions(-) diff --git a/bundler/lib/bundler/cli/issue.rb b/bundler/lib/bundler/cli/issue.rb index fbe9184d121f..cbfb7da2d872 100644 --- a/bundler/lib/bundler/cli/issue.rb +++ b/bundler/lib/bundler/cli/issue.rb @@ -10,7 +10,7 @@ def run be sure to check out these resources: 1. Check out our troubleshooting guide for quick fixes to common issues: - https://github.com/rubygems/rubygems/blob/master/doc/bundler/TROUBLESHOOTING.md + https://github.com/ruby/rubygems/blob/master/doc/bundler/TROUBLESHOOTING.md 2. Instructions for common Bundler uses can be found on the documentation site: https://bundler.io/ @@ -22,7 +22,7 @@ def run still aren't working the way you expect them to, please let us know so that we can diagnose and help fix the problem you're having, by filling in the new issue form located at - https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md, + https://github.com/ruby/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md, and copy and pasting the information below. EOS diff --git a/bundler/lib/bundler/friendly_errors.rb b/bundler/lib/bundler/friendly_errors.rb index 8a5ab2e0255c..5e8eaee6bbc4 100644 --- a/bundler/lib/bundler/friendly_errors.rb +++ b/bundler/lib/bundler/friendly_errors.rb @@ -104,12 +104,12 @@ def issues_url(https://github.com/exception) message = message.split("-").first if exception.is_a?(Errno) require "cgi/escape" require "cgi/util" unless defined?(CGI::EscapeExt) - "https://github.com/rubygems/rubygems/search?q=" \ + "https://github.com/ruby/rubygems/search?q=" \ "#{CGI.escape(message)}&type=Issues" end def new_issue_url - "https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md" + "https://github.com/ruby/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md" end end diff --git a/bundler/lib/bundler/source/git/git_proxy.rb b/bundler/lib/bundler/source/git/git_proxy.rb index f613377cb202..b6f8460400f8 100644 --- a/bundler/lib/bundler/source/git/git_proxy.rb +++ b/bundler/lib/bundler/source/git/git_proxy.rb @@ -16,7 +16,7 @@ class GitNotAllowedError < GitError def initialize(command) msg = String.new msg << "Bundler is trying to run `#{command}` at runtime. You probably need to run `bundle install`. However, " - msg << "this error message could probably be more useful. Please submit a ticket at https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md " + msg << "this error message could probably be more useful. Please submit a ticket at https://github.com/ruby/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md " msg << "with steps to reproduce as well as the following\n\nCALLER: #{caller.join("\n")}" super msg end diff --git a/bundler/spec/bundler/bundler_spec.rb b/bundler/spec/bundler/bundler_spec.rb index 4db8c00e5227..bddcbdaef39c 100644 --- a/bundler/spec/bundler/bundler_spec.rb +++ b/bundler/spec/bundler/bundler_spec.rb @@ -52,10 +52,10 @@ s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably" s.email = ["team@bundler.io"] s.homepage = "https://bundler.io/" - s.metadata = { "bug_tracker_uri" => "https://github.com/rubygems/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler", - "changelog_uri" => "https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md", + s.metadata = { "bug_tracker_uri" => "https://github.com/ruby/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler", + "changelog_uri" => "https://github.com/ruby/rubygems/blob/master/bundler/CHANGELOG.md", "homepage_uri" => "https://bundler.io/", - "source_code_uri" => "https://github.com/rubygems/rubygems/tree/master/bundler" } + "source_code_uri" => "https://github.com/ruby/rubygems/tree/master/bundler" } s.require_paths = ["lib"] s.required_ruby_version = Gem::Requirement.new([">= 2.6.0"]) s.required_rubygems_version = Gem::Requirement.new([">= 3.0.1"]) diff --git a/bundler/spec/bundler/friendly_errors_spec.rb b/bundler/spec/bundler/friendly_errors_spec.rb index d6a9d4813dba..426e3c856d8f 100644 --- a/bundler/spec/bundler/friendly_errors_spec.rb +++ b/bundler/spec/bundler/friendly_errors_spec.rb @@ -197,7 +197,7 @@ it "generates a search URL for the exception message" do exception = Exception.new("Exception message") - expect(Bundler::FriendlyErrors.issues_url(https://github.com/exception)).to eq("https://github.com/rubygems/rubygems/search?q=Exception+message&type=Issues") + expect(Bundler::FriendlyErrors.issues_url(https://github.com/exception)).to eq("https://github.com/ruby/rubygems/search?q=Exception+message&type=Issues") end it "generates a search URL for only the first line of a multi-line exception message" do @@ -206,7 +206,7 @@ Second line of the exception message END - expect(Bundler::FriendlyErrors.issues_url(https://github.com/exception)).to eq("https://github.com/rubygems/rubygems/search?q=First+line+of+the+exception+message&type=Issues") + expect(Bundler::FriendlyErrors.issues_url(https://github.com/exception)).to eq("https://github.com/ruby/rubygems/search?q=First+line+of+the+exception+message&type=Issues") end it "generates the url without colons" do @@ -215,7 +215,7 @@ END issues_url = Bundler::FriendlyErrors.issues_url(https://github.com/exception) expect(issues_url).not_to include("%3A") - expect(issues_url).to eq("https://github.com/rubygems/rubygems/search?q=#{CGI.escape("Exception with colons ")}&type=Issues") + expect(issues_url).to eq("https://github.com/ruby/rubygems/search?q=#{CGI.escape("Exception with colons ")}&type=Issues") end it "removes information after - for Errono::EACCES" do @@ -225,7 +225,7 @@ allow(exception).to receive(:is_a?).with(Errno).and_return(true) issues_url = Bundler::FriendlyErrors.issues_url(https://github.com/exception) expect(issues_url).not_to include("/Users/foo/bar") - expect(issues_url).to eq("https://github.com/rubygems/rubygems/search?q=#{CGI.escape("Errno EACCES Permission denied @ dir_s_mkdir ")}&type=Issues") + expect(issues_url).to eq("https://github.com/ruby/rubygems/search?q=#{CGI.escape("Errno EACCES Permission denied @ dir_s_mkdir ")}&type=Issues") end end end diff --git a/bundler/spec/bundler/source/git/git_proxy_spec.rb b/bundler/spec/bundler/source/git/git_proxy_spec.rb index 492eee64444b..b2b7ab5c5400 100644 --- a/bundler/spec/bundler/source/git/git_proxy_spec.rb +++ b/bundler/spec/bundler/source/git/git_proxy_spec.rb @@ -2,7 +2,7 @@ RSpec.describe Bundler::Source::Git::GitProxy do let(:path) { Pathname("path") } - let(:uri) { "https://github.com/rubygems/rubygems.git" } + let(:uri) { "https://github.com/ruby/rubygems.git" } let(:ref) { nil } let(:branch) { nil } let(:tag) { nil } @@ -64,7 +64,7 @@ it "adds username and password to URI" do Bundler.settings.temporary(uri => "u:p") do allow(git_proxy).to receive(:git_local).with("--version").and_return("git version 2.14.0") - expect(git_proxy).to receive(:capture).with([*base_clone_args, "--", "https://u:p@github.com/rubygems/rubygems.git", path.to_s], nil).and_return(["", "", clone_result]) + expect(git_proxy).to receive(:capture).with([*base_clone_args, "--", "https://u:p@github.com/ruby/rubygems.git", path.to_s], nil).and_return(["", "", clone_result]) subject.checkout end end @@ -72,13 +72,13 @@ it "adds username and password to URI for host" do Bundler.settings.temporary("github.com" => "u:p") do allow(git_proxy).to receive(:git_local).with("--version").and_return("git version 2.14.0") - expect(git_proxy).to receive(:capture).with([*base_clone_args, "--", "https://u:p@github.com/rubygems/rubygems.git", path.to_s], nil).and_return(["", "", clone_result]) + expect(git_proxy).to receive(:capture).with([*base_clone_args, "--", "https://u:p@github.com/ruby/rubygems.git", path.to_s], nil).and_return(["", "", clone_result]) subject.checkout end end it "does not add username and password to mismatched URI" do - Bundler.settings.temporary("https://u:p@github.com/rubygems/rubygems-mismatch.git" => "u:p") do + Bundler.settings.temporary("https://u:p@github.com/ruby/rubygems-mismatch.git" => "u:p") do allow(git_proxy).to receive(:git_local).with("--version").and_return("git version 2.14.0") expect(git_proxy).to receive(:capture).with([*base_clone_args, "--", uri, path.to_s], nil).and_return(["", "", clone_result]) subject.checkout @@ -87,7 +87,7 @@ it "keeps original userinfo" do Bundler.settings.temporary("github.com" => "u:p") do - original = "https://orig:info@github.com/rubygems/rubygems.git" + original = "https://orig:info@github.com/ruby/rubygems.git" git_proxy = described_class.new(Pathname("path"), original, options) allow(git_proxy).to receive(:git_local).with("--version").and_return("git version 2.14.0") expect(git_proxy).to receive(:capture).with([*base_clone_args, "--", original, path.to_s], nil).and_return(["", "", clone_result]) @@ -199,7 +199,7 @@ end context "URI is HTTP" do - let(:uri) { "http://github.com/rubygems/rubygems.git" } + let(:uri) { "http://github.com/ruby/rubygems.git" } let(:without_depth_arguments) { ["clone", "--bare", "--no-hardlinks", "--quiet", "--no-tags", "--single-branch"] } let(:fail_clone_result) { double(Process::Status, success?: false) } diff --git a/bundler/spec/commands/exec_spec.rb b/bundler/spec/commands/exec_spec.rb index af8bfc71f194..03f1d839c76c 100644 --- a/bundler/spec/commands/exec_spec.rb +++ b/bundler/spec/commands/exec_spec.rb @@ -95,7 +95,7 @@ end it "respects custom process title when loading through ruby" do - skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? + skip "https://github.com/ruby/rubygems/issues/3351" if Gem.win_platform? script_that_changes_its_own_title_and_checks_if_picked_up_by_ps_unix_utility = <<~'RUBY' Process.setproctitle("1-2-3-4-5-6-7") @@ -120,7 +120,7 @@ end it "handles --keep-file-descriptors" do - skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? + skip "https://github.com/ruby/rubygems/issues/3351" if Gem.win_platform? require "tempfile" @@ -153,7 +153,7 @@ end it "can run a command named --verbose" do - skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? + skip "https://github.com/ruby/rubygems/issues/3351" if Gem.win_platform? install_gemfile "source \"https://gem.repo1/"; gem \"myrack\"" File.open(bundled_app("--verbose"), "w") do |f| @@ -805,7 +805,7 @@ def bin_path(a,b,c) end it "runs" do - skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? + skip "https://github.com/ruby/rubygems/issues/3351" if Gem.win_platform? subject expect(exitstatus).to eq(exit_code) @@ -1042,7 +1042,7 @@ def bin_path(a,b,c) RUBY it "receives the signal" do - skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? + skip "https://github.com/ruby/rubygems/issues/3351" if Gem.win_platform? bundle("exec #{path}") do |_, o, thr| o.gets # Consumes 'Started' and ensures that thread has started @@ -1065,7 +1065,7 @@ def bin_path(a,b,c) RUBY it "makes sure no unexpected signals are restored to DEFAULT" do - skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? + skip "https://github.com/ruby/rubygems/issues/3351" if Gem.win_platform? test_signals.each do |n| Signal.trap(n, "IGNORE") @@ -1082,7 +1082,7 @@ def bin_path(a,b,c) context "nested bundle exec" do context "when bundle in a local path" do before do - skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? + skip "https://github.com/ruby/rubygems/issues/3351" if Gem.win_platform? gemfile <<-G source "https://gem.repo1/" @@ -1106,7 +1106,7 @@ def bin_path(a,b,c) context "when Kernel.require uses extra monkeypatches" do before do - skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? + skip "https://github.com/ruby/rubygems/issues/3351" if Gem.win_platform? install_gemfile "source \"https://gem.repo1/"" end @@ -1211,7 +1211,7 @@ def require(path) it "only leaves the default gem in the stdlib available" do default_openssl_version = ruby "require 'openssl'; puts OpenSSL::VERSION" - skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? + skip "https://github.com/ruby/rubygems/issues/3351" if Gem.win_platform? install_gemfile "source \"https://gem.repo1/"" # must happen before installing the broken system gem diff --git a/bundler/spec/lock/lockfile_spec.rb b/bundler/spec/lock/lockfile_spec.rb index 02e53454d89a..d56f7834eb4f 100644 --- a/bundler/spec/lock/lockfile_spec.rb +++ b/bundler/spec/lock/lockfile_spec.rb @@ -982,7 +982,7 @@ update_repo2 do # Capistrano did this (at least until version 2.5.10) # RubyGems 2.2 doesn't allow the specifying of a dependency twice - # See https://github.com/rubygems/rubygems/commit/03dbac93a3396a80db258d9bc63500333c25bd2f + # See https://github.com/ruby/rubygems/commit/03dbac93a3396a80db258d9bc63500333c25bd2f build_gem "double_deps", "1.0", skip_validation: true do |s| s.add_dependency "net-ssh", ">= 1.0.0" s.add_dependency "net-ssh" diff --git a/lib/rubygems.rb b/lib/rubygems.rb index b523544e198f..db1da659f9d5 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -37,7 +37,7 @@ module Gem # Further RubyGems documentation can be found at: # # * {RubyGems Guides}[https://guides.rubygems.org] -# * {RubyGems API}[https://www.rubydoc.info/github/rubygems/rubygems] (also available from +# * {RubyGems API}[https://www.rubydoc.info/github/ruby/rubygems] (also available from # gem server) # # == RubyGems Plugins @@ -69,7 +69,7 @@ module Gem # == Bugs # # You can submit bugs to the -# {RubyGems bug tracker}[https://github.com/rubygems/rubygems/issues] +# {RubyGems bug tracker}[https://github.com/ruby/rubygems/issues] # on GitHub # # == Credits @@ -105,7 +105,7 @@ module Gem # # == License # -# See {LICENSE.txt}[https://github.com/rubygems/rubygems/blob/master/LICENSE.txt] for permissions. +# See {LICENSE.txt}[https://github.com/ruby/rubygems/blob/master/LICENSE.txt] for permissions. # # Thanks! # diff --git a/lib/rubygems/ext/cargo_builder.rb b/lib/rubygems/ext/cargo_builder.rb index e58d0bb75ccb..6bf3b405ad7c 100644 --- a/lib/rubygems/ext/cargo_builder.rb +++ b/lib/rubygems/ext/cargo_builder.rb @@ -159,7 +159,7 @@ def platform_specific_rustc_args(dest_dir, flags = []) def linker_args cc_flag = self.class.shellsplit(makefile_config("CC")) # Avoid to ccache like tool from Rust build - # see https://github.com/rubygems/rubygems/pull/8521#issuecomment-2689854359 + # see https://github.com/ruby/rubygems/pull/8521#issuecomment-2689854359 # ex. CC="ccache gcc" or CC="sccache clang --any --args" cc_flag.shift if cc_flag.size >= 2 && !cc_flag[1].start_with?("-") linker = cc_flag.shift diff --git a/test/rubygems/test_bundled_ca.rb b/test/rubygems/test_bundled_ca.rb index a737185681ee..cc8fa884cacd 100644 --- a/test/rubygems/test_bundled_ca.rb +++ b/test/rubygems/test_bundled_ca.rb @@ -12,7 +12,7 @@ # = Testing Bundled CA # -# The tested hosts are explained in detail here: https://github.com/rubygems/rubygems/commit/5e16a5428f973667cabfa07e94ff939e7a83ebd9 +# The tested hosts are explained in detail here: https://github.com/ruby/rubygems/commit/5e16a5428f973667cabfa07e94ff939e7a83ebd9 # class TestGemBundledCA < Gem::TestCase diff --git a/test/rubygems/test_gem_commands_info_command.rb b/test/rubygems/test_gem_commands_info_command.rb index f020d380d296..dab7cfb836b7 100644 --- a/test/rubygems/test_gem_commands_info_command.rb +++ b/test/rubygems/test_gem_commands_info_command.rb @@ -13,7 +13,7 @@ def setup def gem(name, version = "1.0") spec = quick_gem name do |gem| gem.summary = "test gem" - gem.homepage = "https://github.com/rubygems/rubygems" + gem.homepage = "https://github.com/ruby/rubygems" gem.files = %W[lib/#{name}.rb Rakefile] gem.authors = ["Colby", "Jack"] gem.license = "MIT" diff --git a/test/rubygems/test_gem_ext_cmake_builder.rb b/test/rubygems/test_gem_ext_cmake_builder.rb index e2bdedc71054..b9b57084d4fd 100644 --- a/test/rubygems/test_gem_ext_cmake_builder.rb +++ b/test/rubygems/test_gem_ext_cmake_builder.rb @@ -7,7 +7,7 @@ class TestGemExtCmakeBuilder < Gem::TestCase def setup super - # Details: https://github.com/rubygems/rubygems/issues/1270#issuecomment-177368340 + # Details: https://github.com/ruby/rubygems/issues/1270#issuecomment-177368340 pend "CmakeBuilder doesn't work on Windows." if Gem.win_platform? require "open3" diff --git a/test/rubygems/test_gem_ext_rake_builder.rb b/test/rubygems/test_gem_ext_rake_builder.rb index bd72c1aa08c5..68ad15b044f0 100644 --- a/test/rubygems/test_gem_ext_rake_builder.rb +++ b/test/rubygems/test_gem_ext_rake_builder.rb @@ -29,7 +29,7 @@ def test_class_build end end - # https://github.com/rubygems/rubygems/pull/1819 + # https://github.com/ruby/rubygems/pull/1819 # # It should not fail with a non-empty args list either def test_class_build_with_args From 749b498822f4ce61cd694ce852e8b5afa4d9e47e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 20 Oct 2025 14:01:14 +0900 Subject: [PATCH 049/295] Use ruby/rubygems instead of rubygems/rubygems at document, tool and configurations --- .github/ISSUE_TEMPLATE/config.yml | 2 +- .../ISSUE_TEMPLATE/rubygems-related-issue.md | 2 +- .github/config.yml | 2 +- .github/pull_request_template.md | 4 +- .github/workflows/daily-bundler.yml | 4 +- .github/workflows/daily-rubygems.yml | 4 +- .github/workflows/ruby-core.yml | 2 +- .github/workflows/weekly-update.yml | 2 +- CHANGELOG.md | 2646 ++++++++--------- README.md | 4 +- bundler/CHANGELOG.md | 1834 ++++++------ bundler/README.md | 8 +- bundler/bundler.gemspec | 6 +- bundler/lib/bundler/man/bundle-config.1 | 2 +- bundler/lib/bundler/man/bundle-config.1.ronn | 2 +- doc/bundler/POLICIES.md | 2 +- doc/bundler/README.md | 2 +- doc/bundler/TROUBLESHOOTING.md | 2 +- doc/bundler/UPGRADING.md | 2 +- doc/bundler/contributing/BUG_TRIAGE.md | 2 +- doc/bundler/contributing/COMMUNITY.md | 2 +- doc/bundler/contributing/HOW_YOU_CAN_HELP.md | 10 +- doc/bundler/contributing/README.md | 2 +- doc/bundler/development/NEW_FEATURES.md | 2 +- doc/bundler/development/SETUP.md | 2 +- doc/bundler/documentation/WRITING.md | 6 +- doc/rubygems/CONTRIBUTING.md | 2 +- rubygems-update.gemspec | 6 +- tool/release.rb | 10 +- 29 files changed, 2288 insertions(+), 2288 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 545e18b0f037..7448eede8358 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -3,4 +3,4 @@ blank_issues_enabled: true contact_links: - name: Installation or Execution failed about: Check the Discussions section for reports of a failing installation. Submit your experience (plus logs) if you cannot find reports similar to yours. - url: https://github.com/rubygems/rubygems/discussions + url: https://github.com/ruby/rubygems/discussions diff --git a/.github/ISSUE_TEMPLATE/rubygems-related-issue.md b/.github/ISSUE_TEMPLATE/rubygems-related-issue.md index a56b6356812e..a91556b0e14b 100644 --- a/.github/ISSUE_TEMPLATE/rubygems-related-issue.md +++ b/.github/ISSUE_TEMPLATE/rubygems-related-issue.md @@ -10,7 +10,7 @@ assignees: '' diff --git a/.github/config.yml b/.github/config.yml index c3c55ef188b6..799220edaf20 100644 --- a/.github/config.yml +++ b/.github/config.yml @@ -5,4 +5,4 @@ newPRWelcomeComment: | If you have any questions or concerns that you wish to ask, feel free to leave a comment in this PR or join our #rubygems or #bundler channel on [Slack](http://slack.bundler.io/). - For more information about contributing to the RubyGems project feel free to review our [CONTRIBUTING](https://github.com/rubygems/rubygems/blob/master/doc/rubygems/CONTRIBUTING.md) guide + For more information about contributing to the RubyGems project feel free to review our [CONTRIBUTING](https://github.com/ruby/rubygems/blob/master/doc/rubygems/CONTRIBUTING.md) guide diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index fafe9a21f2d5..c42026e61753 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -17,6 +17,6 @@ alternatives, explain why you end up choosing the current implementation --> ## Make sure the following tasks are checked - [ ] Describe the problem / feature -- [ ] Write [tests](https://github.com/rubygems/rubygems/blob/master/doc/bundler/development/PULL_REQUESTS.md#tests) for features and bug fixes +- [ ] Write [tests](https://github.com/ruby/rubygems/blob/master/doc/bundler/development/PULL_REQUESTS.md#tests) for features and bug fixes - [ ] Write code to solve the problem -- [ ] Make sure you follow the [current code style](https://github.com/rubygems/rubygems/blob/master/doc/bundler/development/PULL_REQUESTS.md#code-formatting) and [write meaningful commit messages without tags](https://github.com/rubygems/rubygems/blob/master/doc/bundler/development/PULL_REQUESTS.md#commit-messages) +- [ ] Make sure you follow the [current code style](https://github.com/ruby/rubygems/blob/master/doc/bundler/development/PULL_REQUESTS.md#code-formatting) and [write meaningful commit messages without tags](https://github.com/ruby/rubygems/blob/master/doc/bundler/development/PULL_REQUESTS.md#commit-messages) diff --git a/.github/workflows/daily-bundler.yml b/.github/workflows/daily-bundler.yml index ae76395eb563..1a4fb298dc67 100644 --- a/.github/workflows/daily-bundler.yml +++ b/.github/workflows/daily-bundler.yml @@ -16,7 +16,7 @@ jobs: daily_bundler: name: Bundler (ruby-head) runs-on: ubuntu-24.04 - if: github.repository == 'rubygems/rubygems' + if: github.repository == 'ruby/rubygems' env: RGV: .. steps: @@ -42,7 +42,7 @@ jobs: bin/rake spec:all - name: Get previous status if: always() - run: echo "OLD_STATUS=$(curl -sS 'https://api.github.com/repos/rubygems/rubygems/actions/workflows/daily-bundler.yml/runs?event=schedule&branch=master' | jq '.workflow_runs | .[1].conclusion')" >> $GITHUB_ENV + run: echo "OLD_STATUS=$(curl -sS 'https://api.github.com/repos/ruby/rubygems/actions/workflows/daily-bundler.yml/runs?event=schedule&branch=master' | jq '.workflow_runs | .[1].conclusion')" >> $GITHUB_ENV - uses: 8398a7/action-slack@77eaa4f1c608a7d68b38af4e3f739dcd8cba273e # v3.19.0 with: diff --git a/.github/workflows/daily-rubygems.yml b/.github/workflows/daily-rubygems.yml index 22d3919de004..e047e8a6f230 100644 --- a/.github/workflows/daily-rubygems.yml +++ b/.github/workflows/daily-rubygems.yml @@ -12,7 +12,7 @@ jobs: daily_rubygems: name: Rubygems (${{ matrix.ruby }}) runs-on: ${{ matrix.os }} - if: github.repository == 'rubygems/rubygems' + if: github.repository == 'ruby/rubygems' strategy: fail-fast: false matrix: @@ -50,7 +50,7 @@ jobs: - name: Get previous status if: always() - run: echo "OLD_STATUS=$(curl -sS 'https://api.github.com/repos/rubygems/rubygems/actions/workflows/daily-rubygems.yml/runs?event=schedule&branch=master' | jq '.workflow_runs | .[1].conclusion')" >> $GITHUB_ENV + run: echo "OLD_STATUS=$(curl -sS 'https://api.github.com/repos/ruby/rubygems/actions/workflows/daily-rubygems.yml/runs?event=schedule&branch=master' | jq '.workflow_runs | .[1].conclusion')" >> $GITHUB_ENV - uses: 8398a7/action-slack@77eaa4f1c608a7d68b38af4e3f739dcd8cba273e # v3.19.0 with: diff --git a/.github/workflows/ruby-core.yml b/.github/workflows/ruby-core.yml index fdcdca06590c..d3c40656be90 100644 --- a/.github/workflows/ruby-core.yml +++ b/.github/workflows/ruby-core.yml @@ -42,7 +42,7 @@ jobs: working-directory: ruby/ruby - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: - path: rubygems/rubygems + path: ruby/rubygems persist-credentials: false - name: Sync tools run: | diff --git a/.github/workflows/weekly-update.yml b/.github/workflows/weekly-update.yml index 5e9cb8c7b130..a8e894013dea 100644 --- a/.github/workflows/weekly-update.yml +++ b/.github/workflows/weekly-update.yml @@ -12,7 +12,7 @@ jobs: weekly_update: name: Rubygems weekly update runs-on: ${{ matrix.os }} - if: github.repository == 'rubygems/rubygems' + if: github.repository == 'ruby/rubygems' strategy: matrix: os: [ubuntu-24.04] diff --git a/CHANGELOG.md b/CHANGELOG.md index f4913437f7e6..42b9b93bb217 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,25 +6,25 @@ * `gem sources --prepend` and `--append` allow finer grained control of sources. Pull request - [#8901](https://github.com/rubygems/rubygems/pull/8901) by martinemde + [#8901](https://github.com/ruby/rubygems/pull/8901) by martinemde * Improve `gem sources --remove` output. Pull request - [#8909](https://github.com/rubygems/rubygems/pull/8909) by + [#8909](https://github.com/ruby/rubygems/pull/8909) by deivid-rodriguez * Make `gem sources` output more clear. Pull request - [#8938](https://github.com/rubygems/rubygems/pull/8938) by + [#8938](https://github.com/ruby/rubygems/pull/8938) by deivid-rodriguez * Use IMDSv2 for S3 instance credentials. Pull request - [#7709](https://github.com/rubygems/rubygems/pull/7709) by + [#7709](https://github.com/ruby/rubygems/pull/7709) by folbricht-stripe * Installs bundler 2.7.2 as a default gem. ### Bug fixes: * Fix "did you mean" suggestions for unknown commands. Pull request - [#8948](https://github.com/rubygems/rubygems/pull/8948) by + [#8948](https://github.com/ruby/rubygems/pull/8948) by deivid-rodriguez * Fix trailing slashes not considered by `gem sources --remove`. Pull - request [#8939](https://github.com/rubygems/rubygems/pull/8939) by + request [#8939](https://github.com/ruby/rubygems/pull/8939) by deivid-rodriguez ## 3.7.1 / 2025-07-21 @@ -32,109 +32,109 @@ ### Enhancements: * Fix regression in presence of RVM gems. Pull request - [#8854](https://github.com/rubygems/rubygems/pull/8854) by + [#8854](https://github.com/ruby/rubygems/pull/8854) by deivid-rodriguez * Restore parsing "--" as an unknown platform rather than crashing. Pull - request [#8846](https://github.com/rubygems/rubygems/pull/8846) by + request [#8846](https://github.com/ruby/rubygems/pull/8846) by deivid-rodriguez * Installs bundler 2.7.1 as a default gem. ### Documentation: * Use mailto link in Code of Conduct. Pull request - [#8849](https://github.com/rubygems/rubygems/pull/8849) by + [#8849](https://github.com/ruby/rubygems/pull/8849) by deivid-rodriguez * Update Code of Conduct email to conduct@rubygems.org. Pull request - [#8848](https://github.com/rubygems/rubygems/pull/8848) by indirect + [#8848](https://github.com/ruby/rubygems/pull/8848) by indirect ## 3.7.0 / 2025-07-16 ### Security: * Update vendored resolv to 0.6.2. Pull request - [#8831](https://github.com/rubygems/rubygems/pull/8831) by hsbt + [#8831](https://github.com/ruby/rubygems/pull/8831) by hsbt ### Breaking changes: * Stop generating binstubs with support for RubyGems before 2.6.2. Pull - request [#8833](https://github.com/rubygems/rubygems/pull/8833) by + request [#8833](https://github.com/ruby/rubygems/pull/8833) by deivid-rodriguez * Drop support for Ruby 3.1. Pull request - [#8634](https://github.com/rubygems/rubygems/pull/8634) by segiddins + [#8634](https://github.com/ruby/rubygems/pull/8634) by segiddins ### Enhancements: * Update SPDX license list as of 2025-07-01. Pull request - [#8829](https://github.com/rubygems/rubygems/pull/8829) by + [#8829](https://github.com/ruby/rubygems/pull/8829) by github-actions[bot] * Add `push_rubygem` as a default scope for `gem signin` command. Pull - request [#8672](https://github.com/rubygems/rubygems/pull/8672) by hsbt + request [#8672](https://github.com/ruby/rubygems/pull/8672) by hsbt * Update bundled tls certs. Pull request - [#8731](https://github.com/rubygems/rubygems/pull/8731) by segiddins + [#8731](https://github.com/ruby/rubygems/pull/8731) by segiddins * Install the best matching gem for the current platform in `gem install`. - Pull request [#8751](https://github.com/rubygems/rubygems/pull/8751) by + Pull request [#8751](https://github.com/ruby/rubygems/pull/8751) by segiddins * Move most of `Bundler::GemHelpers` to `Gem::Platform`. Pull request - [#8703](https://github.com/rubygems/rubygems/pull/8703) by segiddins + [#8703](https://github.com/ruby/rubygems/pull/8703) by segiddins * Ensure that `Gem::Platform` parses strings to a fix point. Pull request - [#8584](https://github.com/rubygems/rubygems/pull/8584) by segiddins + [#8584](https://github.com/ruby/rubygems/pull/8584) by segiddins * Installs bundler 2.7.0 as a default gem. ### Bug fixes: * Fix signing HEAD and date formatting in S3 signer. Pull request - [#8763](https://github.com/rubygems/rubygems/pull/8763) by rye-stripe + [#8763](https://github.com/ruby/rubygems/pull/8763) by rye-stripe * Fix `--bindir ` flag to gem install failing when `` is not in the default GEM_HOME and its parent directory does not exist yet. Pull - request [#8783](https://github.com/rubygems/rubygems/pull/8783) by larouxn + request [#8783](https://github.com/ruby/rubygems/pull/8783) by larouxn * Fix `gem install` sometimes compiling the wrong source files. Pull - request [#8764](https://github.com/rubygems/rubygems/pull/8764) by + request [#8764](https://github.com/ruby/rubygems/pull/8764) by deivid-rodriguez * Workaround rust extension compilation when `ccache` or `sccache` are - used. Pull request [#8521](https://github.com/rubygems/rubygems/pull/8521) + used. Pull request [#8521](https://github.com/ruby/rubygems/pull/8521) by hsbt * Fix `gem pristine` not recompiling extensions sometimes. Pull request - [#8757](https://github.com/rubygems/rubygems/pull/8757) by + [#8757](https://github.com/ruby/rubygems/pull/8757) by deivid-rodriguez * Fix `--prerelease` flag to `gem install` sometimes not respected. Pull - request [#8648](https://github.com/rubygems/rubygems/pull/8648) by ntl + request [#8648](https://github.com/ruby/rubygems/pull/8648) by ntl ### Documentation: * Fix incorrect UPGRADING link in README.md. Pull request - [#8838](https://github.com/rubygems/rubygems/pull/8838) by djbender + [#8838](https://github.com/ruby/rubygems/pull/8838) by djbender * Add a root CONTRIBUTING.md file. Pull request - [#8822](https://github.com/rubygems/rubygems/pull/8822) by + [#8822](https://github.com/ruby/rubygems/pull/8822) by deivid-rodriguez * Add a SECURITY.md file. Pull request - [#8812](https://github.com/rubygems/rubygems/pull/8812) by + [#8812](https://github.com/ruby/rubygems/pull/8812) by deivid-rodriguez * Fix heading ranks in documentation. Pull request - [#8711](https://github.com/rubygems/rubygems/pull/8711) by antoinem + [#8711](https://github.com/ruby/rubygems/pull/8711) by antoinem ## 3.6.9 / 2025-05-13 ### Enhancements: * Add mtime to Gem::Package::TarWriter#add_file argument. Pull request - [#8673](https://github.com/rubygems/rubygems/pull/8673) by unasuke + [#8673](https://github.com/ruby/rubygems/pull/8673) by unasuke * Print webauthn authentication link as a separate line to make it easier to visit. Pull request - [#8663](https://github.com/rubygems/rubygems/pull/8663) by mperham + [#8663](https://github.com/ruby/rubygems/pull/8663) by mperham * Remove shellwords autoload. Pull request - [#8644](https://github.com/rubygems/rubygems/pull/8644) by + [#8644](https://github.com/ruby/rubygems/pull/8644) by deivid-rodriguez * Installs bundler 2.6.9 as a default gem. ### Performance: * Avoid unnecessary splat allocation. Pull request - [#8640](https://github.com/rubygems/rubygems/pull/8640) by jeremyevans + [#8640](https://github.com/ruby/rubygems/pull/8640) by jeremyevans ### Documentation: * Fix typo in Changelog for 3.6.0 / 2024-12-16. Pull request - [#8638](https://github.com/rubygems/rubygems/pull/8638) by thatrobotdev + [#8638](https://github.com/ruby/rubygems/pull/8638) by thatrobotdev ## 3.6.8 / 2025-04-13 @@ -147,34 +147,34 @@ ### Enhancements: * Sorting files in metadata for build reproducibility. Pull request - [#8569](https://github.com/rubygems/rubygems/pull/8569) by + [#8569](https://github.com/ruby/rubygems/pull/8569) by giacomobenedetti * Default to a SOURCE_DATE_EPOCH of 315619200, to simplify reproducible builds. Pull request - [#8568](https://github.com/rubygems/rubygems/pull/8568) by duckinator + [#8568](https://github.com/ruby/rubygems/pull/8568) by duckinator * Let `gem exec` raise an error in ambiguous cases. Pull request - [#8573](https://github.com/rubygems/rubygems/pull/8573) by + [#8573](https://github.com/ruby/rubygems/pull/8573) by deivid-rodriguez * Installs bundler 2.6.7 as a default gem. ### Performance: * Speed up Version#<=> ~20-50% when lengths differ. Pull request - [#8565](https://github.com/rubygems/rubygems/pull/8565) by skipkayhil + [#8565](https://github.com/ruby/rubygems/pull/8565) by skipkayhil ## 3.6.6 / 2025-03-13 ### Enhancements: * Update vendored uri to 1.0.3. Pull request - [#8534](https://github.com/rubygems/rubygems/pull/8534) by hsbt + [#8534](https://github.com/ruby/rubygems/pull/8534) by hsbt * Installs bundler 2.6.6 as a default gem. ### Bug fixes: * Fix `gem rdoc` not working with newer versions of rdoc when not installed as default gems. Pull request - [#8549](https://github.com/rubygems/rubygems/pull/8549) by + [#8549](https://github.com/ruby/rubygems/pull/8549) by deivid-rodriguez ## 3.6.5 / 2025-02-20 @@ -186,37 +186,37 @@ ### Documentation: * Removed `gem server` from `gem help`. Pull request - [#8507](https://github.com/rubygems/rubygems/pull/8507) by hsbt + [#8507](https://github.com/ruby/rubygems/pull/8507) by hsbt ## 3.6.4 / 2025-02-17 ### Enhancements: * Raise a simpler error when RubyGems fails to activate a dependency. Pull - request [#8449](https://github.com/rubygems/rubygems/pull/8449) by + request [#8449](https://github.com/ruby/rubygems/pull/8449) by deivid-rodriguez * Installs bundler 2.6.4 as a default gem. ### Performance: * Allocate strings from Requirement match only once. Pull request - [#8245](https://github.com/rubygems/rubygems/pull/8245) by segiddins + [#8245](https://github.com/ruby/rubygems/pull/8245) by segiddins ## 3.6.3 / 2025-01-16 ### Enhancements: * Add credentials file path to `gem env`. Pull request - [#8375](https://github.com/rubygems/rubygems/pull/8375) by duckinator + [#8375](https://github.com/ruby/rubygems/pull/8375) by duckinator * Update SPDX license list as of 2024-12-30. Pull request - [#8387](https://github.com/rubygems/rubygems/pull/8387) by + [#8387](https://github.com/ruby/rubygems/pull/8387) by github-actions[bot] * Installs bundler 2.6.3 as a default gem. ### Bug fixes: * Fix `@licenses` array unmarshalling. Pull request - [#8411](https://github.com/rubygems/rubygems/pull/8411) by rykov + [#8411](https://github.com/ruby/rubygems/pull/8411) by rykov ## 3.6.2 / 2024-12-23 @@ -224,14 +224,14 @@ * Fix Gem::SafeMarshal buffer overrun when given lengths larger than fit into a byte. Pull request - [#8305](https://github.com/rubygems/rubygems/pull/8305) by segiddins + [#8305](https://github.com/ruby/rubygems/pull/8305) by segiddins * Improve type checking in marshal_load methods. Pull request - [#8306](https://github.com/rubygems/rubygems/pull/8306) by segiddins + [#8306](https://github.com/ruby/rubygems/pull/8306) by segiddins ### Enhancements: * Skip rdoc hooks and their tests on newer rdoc versions. Pull request - [#8340](https://github.com/rubygems/rubygems/pull/8340) by + [#8340](https://github.com/ruby/rubygems/pull/8340) by deivid-rodriguez * Installs bundler 2.6.2 as a default gem. @@ -239,7 +239,7 @@ * Fix serialized metadata including an empty `@original_platform` attribute. Pull request - [#8355](https://github.com/rubygems/rubygems/pull/8355) by + [#8355](https://github.com/ruby/rubygems/pull/8355) by deivid-rodriguez ## 3.6.1 / 2024-12-17 @@ -251,138 +251,138 @@ ### Bug fixes: * Fix `gem info` tagging some non default gems as default. Pull request - [#8321](https://github.com/rubygems/rubygems/pull/8321) by + [#8321](https://github.com/ruby/rubygems/pull/8321) by deivid-rodriguez ### Documentation: * Fix broken links. Pull request - [#8327](https://github.com/rubygems/rubygems/pull/8327) by st0012 + [#8327](https://github.com/ruby/rubygems/pull/8327) by st0012 ## 3.6.0 / 2024-12-16 ### Security: * Stop storing executable names in ivars. Pull request - [#8307](https://github.com/rubygems/rubygems/pull/8307) by segiddins + [#8307](https://github.com/ruby/rubygems/pull/8307) by segiddins ### Breaking changes: * Drop ruby 3.0 support. Pull request - [#8091](https://github.com/rubygems/rubygems/pull/8091) by segiddins + [#8091](https://github.com/ruby/rubygems/pull/8091) by segiddins ### Features: * Add --attestation option to gem push. Pull request - [#8239](https://github.com/rubygems/rubygems/pull/8239) by segiddins + [#8239](https://github.com/ruby/rubygems/pull/8239) by segiddins ### Enhancements: * Skip unresolved deps warning on `Gem::Specification.reset` on benign cases. Pull request - [#8309](https://github.com/rubygems/rubygems/pull/8309) by + [#8309](https://github.com/ruby/rubygems/pull/8309) by deivid-rodriguez * Let `gem install ` suggest `-ruby` and `ruby-` when providing "did you mean" suggestions. Pull request - [#8197](https://github.com/rubygems/rubygems/pull/8197) by duckinator + [#8197](https://github.com/ruby/rubygems/pull/8197) by duckinator * Update SPDX license list as of 2024-08-19. Pull request - [#8233](https://github.com/rubygems/rubygems/pull/8233) by + [#8233](https://github.com/ruby/rubygems/pull/8233) by github-actions[bot] * Add `--target-rbconfig` option to `gem install` and `gem update` commands. Pull request - [#7628](https://github.com/rubygems/rubygems/pull/7628) by kateinoigakukun + [#7628](https://github.com/ruby/rubygems/pull/7628) by kateinoigakukun * Skip nil-value keys to make metadata reproducible. Pull request - [#7129](https://github.com/rubygems/rubygems/pull/7129) by nobu + [#7129](https://github.com/ruby/rubygems/pull/7129) by nobu * Allow disabling installation of compiled extensions into lib through `Gem.configuration.install_extension_in_lib`. Pull request - [#6463](https://github.com/rubygems/rubygems/pull/6463) by hsbt + [#6463](https://github.com/ruby/rubygems/pull/6463) by hsbt * Installs bundler 2.6.0 as a default gem. ### Bug fixes: * Set $0 to exe when running `gem exec` to fix name in CLI output. Pull - request [#8267](https://github.com/rubygems/rubygems/pull/8267) by adam12 + request [#8267](https://github.com/ruby/rubygems/pull/8267) by adam12 * Fix manifest in gem package using incorrect platform sometimes. Pull - request [#8202](https://github.com/rubygems/rubygems/pull/8202) by + request [#8202](https://github.com/ruby/rubygems/pull/8202) by deivid-rodriguez ### Documentation: * Fix missing single quote in git source example. Pull request - [#8303](https://github.com/rubygems/rubygems/pull/8303) by nobu + [#8303](https://github.com/ruby/rubygems/pull/8303) by nobu * Update the `gem install` demo in README to use a gem that just works on Windows. Pull request - [#8262](https://github.com/rubygems/rubygems/pull/8262) by soda92 + [#8262](https://github.com/ruby/rubygems/pull/8262) by soda92 * Unify rubygems and bundler docs directory. Pull request - [#8159](https://github.com/rubygems/rubygems/pull/8159) by hsbt + [#8159](https://github.com/ruby/rubygems/pull/8159) by hsbt ## 3.5.23 / 2024-11-05 ### Enhancements: * Validate user input encoding of `gem` CLI arguments. Pull request - [#6471](https://github.com/rubygems/rubygems/pull/6471) by + [#6471](https://github.com/ruby/rubygems/pull/6471) by deivid-rodriguez * Fix `gem update --system` leaving old default bundler executables around. Pull request - [#8172](https://github.com/rubygems/rubygems/pull/8172) by + [#8172](https://github.com/ruby/rubygems/pull/8172) by deivid-rodriguez * Installs bundler 2.5.23 as a default gem. ### Bug fixes: * Fix commands with 2 MFA requests when webauthn is enabled. Pull request - [#8174](https://github.com/rubygems/rubygems/pull/8174) by + [#8174](https://github.com/ruby/rubygems/pull/8174) by deivid-rodriguez * Make `--enable-load-relative` binstubs prolog work when Ruby is not installed in the same directory as the binstub. Pull request - [#7872](https://github.com/rubygems/rubygems/pull/7872) by + [#7872](https://github.com/ruby/rubygems/pull/7872) by deivid-rodriguez ### Performance: * Speed up `gem install ` by finding alternative name suggestions faster. Pull request - [#8084](https://github.com/rubygems/rubygems/pull/8084) by duckinator + [#8084](https://github.com/ruby/rubygems/pull/8084) by duckinator ### Documentation: * Add missing comma in documentation. Pull request - [#8152](https://github.com/rubygems/rubygems/pull/8152) by leoarnold + [#8152](https://github.com/ruby/rubygems/pull/8152) by leoarnold ## 3.5.22 / 2024-10-16 ### Enhancements: * Prevent `._*` files in packages generated from macOS. Pull request - [#8150](https://github.com/rubygems/rubygems/pull/8150) by + [#8150](https://github.com/ruby/rubygems/pull/8150) by deivid-rodriguez * Fix `gem pristine etc` resetting gem twice sometimes. Pull request - [#8117](https://github.com/rubygems/rubygems/pull/8117) by + [#8117](https://github.com/ruby/rubygems/pull/8117) by deivid-rodriguez * Allow `gem pristine` to reset default gems too. Pull request - [#8118](https://github.com/rubygems/rubygems/pull/8118) by + [#8118](https://github.com/ruby/rubygems/pull/8118) by deivid-rodriguez * Update vendored `uri` and `net-http`. Pull request - [#8112](https://github.com/rubygems/rubygems/pull/8112) by segiddins + [#8112](https://github.com/ruby/rubygems/pull/8112) by segiddins * Installs bundler 2.5.22 as a default gem. ### Bug fixes: * Fix `gem contents` for default gems. Pull request - [#8132](https://github.com/rubygems/rubygems/pull/8132) by + [#8132](https://github.com/ruby/rubygems/pull/8132) by deivid-rodriguez * Fix duplicated specs when they have been previously activated. Pull - request [#8131](https://github.com/rubygems/rubygems/pull/8131) by + request [#8131](https://github.com/ruby/rubygems/pull/8131) by deivid-rodriguez * Fix `gem install` on NFS shares. Pull request - [#8123](https://github.com/rubygems/rubygems/pull/8123) by + [#8123](https://github.com/ruby/rubygems/pull/8123) by deivid-rodriguez * Fix a `gem install` crash during "done installing" hooks. Pull request - [#8113](https://github.com/rubygems/rubygems/pull/8113) by + [#8113](https://github.com/ruby/rubygems/pull/8113) by deivid-rodriguez * Fix plugin command loading. Pull request - [#8121](https://github.com/rubygems/rubygems/pull/8121) by + [#8121](https://github.com/ruby/rubygems/pull/8121) by deivid-rodriguez ## 3.5.21 / 2024-10-03 @@ -390,14 +390,14 @@ ### Enhancements: * Fix `Gem::MissingSpecVersionError#to_s` not showing exception message. - Pull request [#8074](https://github.com/rubygems/rubygems/pull/8074) by + Pull request [#8074](https://github.com/ruby/rubygems/pull/8074) by deivid-rodriguez * Remove code that makes suggest_gems_from_name give worse results. Pull - request [#8083](https://github.com/rubygems/rubygems/pull/8083) by + request [#8083](https://github.com/ruby/rubygems/pull/8083) by duckinator * Warning about PATH in `--user-install` mode is only necessary for gems with executables. Pull request - [#8071](https://github.com/rubygems/rubygems/pull/8071) by + [#8071](https://github.com/ruby/rubygems/pull/8071) by deivid-rodriguez * Installs bundler 2.5.21 as a default gem. @@ -405,10 +405,10 @@ * Fix error in one source when fetching dependency APIs clearing results from all sources. Pull request - [#8080](https://github.com/rubygems/rubygems/pull/8080) by + [#8080](https://github.com/ruby/rubygems/pull/8080) by deivid-rodriguez * Fix `gem cleanup` warning when two versions of psych installed. Pull - request [#8072](https://github.com/rubygems/rubygems/pull/8072) by + request [#8072](https://github.com/ruby/rubygems/pull/8072) by deivid-rodriguez ## 3.5.20 / 2024-09-24 @@ -422,39 +422,39 @@ ### Enhancements: * Standardize pretty-print output for `Gem::Source` and subclasses. Pull - request [#7994](https://github.com/rubygems/rubygems/pull/7994) by + request [#7994](https://github.com/ruby/rubygems/pull/7994) by djberube * Update vendored `molinillo` to master and vendored `resolv` to 0.4.0. - Pull request [#7521](https://github.com/rubygems/rubygems/pull/7521) by + Pull request [#7521](https://github.com/ruby/rubygems/pull/7521) by hsbt * Installs bundler 2.5.19 as a default gem. ### Bug fixes: * Fix `bundle exec rake install` failing when local gem has extensions. - Pull request [#7977](https://github.com/rubygems/rubygems/pull/7977) by + Pull request [#7977](https://github.com/ruby/rubygems/pull/7977) by deivid-rodriguez * Make `gem exec` use the standard GEM_HOME. Pull request - [#7982](https://github.com/rubygems/rubygems/pull/7982) by + [#7982](https://github.com/ruby/rubygems/pull/7982) by deivid-rodriguez * Fix `gem fetch` always exiting with zero status code. Pull request - [#8007](https://github.com/rubygems/rubygems/pull/8007) by + [#8007](https://github.com/ruby/rubygems/pull/8007) by deivid-rodriguez * Remove temporary `.lock` files unintentionally left around by gem installer. Pull request - [#7939](https://github.com/rubygems/rubygems/pull/7939) by nobu + [#7939](https://github.com/ruby/rubygems/pull/7939) by nobu * Removed unused stringio. Pull request - [#8001](https://github.com/rubygems/rubygems/pull/8001) by hsbt + [#8001](https://github.com/ruby/rubygems/pull/8001) by hsbt * Avoid another race condition of open mode. Pull request - [#7931](https://github.com/rubygems/rubygems/pull/7931) by nobu + [#7931](https://github.com/ruby/rubygems/pull/7931) by nobu * Fix `@license` typo preventing licenses from being correctly unmarshalled. Pull request - [#7975](https://github.com/rubygems/rubygems/pull/7975) by djberube + [#7975](https://github.com/ruby/rubygems/pull/7975) by djberube ### Performance: * Fix `gem install does-not-exist` being super slow. Pull request - [#8006](https://github.com/rubygems/rubygems/pull/8006) by + [#8006](https://github.com/ruby/rubygems/pull/8006) by deivid-rodriguez ## 3.5.18 / 2024-08-26 @@ -466,7 +466,7 @@ ### Bug fixes: * Fix `gem uninstall :` failing on shadowed default gems. - Pull request [#7949](https://github.com/rubygems/rubygems/pull/7949) by + Pull request [#7949](https://github.com/ruby/rubygems/pull/7949) by deivid-rodriguez ## 3.5.17 / 2024-08-01 @@ -474,19 +474,19 @@ ### Enhancements: * Explicitly encode `Gem::Dependency` to yaml. Pull request - [#7867](https://github.com/rubygems/rubygems/pull/7867) by segiddins + [#7867](https://github.com/ruby/rubygems/pull/7867) by segiddins * Installs bundler 2.5.17 as a default gem. ### Bug fixes: * Fix `gem list` regression when a regular gem shadows a default one. Pull - request [#7892](https://github.com/rubygems/rubygems/pull/7892) by + request [#7892](https://github.com/ruby/rubygems/pull/7892) by deivid-rodriguez * Always leave default gem executables around. Pull request - [#7879](https://github.com/rubygems/rubygems/pull/7879) by + [#7879](https://github.com/ruby/rubygems/pull/7879) by deivid-rodriguez * Fix line comment issue for hash when loading gemrc. Pull request - [#7857](https://github.com/rubygems/rubygems/pull/7857) by leetking + [#7857](https://github.com/ruby/rubygems/pull/7857) by leetking ## 3.5.16 / 2024-07-18 @@ -497,16 +497,16 @@ ### Bug fixes: * Fix gemspec `require_paths` validation. Pull request - [#7866](https://github.com/rubygems/rubygems/pull/7866) by + [#7866](https://github.com/ruby/rubygems/pull/7866) by deivid-rodriguez * Fix loading of nested `gemrc` config keys when specified as symbols. - Pull request [#7851](https://github.com/rubygems/rubygems/pull/7851) by + Pull request [#7851](https://github.com/ruby/rubygems/pull/7851) by moofkit ### Performance: * Use `caller_locations` instead of splitting `caller`. Pull request - [#7708](https://github.com/rubygems/rubygems/pull/7708) by nobu + [#7708](https://github.com/ruby/rubygems/pull/7708) by nobu ## 3.5.15 / 2024-07-09 @@ -517,16 +517,16 @@ ### Bug fixes: * Restrict generic `arm` to only match 32-bit arm. Pull request - [#7830](https://github.com/rubygems/rubygems/pull/7830) by ntkme + [#7830](https://github.com/ruby/rubygems/pull/7830) by ntkme * Protect creating binstubs with a file lock. Pull request - [#7806](https://github.com/rubygems/rubygems/pull/7806) by + [#7806](https://github.com/ruby/rubygems/pull/7806) by deivid-rodriguez ### Documentation: * Make it clearer that `add_dependency` is the main way to add non-development dependencies. Pull request - [#7800](https://github.com/rubygems/rubygems/pull/7800) by jeromedalbert + [#7800](https://github.com/ruby/rubygems/pull/7800) by jeromedalbert ## 3.5.14 / 2024-06-21 @@ -537,7 +537,7 @@ ### Bug fixes: * Make "bundler? update --bundler" behave identically. Pull request - [#7778](https://github.com/rubygems/rubygems/pull/7778) by x-yuri + [#7778](https://github.com/ruby/rubygems/pull/7778) by x-yuri ## 3.5.13 / 2024-06-14 @@ -548,7 +548,7 @@ ### Bug fixes: * Never remove executables that may belong to a default gem. Pull request - [#7747](https://github.com/rubygems/rubygems/pull/7747) by + [#7747](https://github.com/ruby/rubygems/pull/7747) by deivid-rodriguez ## 3.5.12 / 2024-06-13 @@ -560,10 +560,10 @@ ### Bug fixes: * Fix `gem uninstall` unresolved specifications warning. Pull request - [#7667](https://github.com/rubygems/rubygems/pull/7667) by + [#7667](https://github.com/ruby/rubygems/pull/7667) by deivid-rodriguez * Fix `gem pristine` sometimes failing to pristine user installed gems. - Pull request [#7664](https://github.com/rubygems/rubygems/pull/7664) by + Pull request [#7664](https://github.com/ruby/rubygems/pull/7664) by deivid-rodriguez ## 3.5.11 / 2024-05-28 @@ -571,15 +571,15 @@ ### Enhancements: * Update SPDX license list as of 2024-05-22. Pull request - [#7689](https://github.com/rubygems/rubygems/pull/7689) by + [#7689](https://github.com/ruby/rubygems/pull/7689) by github-actions[bot] * Fix the update_rubygems inconsistency (--disable-gems). Pull request - [#7658](https://github.com/rubygems/rubygems/pull/7658) by x-yuri + [#7658](https://github.com/ruby/rubygems/pull/7658) by x-yuri * Accept WASI as an OS name in Gem::Platform. Pull request - [#7629](https://github.com/rubygems/rubygems/pull/7629) by kateinoigakukun + [#7629](https://github.com/ruby/rubygems/pull/7629) by kateinoigakukun * Warn if RubyGems version explicitly set in gemspec does not match running version. Pull request - [#7460](https://github.com/rubygems/rubygems/pull/7460) by + [#7460](https://github.com/ruby/rubygems/pull/7460) by deivid-rodriguez * Installs bundler 2.5.11 as a default gem. @@ -587,27 +587,27 @@ * Fix binstubs sometimes not getting regenerated when `--destdir` is given. Pull request - [#7660](https://github.com/rubygems/rubygems/pull/7660) by + [#7660](https://github.com/ruby/rubygems/pull/7660) by deivid-rodriguez * Fix `gem uninstall --user-install` for symlinked HOME. Pull request - [#7645](https://github.com/rubygems/rubygems/pull/7645) by + [#7645](https://github.com/ruby/rubygems/pull/7645) by deivid-rodriguez * Fix issue when plugin stubs would sometimes not be properly removed by `gem uninstall`. Pull request - [#7631](https://github.com/rubygems/rubygems/pull/7631) by + [#7631](https://github.com/ruby/rubygems/pull/7631) by deivid-rodriguez * Fix plugins uninstallation for user installed gems. Pull request - [#6456](https://github.com/rubygems/rubygems/pull/6456) by voxik + [#6456](https://github.com/ruby/rubygems/pull/6456) by voxik ### Performance: * Use a constant empty tar header to avoid extra allocations. Pull request - [#7484](https://github.com/rubygems/rubygems/pull/7484) by segiddins + [#7484](https://github.com/ruby/rubygems/pull/7484) by segiddins ### Documentation: * Recommend `bin/rake` over `rake` in contributing docs. Pull request - [#7648](https://github.com/rubygems/rubygems/pull/7648) by + [#7648](https://github.com/ruby/rubygems/pull/7648) by deivid-rodriguez ## 3.5.10 / 2024-05-03 @@ -616,20 +616,20 @@ * Add a limit to the size of the metadata and checksums files in a gem package. Pull request - [#7568](https://github.com/rubygems/rubygems/pull/7568) by segiddins + [#7568](https://github.com/ruby/rubygems/pull/7568) by segiddins ### Enhancements: * Don't fully require `rubygems` from `rubygems/package` to prevent some circular require warnings when using Bundler. Pull request - [#7612](https://github.com/rubygems/rubygems/pull/7612) by + [#7612](https://github.com/ruby/rubygems/pull/7612) by deivid-rodriguez * Installs bundler 2.5.10 as a default gem. ### Bug fixes: * Rename credential email to identifier in WebAuthn poller. Pull request - [#7623](https://github.com/rubygems/rubygems/pull/7623) by jenshenny + [#7623](https://github.com/ruby/rubygems/pull/7623) by jenshenny ## 3.5.9 / 2024-04-12 @@ -642,25 +642,25 @@ ### Security: * Respect global umask when writing regular files. Pull request - [#7518](https://github.com/rubygems/rubygems/pull/7518) by + [#7518](https://github.com/ruby/rubygems/pull/7518) by deivid-rodriguez ### Enhancements: * Allow string keys with gemrc. Pull request - [#7543](https://github.com/rubygems/rubygems/pull/7543) by hsbt + [#7543](https://github.com/ruby/rubygems/pull/7543) by hsbt * [Experimental] Add "gem rebuild" command. Pull request - [#4913](https://github.com/rubygems/rubygems/pull/4913) by duckinator + [#4913](https://github.com/ruby/rubygems/pull/4913) by duckinator * Installs bundler 2.5.8 as a default gem. ### Bug fixes: * Fix NoMethodError crash when building errors about corrupt package files. Pull request - [#7539](https://github.com/rubygems/rubygems/pull/7539) by jez + [#7539](https://github.com/ruby/rubygems/pull/7539) by jez * Fix resolver to properly intersect Arrays of `Gem::Resolver::Activation` objects. Pull request - [#7537](https://github.com/rubygems/rubygems/pull/7537) by + [#7537](https://github.com/ruby/rubygems/pull/7537) by deivid-rodriguez ## 3.5.7 / 2024-03-22 @@ -668,13 +668,13 @@ ### Enhancements: * Warn on empty or open required_ruby_version specification attribute. - Pull request [#5010](https://github.com/rubygems/rubygems/pull/5010) by + Pull request [#5010](https://github.com/ruby/rubygems/pull/5010) by simi * Control whether YAML aliases are enabled in Gem::SafeYAML.safe_load via attribute. Pull request - [#7464](https://github.com/rubygems/rubygems/pull/7464) by segiddins + [#7464](https://github.com/ruby/rubygems/pull/7464) by segiddins * Update SPDX license list as of 2024-02-08. Pull request - [#7468](https://github.com/rubygems/rubygems/pull/7468) by + [#7468](https://github.com/ruby/rubygems/pull/7468) by github-actions[bot] * Installs bundler 2.5.7 as a default gem. @@ -682,40 +682,40 @@ * Allow prerelease activation (even if requirement is not explicit about it) when it's the only possibility. Pull request - [#7428](https://github.com/rubygems/rubygems/pull/7428) by kimesf + [#7428](https://github.com/ruby/rubygems/pull/7428) by kimesf ### Documentation: * Fix a typo. Pull request - [#7505](https://github.com/rubygems/rubygems/pull/7505) by hsbt + [#7505](https://github.com/ruby/rubygems/pull/7505) by hsbt * Use https instead of http in documentation links. Pull request - [#7481](https://github.com/rubygems/rubygems/pull/7481) by hsbt + [#7481](https://github.com/ruby/rubygems/pull/7481) by hsbt ## 3.5.6 / 2024-02-06 ### Enhancements: * Deep copy requirements in `Gem::Specification` and `Gem::Requirement`. - Pull request [#7439](https://github.com/rubygems/rubygems/pull/7439) by + Pull request [#7439](https://github.com/ruby/rubygems/pull/7439) by flavorjones * Change gem login message to clear up that username can be also used. - Pull request [#7422](https://github.com/rubygems/rubygems/pull/7422) by + Pull request [#7422](https://github.com/ruby/rubygems/pull/7422) by VitaliySerov * Add metadata for rubygems.org. Pull request - [#7435](https://github.com/rubygems/rubygems/pull/7435) by m-nakamura145 + [#7435](https://github.com/ruby/rubygems/pull/7435) by m-nakamura145 * Improve gem login scope selection. Pull request - [#7342](https://github.com/rubygems/rubygems/pull/7342) by williantenfen + [#7342](https://github.com/ruby/rubygems/pull/7342) by williantenfen * Vendor uri in RubyGems. Pull request - [#7386](https://github.com/rubygems/rubygems/pull/7386) by + [#7386](https://github.com/ruby/rubygems/pull/7386) by deivid-rodriguez * Installs bundler 2.5.6 as a default gem. ### Bug fixes: * Skip to load commented out words. Pull request - [#7413](https://github.com/rubygems/rubygems/pull/7413) by hsbt + [#7413](https://github.com/ruby/rubygems/pull/7413) by hsbt * Fix rake runtime dependency warning for rake based extension. Pull - request [#7395](https://github.com/rubygems/rubygems/pull/7395) by ntkme + request [#7395](https://github.com/ruby/rubygems/pull/7395) by ntkme ## 3.5.5 / 2024-01-18 @@ -727,30 +727,30 @@ * Fix `require` activation conflicts when requiring default gems under some situations. Pull request - [#7379](https://github.com/rubygems/rubygems/pull/7379) by + [#7379](https://github.com/ruby/rubygems/pull/7379) by deivid-rodriguez * Use cache_home instead of data_home in default_spec_cache_dir. Pull - request [#7331](https://github.com/rubygems/rubygems/pull/7331) by mrkn + request [#7331](https://github.com/ruby/rubygems/pull/7331) by mrkn ### Documentation: * Use squiggly heredocs in `Gem::Specification#description` documentation, so it doesn't add leading whitespace. Pull request - [#7373](https://github.com/rubygems/rubygems/pull/7373) by bravehager + [#7373](https://github.com/ruby/rubygems/pull/7373) by bravehager ## 3.5.4 / 2024-01-04 ### Enhancements: * Always avoid "Updating rubygems-update" message. Pull request - [#7335](https://github.com/rubygems/rubygems/pull/7335) by + [#7335](https://github.com/ruby/rubygems/pull/7335) by deivid-rodriguez * Installs bundler 2.5.4 as a default gem. ### Bug fixes: * Make `gem update --system` respect ruby version constraints. Pull - request [#7334](https://github.com/rubygems/rubygems/pull/7334) by + request [#7334](https://github.com/ruby/rubygems/pull/7334) by deivid-rodriguez ## 3.5.3 / 2023-12-22 @@ -764,15 +764,15 @@ ### Enhancements: * Support dynamic library loading with extension .so or .o. Pull request - [#7241](https://github.com/rubygems/rubygems/pull/7241) by hogelog + [#7241](https://github.com/ruby/rubygems/pull/7241) by hogelog * Installs bundler 2.5.2 as a default gem. ### Performance: * Replace `object_id` comparison with identity Hash. Pull request - [#7303](https://github.com/rubygems/rubygems/pull/7303) by amomchilov + [#7303](https://github.com/ruby/rubygems/pull/7303) by amomchilov * Use IO.copy_stream when reading, writing. Pull request - [#6958](https://github.com/rubygems/rubygems/pull/6958) by martinemde + [#6958](https://github.com/ruby/rubygems/pull/6958) by martinemde ## 3.5.1 / 2023-12-15 @@ -785,96 +785,96 @@ ### Security: * Replace `Marshal.load` with a fully-checked safe gemspec loader. Pull - request [#6896](https://github.com/rubygems/rubygems/pull/6896) by + request [#6896](https://github.com/ruby/rubygems/pull/6896) by segiddins ### Breaking changes: * Drop ruby 2.6 and 2.7 support. Pull request - [#7116](https://github.com/rubygems/rubygems/pull/7116) by + [#7116](https://github.com/ruby/rubygems/pull/7116) by deivid-rodriguez * Release package no longer includes test files. Pull request - [#6781](https://github.com/rubygems/rubygems/pull/6781) by hsbt + [#6781](https://github.com/ruby/rubygems/pull/6781) by hsbt * Hide `Gem::MockGemUi` from users. Pull request - [#6623](https://github.com/rubygems/rubygems/pull/6623) by hsbt + [#6623](https://github.com/ruby/rubygems/pull/6623) by hsbt * Deprecated `Gem.datadir` has been removed. Pull request - [#6469](https://github.com/rubygems/rubygems/pull/6469) by hsbt + [#6469](https://github.com/ruby/rubygems/pull/6469) by hsbt ### Deprecations: * Deprecate `Gem::Platform.match?`. Pull request - [#6783](https://github.com/rubygems/rubygems/pull/6783) by hsbt + [#6783](https://github.com/ruby/rubygems/pull/6783) by hsbt * Deprecate `Gem::List`. Pull request - [#6311](https://github.com/rubygems/rubygems/pull/6311) by segiddins + [#6311](https://github.com/ruby/rubygems/pull/6311) by segiddins ### Features: * The `generate_index` command can now generate compact index files and lives as an external `rubygems-generate_index` gem. Pull request - [#7085](https://github.com/rubygems/rubygems/pull/7085) by segiddins + [#7085](https://github.com/ruby/rubygems/pull/7085) by segiddins * Make `gem install` fallback to user installation directory if default gem home is not writable. Pull request - [#5327](https://github.com/rubygems/rubygems/pull/5327) by duckinator + [#5327](https://github.com/ruby/rubygems/pull/5327) by duckinator * Leverage ruby feature to warn when requiring default gems from stdlib that will be turned into bundled gems in the future. Pull request - [#6840](https://github.com/rubygems/rubygems/pull/6840) by hsbt + [#6840](https://github.com/ruby/rubygems/pull/6840) by hsbt ### Performance: * Use match? when regexp match data is unused. Pull request - [#7263](https://github.com/rubygems/rubygems/pull/7263) by segiddins + [#7263](https://github.com/ruby/rubygems/pull/7263) by segiddins * Fewer allocations in gem installation. Pull request - [#6975](https://github.com/rubygems/rubygems/pull/6975) by segiddins + [#6975](https://github.com/ruby/rubygems/pull/6975) by segiddins * Optimize allocations in `Gem::Version`. Pull request - [#6970](https://github.com/rubygems/rubygems/pull/6970) by segiddins + [#6970](https://github.com/ruby/rubygems/pull/6970) by segiddins ### Enhancements: * Warn for duplicate meta data links when building gems. Pull request - [#7213](https://github.com/rubygems/rubygems/pull/7213) by etherbob + [#7213](https://github.com/ruby/rubygems/pull/7213) by etherbob * Vendor `net-http`, `net-protocol`, `resolv`, and `timeout` to reduce conflicts between Gemfile gems and internal dependencies. Pull request - [#6793](https://github.com/rubygems/rubygems/pull/6793) by + [#6793](https://github.com/ruby/rubygems/pull/6793) by deivid-rodriguez * Remove non-transparent requirement added to prerelease gems. Pull - request [#7226](https://github.com/rubygems/rubygems/pull/7226) by + request [#7226](https://github.com/ruby/rubygems/pull/7226) by deivid-rodriguez * Stream output from ext builds when --verbose. Pull request - [#7240](https://github.com/rubygems/rubygems/pull/7240) by osyoyu + [#7240](https://github.com/ruby/rubygems/pull/7240) by osyoyu * Add missing services to CI detection and make it consistent between RubyGems and Bundler. Pull request - [#7205](https://github.com/rubygems/rubygems/pull/7205) by nevinera + [#7205](https://github.com/ruby/rubygems/pull/7205) by nevinera * Update generate licenses template to not freeze regexps. Pull request - [#7154](https://github.com/rubygems/rubygems/pull/7154) by + [#7154](https://github.com/ruby/rubygems/pull/7154) by github-actions[bot] * Don't check `LIBRUBY_RELATIVE` in truffleruby to signal a bash prelude in rubygems binstubs. Pull request - [#7156](https://github.com/rubygems/rubygems/pull/7156) by + [#7156](https://github.com/ruby/rubygems/pull/7156) by deivid-rodriguez * Update SPDX list and warn on deprecated identifiers. Pull request - [#6926](https://github.com/rubygems/rubygems/pull/6926) by simi + [#6926](https://github.com/ruby/rubygems/pull/6926) by simi * Simplify extended `require` to potentially fix some deadlocks. Pull - request [#6827](https://github.com/rubygems/rubygems/pull/6827) by nobu + request [#6827](https://github.com/ruby/rubygems/pull/6827) by nobu * Small refactors for `Gem::Resolver`. Pull request - [#6766](https://github.com/rubygems/rubygems/pull/6766) by hsbt + [#6766](https://github.com/ruby/rubygems/pull/6766) by hsbt * Use double-quotes instead of single-quotes consistently in warnings. - Pull request [#6550](https://github.com/rubygems/rubygems/pull/6550) by + Pull request [#6550](https://github.com/ruby/rubygems/pull/6550) by hsbt * Add debug message for `nil` version gemspec. Pull request - [#6436](https://github.com/rubygems/rubygems/pull/6436) by hsbt + [#6436](https://github.com/ruby/rubygems/pull/6436) by hsbt * Installs bundler 2.5.0 as a default gem. ### Bug fixes: * Fix installing from source with same default bundler version already installed. Pull request - [#7244](https://github.com/rubygems/rubygems/pull/7244) by + [#7244](https://github.com/ruby/rubygems/pull/7244) by deivid-rodriguez ### Documentation: * Improve comment explaining the necessity of `write_default_spec` method. - Pull request [#6563](https://github.com/rubygems/rubygems/pull/6563) by + Pull request [#6563](https://github.com/ruby/rubygems/pull/6563) by voxik ## 3.4.22 / 2023-11-09 @@ -882,32 +882,32 @@ ### Enhancements: * Update SPDX license list as of 2023-10-05. Pull request - [#7040](https://github.com/rubygems/rubygems/pull/7040) by + [#7040](https://github.com/ruby/rubygems/pull/7040) by github-actions[bot] * Remove unnecessary rescue. Pull request - [#7109](https://github.com/rubygems/rubygems/pull/7109) by + [#7109](https://github.com/ruby/rubygems/pull/7109) by deivid-rodriguez * Installs bundler 2.4.22 as a default gem. ### Bug fixes: * Handle empty array at built-in YAML serializer. Pull request - [#7099](https://github.com/rubygems/rubygems/pull/7099) by hsbt + [#7099](https://github.com/ruby/rubygems/pull/7099) by hsbt * Ignore non-tar format `.gem` files during search. Pull request - [#7095](https://github.com/rubygems/rubygems/pull/7095) by dearblue + [#7095](https://github.com/ruby/rubygems/pull/7095) by dearblue * Allow explicitly uninstalling multiple versions of same gem. Pull - request [#7063](https://github.com/rubygems/rubygems/pull/7063) by + request [#7063](https://github.com/ruby/rubygems/pull/7063) by kstevens715 ### Performance: * Avoid regexp match on every call to `Gem::Platform.local`. Pull request - [#7104](https://github.com/rubygems/rubygems/pull/7104) by segiddins + [#7104](https://github.com/ruby/rubygems/pull/7104) by segiddins ### Documentation: * Get `Gem::Specification#extensions_dir` documented. Pull request - [#6218](https://github.com/rubygems/rubygems/pull/6218) by + [#6218](https://github.com/ruby/rubygems/pull/6218) by deivid-rodriguez ## 3.4.21 / 2023-10-17 @@ -915,58 +915,58 @@ ### Enhancements: * Abort `setup.rb` if Ruby is too old. Pull request - [#7011](https://github.com/rubygems/rubygems/pull/7011) by + [#7011](https://github.com/ruby/rubygems/pull/7011) by deivid-rodriguez * Remove usage of Dir.chdir that only execute a subprocess. Pull request - [#6930](https://github.com/rubygems/rubygems/pull/6930) by segiddins + [#6930](https://github.com/ruby/rubygems/pull/6930) by segiddins * Freeze more strings in generated gemspecs. Pull request - [#6974](https://github.com/rubygems/rubygems/pull/6974) by segiddins + [#6974](https://github.com/ruby/rubygems/pull/6974) by segiddins * Use pure-ruby YAML parser for loading configuration at RubyGems. Pull - request [#6615](https://github.com/rubygems/rubygems/pull/6615) by hsbt + request [#6615](https://github.com/ruby/rubygems/pull/6615) by hsbt * Installs bundler 2.4.21 as a default gem. ### Documentation: * Update suggested variable for bindir. Pull request - [#7028](https://github.com/rubygems/rubygems/pull/7028) by hsbt + [#7028](https://github.com/ruby/rubygems/pull/7028) by hsbt * Fix invalid links in documentation. Pull request - [#7008](https://github.com/rubygems/rubygems/pull/7008) by simi + [#7008](https://github.com/ruby/rubygems/pull/7008) by simi ## 3.4.20 / 2023-09-27 ### Enhancements: * Raise `Gem::Package::FormatError` when gem encounters corrupt EOF. - Pull request [#6882](https://github.com/rubygems/rubygems/pull/6882) + Pull request [#6882](https://github.com/ruby/rubygems/pull/6882) by martinemde * Allow skipping empty license `gem build` warning by setting license to `nil`. Pull request - [#6879](https://github.com/rubygems/rubygems/pull/6879) by jhong97 + [#6879](https://github.com/ruby/rubygems/pull/6879) by jhong97 * Update SPDX license list as of 2023-06-18. Pull request - [#6891](https://github.com/rubygems/rubygems/pull/6891) by + [#6891](https://github.com/ruby/rubygems/pull/6891) by github-actions[bot] * Update SPDX license list as of 2023-04-28. Pull request - [#6642](https://github.com/rubygems/rubygems/pull/6642) by segiddins + [#6642](https://github.com/ruby/rubygems/pull/6642) by segiddins * Update SPDX license list as of 2023-01-26. Pull request - [#6310](https://github.com/rubygems/rubygems/pull/6310) by segiddins + [#6310](https://github.com/ruby/rubygems/pull/6310) by segiddins * Installs bundler 2.4.20 as a default gem. ### Bug fixes: * Fixed false positive SymlinkError in symbolic link directory. Pull - request [#6947](https://github.com/rubygems/rubygems/pull/6947) by + request [#6947](https://github.com/ruby/rubygems/pull/6947) by negi0109 * Ensure that loading multiple gemspecs with legacy YAML class references does not warn. Pull request - [#6889](https://github.com/rubygems/rubygems/pull/6889) by segiddins + [#6889](https://github.com/ruby/rubygems/pull/6889) by segiddins * Fix NoMethodError when choosing a too big number from `gem uni` list. - Pull request [#6901](https://github.com/rubygems/rubygems/pull/6901) by + Pull request [#6901](https://github.com/ruby/rubygems/pull/6901) by amatsuda ### Performance: * Reduce allocations for stub specifications. Pull request - [#6972](https://github.com/rubygems/rubygems/pull/6972) by segiddins + [#6972](https://github.com/ruby/rubygems/pull/6972) by segiddins ## 3.4.19 / 2023-08-17 @@ -977,7 +977,7 @@ ### Performance: * Speedup building docs when updating rubygems. Pull request - [#6864](https://github.com/rubygems/rubygems/pull/6864) by + [#6864](https://github.com/ruby/rubygems/pull/6864) by deivid-rodriguez ## 3.4.18 / 2023-08-02 @@ -985,11 +985,11 @@ ### Enhancements: * Add poller to fetch WebAuthn OTP. Pull request - [#6774](https://github.com/rubygems/rubygems/pull/6774) by jenshenny + [#6774](https://github.com/ruby/rubygems/pull/6774) by jenshenny * Remove side effects when unmarshaling old `Gem::Specification`. Pull - request [#6825](https://github.com/rubygems/rubygems/pull/6825) by nobu + request [#6825](https://github.com/ruby/rubygems/pull/6825) by nobu * Ship rubygems executables in `exe` folder. Pull request - [#6704](https://github.com/rubygems/rubygems/pull/6704) by hsbt + [#6704](https://github.com/ruby/rubygems/pull/6704) by hsbt * Installs bundler 2.4.18 as a default gem. ## 3.4.17 / 2023-07-14 @@ -1001,7 +1001,7 @@ ### Performance: * Avoid unnecessary work for private local gem installation. Pull request - [#6810](https://github.com/rubygems/rubygems/pull/6810) by + [#6810](https://github.com/ruby/rubygems/pull/6810) by deivid-rodriguez ## 3.4.16 / 2023-07-10 @@ -1019,26 +1019,26 @@ ### Bug fixes: * Autoload shellwords when it's needed. Pull request - [#6734](https://github.com/rubygems/rubygems/pull/6734) by ioquatix + [#6734](https://github.com/ruby/rubygems/pull/6734) by ioquatix ### Documentation: * Update command to test local gem command changes. Pull request - [#6761](https://github.com/rubygems/rubygems/pull/6761) by jenshenny + [#6761](https://github.com/ruby/rubygems/pull/6761) by jenshenny ## 3.4.14 / 2023-06-12 ### Enhancements: * Load plugin immediately. Pull request - [#6673](https://github.com/rubygems/rubygems/pull/6673) by kou + [#6673](https://github.com/ruby/rubygems/pull/6673) by kou * Installs bundler 2.4.14 as a default gem. ### Documentation: * Clarify what the `rubygems-update` gem is for, and link to source code and guides. Pull request - [#6710](https://github.com/rubygems/rubygems/pull/6710) by davetron5000 + [#6710](https://github.com/ruby/rubygems/pull/6710) by davetron5000 ## 3.4.13 / 2023-05-09 @@ -1051,7 +1051,7 @@ ### Enhancements: * [Experimental] Add WebAuthn Support to the CLI. Pull request - [#6560](https://github.com/rubygems/rubygems/pull/6560) by jenshenny + [#6560](https://github.com/ruby/rubygems/pull/6560) by jenshenny * Installs bundler 2.4.12 as a default gem. ## 3.4.11 / 2023-04-10 @@ -1071,24 +1071,24 @@ ### Enhancements: * Improve `TarHeader#calculate_checksum` speed and readability. Pull - request [#6476](https://github.com/rubygems/rubygems/pull/6476) by + request [#6476](https://github.com/ruby/rubygems/pull/6476) by Maumagnaguagno * Added only missing extensions option into pristine command. Pull request - [#6446](https://github.com/rubygems/rubygems/pull/6446) by hsbt + [#6446](https://github.com/ruby/rubygems/pull/6446) by hsbt * Installs bundler 2.4.9 as a default gem. ### Bug fixes: * Fix `$LOAD_PATH` in rake and ext_conf builder. Pull request - [#6490](https://github.com/rubygems/rubygems/pull/6490) by ntkme + [#6490](https://github.com/ruby/rubygems/pull/6490) by ntkme * Fix `gem uninstall` with `--install-dir`. Pull request - [#6481](https://github.com/rubygems/rubygems/pull/6481) by + [#6481](https://github.com/ruby/rubygems/pull/6481) by deivid-rodriguez ### Documentation: * Document our current release policy. Pull request - [#6450](https://github.com/rubygems/rubygems/pull/6450) by + [#6450](https://github.com/ruby/rubygems/pull/6450) by deivid-rodriguez ## 3.4.8 / 2023-03-08 @@ -1096,64 +1096,64 @@ ### Enhancements: * Add TarReader::Entry#seek to seek within the tar file entry. Pull - request [#6390](https://github.com/rubygems/rubygems/pull/6390) by + request [#6390](https://github.com/ruby/rubygems/pull/6390) by martinemde * Avoid calling String#dup in Gem::Version#marshal_dump. Pull request - [#6438](https://github.com/rubygems/rubygems/pull/6438) by segiddins + [#6438](https://github.com/ruby/rubygems/pull/6438) by segiddins * Remove hardcoded "master" branch references. Pull request - [#6425](https://github.com/rubygems/rubygems/pull/6425) by + [#6425](https://github.com/ruby/rubygems/pull/6425) by deivid-rodriguez * [Experimental] Add `gem exec` command to run executables from gems that may or may not be installed. Pull request - [#6309](https://github.com/rubygems/rubygems/pull/6309) by segiddins + [#6309](https://github.com/ruby/rubygems/pull/6309) by segiddins * Installs bundler 2.4.8 as a default gem. ### Bug fixes: * Fix installation error of same version of default gems with local installation. Pull request - [#6430](https://github.com/rubygems/rubygems/pull/6430) by hsbt + [#6430](https://github.com/ruby/rubygems/pull/6430) by hsbt * Use proper memoized var name for Gem.state_home. Pull request - [#6420](https://github.com/rubygems/rubygems/pull/6420) by simi + [#6420](https://github.com/ruby/rubygems/pull/6420) by simi ### Documentation: * Switch supporting explanations to all Ruby Central. Pull request - [#6419](https://github.com/rubygems/rubygems/pull/6419) by indirect + [#6419](https://github.com/ruby/rubygems/pull/6419) by indirect * Update the link to OpenSource.org. Pull request - [#6392](https://github.com/rubygems/rubygems/pull/6392) by nobu + [#6392](https://github.com/ruby/rubygems/pull/6392) by nobu ## 3.4.7 / 2023-02-15 ### Enhancements: * Warn on self referencing gemspec dependency. Pull request - [#6335](https://github.com/rubygems/rubygems/pull/6335) by simi + [#6335](https://github.com/ruby/rubygems/pull/6335) by simi * Installs bundler 2.4.7 as a default gem. ### Bug fixes: * Fix inconsistent behavior of zero byte files in archive. Pull request - [#6329](https://github.com/rubygems/rubygems/pull/6329) by martinemde + [#6329](https://github.com/ruby/rubygems/pull/6329) by martinemde ## 3.4.6 / 2023-01-31 ### Enhancements: * Allow `require` decorations be disabled. Pull request - [#6319](https://github.com/rubygems/rubygems/pull/6319) by + [#6319](https://github.com/ruby/rubygems/pull/6319) by deivid-rodriguez * Installs bundler 2.4.6 as a default gem. ### Bug fixes: * Include directory in CargoBuilder install path. Pull request - [#6298](https://github.com/rubygems/rubygems/pull/6298) by matsadler + [#6298](https://github.com/ruby/rubygems/pull/6298) by matsadler ### Documentation: * Include links to pull requests in changelog. Pull request - [#6316](https://github.com/rubygems/rubygems/pull/6316) by + [#6316](https://github.com/ruby/rubygems/pull/6316) by deivid-rodriguez ## 3.4.5 / 2023-01-21 @@ -1170,7 +1170,7 @@ ### Documentation: -* Improve documentation about `Kernel` monkeypatches. Pull request [#6217](https://github.com/rubygems/rubygems/pull/6217) +* Improve documentation about `Kernel` monkeypatches. Pull request [#6217](https://github.com/ruby/rubygems/pull/6217) by nobu ## 3.4.3 / 2023-01-06 @@ -1181,13 +1181,13 @@ ### Documentation: -* Fix several typos. Pull request [#6224](https://github.com/rubygems/rubygems/pull/6224) by jdufresne +* Fix several typos. Pull request [#6224](https://github.com/ruby/rubygems/pull/6224) by jdufresne ## 3.4.2 / 2023-01-01 ### Enhancements: -* Add global flag (`-C`) to change execution directory. Pull request [#6180](https://github.com/rubygems/rubygems/pull/6180) +* Add global flag (`-C`) to change execution directory. Pull request [#6180](https://github.com/ruby/rubygems/pull/6180) by gustavothecoder * Installs bundler 2.4.2 as a default gem. @@ -1202,44 +1202,44 @@ ### Breaking changes: * Drop support for Ruby 2.3, 2.4, 2.5 and RubyGems 2.5, 2.6, 2.7. Pull - request [#6107](https://github.com/rubygems/rubygems/pull/6107) by deivid-rodriguez -* Remove support for deprecated OS. Pull request [#6041](https://github.com/rubygems/rubygems/pull/6041) by peterzhu2118 + request [#6107](https://github.com/ruby/rubygems/pull/6107) by deivid-rodriguez +* Remove support for deprecated OS. Pull request [#6041](https://github.com/ruby/rubygems/pull/6041) by peterzhu2118 ### Features: -* Add 'call for update' to RubyGems install command. Pull request [#5922](https://github.com/rubygems/rubygems/pull/5922) by +* Add 'call for update' to RubyGems install command. Pull request [#5922](https://github.com/ruby/rubygems/pull/5922) by simi ### Enhancements: -* Add `mswin` support for cargo builder. Pull request [#6167](https://github.com/rubygems/rubygems/pull/6167) by ianks +* Add `mswin` support for cargo builder. Pull request [#6167](https://github.com/ruby/rubygems/pull/6167) by ianks * Validate Cargo.lock is present for Rust based extensions. Pull request - [#6151](https://github.com/rubygems/rubygems/pull/6151) by simi -* Clean built artifacts after building extensions. Pull request [#6133](https://github.com/rubygems/rubygems/pull/6133) by + [#6151](https://github.com/ruby/rubygems/pull/6151) by simi +* Clean built artifacts after building extensions. Pull request [#6133](https://github.com/ruby/rubygems/pull/6133) by deivid-rodriguez * Installs bundler 2.4.0 as a default gem. ### Bug fixes: -* Fix crash due to `BundlerVersionFinder` not defined. Pull request [#6152](https://github.com/rubygems/rubygems/pull/6152) +* Fix crash due to `BundlerVersionFinder` not defined. Pull request [#6152](https://github.com/ruby/rubygems/pull/6152) by deivid-rodriguez * Don't leave corrupted partial package download around when running out - of disk space. Pull request [#5681](https://github.com/rubygems/rubygems/pull/5681) by duckinator + of disk space. Pull request [#5681](https://github.com/ruby/rubygems/pull/5681) by duckinator ## 3.3.26 / 2022-11-16 ### Enhancements: -* Upgrade rb-sys to 0.9.37. Pull request [#6047](https://github.com/rubygems/rubygems/pull/6047) by ianks +* Upgrade rb-sys to 0.9.37. Pull request [#6047](https://github.com/ruby/rubygems/pull/6047) by ianks * Installs bundler 2.3.26 as a default gem. ## 3.3.25 / 2022-11-02 ### Enhancements: -* Github source should default to secure protocol. Pull request [#6026](https://github.com/rubygems/rubygems/pull/6026) by +* Github source should default to secure protocol. Pull request [#6026](https://github.com/ruby/rubygems/pull/6026) by jasonkarns -* Allow upcoming JRuby to pass keywords to Kernel#warn. Pull request [#6002](https://github.com/rubygems/rubygems/pull/6002) +* Allow upcoming JRuby to pass keywords to Kernel#warn. Pull request [#6002](https://github.com/ruby/rubygems/pull/6002) by enebo * Installs bundler 2.3.25 as a default gem. @@ -1254,38 +1254,38 @@ ### Enhancements: * Add better error handling for permanent redirect responses. Pull request - [#5931](https://github.com/rubygems/rubygems/pull/5931) by jenshenny + [#5931](https://github.com/ruby/rubygems/pull/5931) by jenshenny * Installs bundler 2.3.23 as a default gem. ### Bug fixes: * Fix generic arm platform matching against runtime arm platforms with - eabi modifiers. Pull request [#5957](https://github.com/rubygems/rubygems/pull/5957) by deivid-rodriguez + eabi modifiers. Pull request [#5957](https://github.com/ruby/rubygems/pull/5957) by deivid-rodriguez * Fix `Gem::Platform.match` not handling String argument properly. Pull - request [#5939](https://github.com/rubygems/rubygems/pull/5939) by flavorjones -* Fix resolution on non-musl platforms. Pull request [#5915](https://github.com/rubygems/rubygems/pull/5915) by + request [#5939](https://github.com/ruby/rubygems/pull/5939) by flavorjones +* Fix resolution on non-musl platforms. Pull request [#5915](https://github.com/ruby/rubygems/pull/5915) by deivid-rodriguez -* Mask the file mode when extracting files. Pull request [#5906](https://github.com/rubygems/rubygems/pull/5906) by +* Mask the file mode when extracting files. Pull request [#5906](https://github.com/ruby/rubygems/pull/5906) by kddnewton ## 3.3.22 / 2022-09-07 ### Enhancements: -* Support non gnu libc arm-linux-eabi platforms. Pull request [#5889](https://github.com/rubygems/rubygems/pull/5889) by +* Support non gnu libc arm-linux-eabi platforms. Pull request [#5889](https://github.com/ruby/rubygems/pull/5889) by ntkme * Installs bundler 2.3.22 as a default gem. ### Bug fixes: -* Fix `gem info` with explicit `--version`. Pull request [#5884](https://github.com/rubygems/rubygems/pull/5884) by +* Fix `gem info` with explicit `--version`. Pull request [#5884](https://github.com/ruby/rubygems/pull/5884) by tonyaraujop ## 3.3.21 / 2022-08-24 ### Enhancements: -* Support non gnu libc linux platforms. Pull request [#5852](https://github.com/rubygems/rubygems/pull/5852) by +* Support non gnu libc linux platforms. Pull request [#5852](https://github.com/ruby/rubygems/pull/5852) by deivid-rodriguez * Installs bundler 2.3.21 as a default gem. @@ -1293,44 +1293,44 @@ ### Enhancements: -* Include backtrace with crashes by default. Pull request [#5811](https://github.com/rubygems/rubygems/pull/5811) by +* Include backtrace with crashes by default. Pull request [#5811](https://github.com/ruby/rubygems/pull/5811) by deivid-rodriguez * Don't create broken symlinks when a gem includes them, but print a - warning instead. Pull request [#5801](https://github.com/rubygems/rubygems/pull/5801) by deivid-rodriguez + warning instead. Pull request [#5801](https://github.com/ruby/rubygems/pull/5801) by deivid-rodriguez * Warn (rather than crash) when setting `nil` specification versions. Pull - request [#5794](https://github.com/rubygems/rubygems/pull/5794) by deivid-rodriguez + request [#5794](https://github.com/ruby/rubygems/pull/5794) by deivid-rodriguez * Installs bundler 2.3.20 as a default gem. ### Bug fixes: * Always consider installed specs for resolution, even if prereleases. - Pull request [#5821](https://github.com/rubygems/rubygems/pull/5821) by deivid-rodriguez + Pull request [#5821](https://github.com/ruby/rubygems/pull/5821) by deivid-rodriguez * Fix `gem install` with `--platform` flag not matching simulated platform - correctly. Pull request [#5820](https://github.com/rubygems/rubygems/pull/5820) by deivid-rodriguez -* Fix platform matching for index specs. Pull request [#5795](https://github.com/rubygems/rubygems/pull/5795) by Ilushkanama + correctly. Pull request [#5820](https://github.com/ruby/rubygems/pull/5820) by deivid-rodriguez +* Fix platform matching for index specs. Pull request [#5795](https://github.com/ruby/rubygems/pull/5795) by Ilushkanama ## 3.3.19 / 2022-07-27 ### Enhancements: -* Display mfa warnings on `gem signin`. Pull request [#5590](https://github.com/rubygems/rubygems/pull/5590) by aellispierce -* Require fileutils more lazily when installing gems. Pull request [#5738](https://github.com/rubygems/rubygems/pull/5738) +* Display mfa warnings on `gem signin`. Pull request [#5590](https://github.com/ruby/rubygems/pull/5590) by aellispierce +* Require fileutils more lazily when installing gems. Pull request [#5738](https://github.com/ruby/rubygems/pull/5738) by deivid-rodriguez * Fix upgrading RubyGems with a customized `Gem.default_dir`. Pull request - [#5728](https://github.com/rubygems/rubygems/pull/5728) by deivid-rodriguez + [#5728](https://github.com/ruby/rubygems/pull/5728) by deivid-rodriguez * Stop using `/dev/null` for silent ui for WASI platform. Pull request - [#5703](https://github.com/rubygems/rubygems/pull/5703) by kateinoigakukun -* Unify loading `Gem::Requirement`. Pull request [#5596](https://github.com/rubygems/rubygems/pull/5596) by deivid-rodriguez + [#5703](https://github.com/ruby/rubygems/pull/5703) by kateinoigakukun +* Unify loading `Gem::Requirement`. Pull request [#5596](https://github.com/ruby/rubygems/pull/5596) by deivid-rodriguez * Installs bundler 2.3.19 as a default gem. ### Bug fixes: * Fix `ruby setup.rb` with `--destdir` writing outside of `--destdir`. - Pull request [#5737](https://github.com/rubygems/rubygems/pull/5737) by deivid-rodriguez + Pull request [#5737](https://github.com/ruby/rubygems/pull/5737) by deivid-rodriguez ### Documentation: -* Fix wrong information about default RubyGems source. Pull request [#5723](https://github.com/rubygems/rubygems/pull/5723) +* Fix wrong information about default RubyGems source. Pull request [#5723](https://github.com/ruby/rubygems/pull/5723) by tnir ## 3.3.18 / 2022-07-14 @@ -1338,64 +1338,64 @@ ### Enhancements: * Make platform `universal-mingw32` match "x64-mingw-ucrt". Pull request - [#5655](https://github.com/rubygems/rubygems/pull/5655) by johnnyshields + [#5655](https://github.com/ruby/rubygems/pull/5655) by johnnyshields * Add more descriptive messages when `gem update` fails to update some - gems. Pull request [#5676](https://github.com/rubygems/rubygems/pull/5676) by brianleshopify + gems. Pull request [#5676](https://github.com/ruby/rubygems/pull/5676) by brianleshopify * Installs bundler 2.3.18 as a default gem. ### Bug fixes: * Make sure RubyGems prints no warnings when loading plugins. Pull request - [#5607](https://github.com/rubygems/rubygems/pull/5607) by deivid-rodriguez + [#5607](https://github.com/ruby/rubygems/pull/5607) by deivid-rodriguez ## 3.3.17 / 2022-06-29 ### Enhancements: * Document `gem env` argument aliases and add `gem env user_gemhome` and - `gem env user_gemdir`. Pull request [#5644](https://github.com/rubygems/rubygems/pull/5644) by deivid-rodriguez + `gem env user_gemdir`. Pull request [#5644](https://github.com/ruby/rubygems/pull/5644) by deivid-rodriguez * Improve error message when `operating_system.rb` fails to load. Pull - request [#5658](https://github.com/rubygems/rubygems/pull/5658) by deivid-rodriguez + request [#5658](https://github.com/ruby/rubygems/pull/5658) by deivid-rodriguez * Clean up temporary directory after `generate_index --update`. Pull - request [#5653](https://github.com/rubygems/rubygems/pull/5653) by graywolf-at-work -* Simplify extension builder. Pull request [#5626](https://github.com/rubygems/rubygems/pull/5626) by deivid-rodriguez + request [#5653](https://github.com/ruby/rubygems/pull/5653) by graywolf-at-work +* Simplify extension builder. Pull request [#5626](https://github.com/ruby/rubygems/pull/5626) by deivid-rodriguez * Installs bundler 2.3.17 as a default gem. ### Documentation: * Modify RubyGems issue template to be like the one for Bundler. Pull - request [#5643](https://github.com/rubygems/rubygems/pull/5643) by deivid-rodriguez + request [#5643](https://github.com/ruby/rubygems/pull/5643) by deivid-rodriguez ## 3.3.16 / 2022-06-15 ### Enhancements: * Auto-fix and warn gem packages including a gemspec with `require_paths` - as an array of arrays. Pull request [#5615](https://github.com/rubygems/rubygems/pull/5615) by deivid-rodriguez -* Misc cargo builder improvements. Pull request [#5459](https://github.com/rubygems/rubygems/pull/5459) by ianks + as an array of arrays. Pull request [#5615](https://github.com/ruby/rubygems/pull/5615) by deivid-rodriguez +* Misc cargo builder improvements. Pull request [#5459](https://github.com/ruby/rubygems/pull/5459) by ianks * Installs bundler 2.3.16 as a default gem. ### Bug fixes: * Fix incorrect password redaction when there's an error in `gem source - -a`. Pull request [#5623](https://github.com/rubygems/rubygems/pull/5623) by deivid-rodriguez + -a`. Pull request [#5623](https://github.com/ruby/rubygems/pull/5623) by deivid-rodriguez * Fix another regression when loading old marshaled specs. Pull request - [#5610](https://github.com/rubygems/rubygems/pull/5610) by deivid-rodriguez + [#5610](https://github.com/ruby/rubygems/pull/5610) by deivid-rodriguez ## 3.3.15 / 2022-06-01 ### Enhancements: * Support the change of did_you_mean about `Exception#detailed_message`. - Pull request [#5560](https://github.com/rubygems/rubygems/pull/5560) by mame + Pull request [#5560](https://github.com/ruby/rubygems/pull/5560) by mame * Installs bundler 2.3.15 as a default gem. ### Bug fixes: * Fix loading old marshaled specs including `YAML::PrivateType` constant. - Pull request [#5415](https://github.com/rubygems/rubygems/pull/5415) by deivid-rodriguez + Pull request [#5415](https://github.com/ruby/rubygems/pull/5415) by deivid-rodriguez * Fix rubygems update when non default `--install-dir` is configured. Pull - request [#5566](https://github.com/rubygems/rubygems/pull/5566) by deivid-rodriguez + request [#5566](https://github.com/ruby/rubygems/pull/5566) by deivid-rodriguez ## 3.3.14 / 2022-05-18 @@ -1411,43 +1411,43 @@ ### Bug fixes: -* Fix regression when resolving ruby constraints. Pull request [#5486](https://github.com/rubygems/rubygems/pull/5486) by +* Fix regression when resolving ruby constraints. Pull request [#5486](https://github.com/ruby/rubygems/pull/5486) by deivid-rodriguez ### Documentation: -* Clarify description of owner-flags. Pull request [#5497](https://github.com/rubygems/rubygems/pull/5497) by kronn +* Clarify description of owner-flags. Pull request [#5497](https://github.com/ruby/rubygems/pull/5497) by kronn ## 3.3.12 / 2022-04-20 ### Enhancements: -* Less error swallowing when installing gems. Pull request [#5475](https://github.com/rubygems/rubygems/pull/5475) by +* Less error swallowing when installing gems. Pull request [#5475](https://github.com/ruby/rubygems/pull/5475) by deivid-rodriguez -* Stop considering `RUBY_PATCHLEVEL` for resolution. Pull request [#5472](https://github.com/rubygems/rubygems/pull/5472) by +* Stop considering `RUBY_PATCHLEVEL` for resolution. Pull request [#5472](https://github.com/ruby/rubygems/pull/5472) by deivid-rodriguez -* Bump vendored optparse to latest master. Pull request [#5466](https://github.com/rubygems/rubygems/pull/5466) by +* Bump vendored optparse to latest master. Pull request [#5466](https://github.com/ruby/rubygems/pull/5466) by deivid-rodriguez * Installs bundler 2.3.12 as a default gem. ### Documentation: -* Fix formatting in docs. Pull request [#5470](https://github.com/rubygems/rubygems/pull/5470) by peterzhu2118 -* Fix a typo. Pull request [#5401](https://github.com/rubygems/rubygems/pull/5401) by znz +* Fix formatting in docs. Pull request [#5470](https://github.com/ruby/rubygems/pull/5470) by peterzhu2118 +* Fix a typo. Pull request [#5401](https://github.com/ruby/rubygems/pull/5401) by znz ## 3.3.11 / 2022-04-07 ### Enhancements: -* Enable mfa on specific keys during gem signin. Pull request [#5305](https://github.com/rubygems/rubygems/pull/5305) by +* Enable mfa on specific keys during gem signin. Pull request [#5305](https://github.com/ruby/rubygems/pull/5305) by aellispierce -* Prefer `__dir__` to `__FILE__`. Pull request [#5444](https://github.com/rubygems/rubygems/pull/5444) by deivid-rodriguez -* Add cargo builder for rust extensions. Pull request [#5175](https://github.com/rubygems/rubygems/pull/5175) by ianks +* Prefer `__dir__` to `__FILE__`. Pull request [#5444](https://github.com/ruby/rubygems/pull/5444) by deivid-rodriguez +* Add cargo builder for rust extensions. Pull request [#5175](https://github.com/ruby/rubygems/pull/5175) by ianks * Installs bundler 2.3.11 as a default gem. ### Documentation: -* Improve RDoc setup. Pull request [#5398](https://github.com/rubygems/rubygems/pull/5398) by deivid-rodriguez +* Improve RDoc setup. Pull request [#5398](https://github.com/ruby/rubygems/pull/5398) by deivid-rodriguez ## 3.3.10 / 2022-03-23 @@ -1457,10 +1457,10 @@ ### Documentation: -* Enable `Gem::Package` example in RDoc documentation. Pull request [#5399](https://github.com/rubygems/rubygems/pull/5399) +* Enable `Gem::Package` example in RDoc documentation. Pull request [#5399](https://github.com/ruby/rubygems/pull/5399) by nobu * Unhide RDoc documentation from top level `Gem` module. Pull request - [#5396](https://github.com/rubygems/rubygems/pull/5396) by nobu + [#5396](https://github.com/ruby/rubygems/pull/5396) by nobu ## 3.3.9 / 2022-03-09 @@ -1482,64 +1482,64 @@ ### Documentation: -* Fix missing rdoc for `Gem::Version`. Pull request [#5299](https://github.com/rubygems/rubygems/pull/5299) by nevans +* Fix missing rdoc for `Gem::Version`. Pull request [#5299](https://github.com/ruby/rubygems/pull/5299) by nevans ## 3.3.6 / 2022-01-26 ### Enhancements: * Forbid downgrading past the originally shipped version on Ruby 3.1. Pull - request [#5301](https://github.com/rubygems/rubygems/pull/5301) by deivid-rodriguez -* Support `--enable-load-relative` inside binstubs. Pull request [#2929](https://github.com/rubygems/rubygems/pull/2929) by + request [#5301](https://github.com/ruby/rubygems/pull/5301) by deivid-rodriguez +* Support `--enable-load-relative` inside binstubs. Pull request [#2929](https://github.com/ruby/rubygems/pull/2929) by deivid-rodriguez -* Let `Version#<=>` accept a String. Pull request [#5275](https://github.com/rubygems/rubygems/pull/5275) by amatsuda +* Let `Version#<=>` accept a String. Pull request [#5275](https://github.com/ruby/rubygems/pull/5275) by amatsuda * Installs bundler 2.3.6 as a default gem. ### Bug fixes: * Avoid `flock` on non Windows systems, since it causing issues on NFS - file systems. Pull request [#5278](https://github.com/rubygems/rubygems/pull/5278) by deivid-rodriguez + file systems. Pull request [#5278](https://github.com/ruby/rubygems/pull/5278) by deivid-rodriguez * Fix `gem update --system` for already installed version of - `rubygems-update`. Pull request [#5285](https://github.com/rubygems/rubygems/pull/5285) by loadkpi + `rubygems-update`. Pull request [#5285](https://github.com/ruby/rubygems/pull/5285) by loadkpi ## 3.3.5 / 2022-01-12 ### Enhancements: -* Don't activate `yaml` gem from RubyGems. Pull request [#5266](https://github.com/rubygems/rubygems/pull/5266) by +* Don't activate `yaml` gem from RubyGems. Pull request [#5266](https://github.com/ruby/rubygems/pull/5266) by deivid-rodriguez * Let `gem fetch` understand `:` syntax and - `--[no-]suggestions` flag. Pull request [#5242](https://github.com/rubygems/rubygems/pull/5242) by ximenasandoval + `--[no-]suggestions` flag. Pull request [#5242](https://github.com/ruby/rubygems/pull/5242) by ximenasandoval * Installs bundler 2.3.5 as a default gem. ### Bug fixes: -* Fix `gem install --force` crash. Pull request [#5262](https://github.com/rubygems/rubygems/pull/5262) +* Fix `gem install --force` crash. Pull request [#5262](https://github.com/ruby/rubygems/pull/5262) by deivid-rodriguez -* Fix longstanding `gem install` failure on JRuby. Pull request [#5228](https://github.com/rubygems/rubygems/pull/5228) by +* Fix longstanding `gem install` failure on JRuby. Pull request [#5228](https://github.com/ruby/rubygems/pull/5228) by deivid-rodriguez ### Documentation: * Markup `Gem::Specification` documentation with RDoc notations. Pull - request [#5268](https://github.com/rubygems/rubygems/pull/5268) by nobu + request [#5268](https://github.com/ruby/rubygems/pull/5268) by nobu ## 3.3.4 / 2021-12-29 ### Enhancements: * Don't redownload `rubygems-update` package if already there. Pull - request [#5230](https://github.com/rubygems/rubygems/pull/5230) by deivid-rodriguez + request [#5230](https://github.com/ruby/rubygems/pull/5230) by deivid-rodriguez * Installs bundler 2.3.4 as a default gem. ### Bug fixes: * Fix `gem update --system` crashing when latest version not supported. - Pull request [#5191](https://github.com/rubygems/rubygems/pull/5191) by deivid-rodriguez + Pull request [#5191](https://github.com/ruby/rubygems/pull/5191) by deivid-rodriguez ### Performance: -* Make SpecificationPolicy autoload constant. Pull request [#5222](https://github.com/rubygems/rubygems/pull/5222) by pocke +* Make SpecificationPolicy autoload constant. Pull request [#5222](https://github.com/ruby/rubygems/pull/5222) by pocke ## 3.3.3 / 2021-12-24 @@ -1550,103 +1550,103 @@ ### Bug fixes: * Fix gem installation failing in Solaris due to bad `IO#flock` usage. - Pull request [#5216](https://github.com/rubygems/rubygems/pull/5216) by mame + Pull request [#5216](https://github.com/ruby/rubygems/pull/5216) by mame ## 3.3.2 / 2021-12-23 ### Enhancements: * Fix deprecations when activating DidYouMean for misspelled command - suggestions. Pull request [#5211](https://github.com/rubygems/rubygems/pull/5211) by yuki24 + suggestions. Pull request [#5211](https://github.com/ruby/rubygems/pull/5211) by yuki24 * Installs bundler 2.3.2 as a default gem. ### Bug fixes: -* Fix gemspec truncation. Pull request [#5208](https://github.com/rubygems/rubygems/pull/5208) by deivid-rodriguez +* Fix gemspec truncation. Pull request [#5208](https://github.com/ruby/rubygems/pull/5208) by deivid-rodriguez ## 3.3.1 / 2021-12-22 ### Enhancements: -* Fix compatibility with OpenSSL 3.0. Pull request [#5196](https://github.com/rubygems/rubygems/pull/5196) by rhenium +* Fix compatibility with OpenSSL 3.0. Pull request [#5196](https://github.com/ruby/rubygems/pull/5196) by rhenium * Remove hard errors when matching major bundler not found. Pull request - [#5181](https://github.com/rubygems/rubygems/pull/5181) by deivid-rodriguez + [#5181](https://github.com/ruby/rubygems/pull/5181) by deivid-rodriguez * Installs bundler 2.3.1 as a default gem. ## 3.3.0 / 2021-12-21 ### Breaking changes: -* Removed deprecated `gem server` command. Pull request [#5034](https://github.com/rubygems/rubygems/pull/5034) by hsbt -* Remove macOS specific gem layout. Pull request [#4833](https://github.com/rubygems/rubygems/pull/4833) by deivid-rodriguez +* Removed deprecated `gem server` command. Pull request [#5034](https://github.com/ruby/rubygems/pull/5034) by hsbt +* Remove macOS specific gem layout. Pull request [#4833](https://github.com/ruby/rubygems/pull/4833) by deivid-rodriguez * Default `gem update` documentation format is now only `ri`. Pull request - [#3888](https://github.com/rubygems/rubygems/pull/3888) by hsbt + [#3888](https://github.com/ruby/rubygems/pull/3888) by hsbt ### Features: * Give command misspelled suggestions via `did_you_mean` gem. Pull request - [#3904](https://github.com/rubygems/rubygems/pull/3904) by hsbt + [#3904](https://github.com/ruby/rubygems/pull/3904) by hsbt ### Performance: -* Avoid some unnecessary stat calls. Pull request [#3887](https://github.com/rubygems/rubygems/pull/3887) by kares +* Avoid some unnecessary stat calls. Pull request [#3887](https://github.com/ruby/rubygems/pull/3887) by kares * Improve spell checking suggestion performance by vendoring`DidYouMean::Levenshtein.distance` from `did_you_mean-1.4.0`. - Pull request [#3856](https://github.com/rubygems/rubygems/pull/3856) by austinpray + Pull request [#3856](https://github.com/ruby/rubygems/pull/3856) by austinpray ### Enhancements: * Set `BUNDLER_VERSION` when `bundle __` is passed. Pull request - [#5180](https://github.com/rubygems/rubygems/pull/5180) by deivid-rodriguez -* Don't require `rdoc` for `gem uninstall`. Pull request [#4691](https://github.com/rubygems/rubygems/pull/4691) by ndren + [#5180](https://github.com/ruby/rubygems/pull/5180) by deivid-rodriguez +* Don't require `rdoc` for `gem uninstall`. Pull request [#4691](https://github.com/ruby/rubygems/pull/4691) by ndren * More focused rescue on extension builder exception to get more - information on errors. Pull request [#4189](https://github.com/rubygems/rubygems/pull/4189) by deivid-rodriguez + information on errors. Pull request [#4189](https://github.com/ruby/rubygems/pull/4189) by deivid-rodriguez * Installs bundler 2.3.0 as a default gem. ### Bug fixes: * Fix encoding mismatch issues when writing gem packages. Pull request - [#5162](https://github.com/rubygems/rubygems/pull/5162) by deivid-rodriguez + [#5162](https://github.com/ruby/rubygems/pull/5162) by deivid-rodriguez * Fix broken brew formula due to loading `operating_system.rb` - customizations too late. Pull request [#5154](https://github.com/rubygems/rubygems/pull/5154) by deivid-rodriguez + customizations too late. Pull request [#5154](https://github.com/ruby/rubygems/pull/5154) by deivid-rodriguez * Properly fetch `Gem#latest_spec_for` with multiple sources. Pull request - [#2764](https://github.com/rubygems/rubygems/pull/2764) by kevlogan90 + [#2764](https://github.com/ruby/rubygems/pull/2764) by kevlogan90 * Fix upgrade crashing when multiple versions of `fileutils` installed. - Pull request [#5140](https://github.com/rubygems/rubygems/pull/5140) by deivid-rodriguez + Pull request [#5140](https://github.com/ruby/rubygems/pull/5140) by deivid-rodriguez ## 3.2.33 / 2021-12-07 ### Deprecations: -* Deprecate typo name. Pull request [#5109](https://github.com/rubygems/rubygems/pull/5109) by nobu +* Deprecate typo name. Pull request [#5109](https://github.com/ruby/rubygems/pull/5109) by nobu ### Enhancements: * Add login & logout alias for the signin & signout commands. Pull request - [#5133](https://github.com/rubygems/rubygems/pull/5133) by colby-swandale + [#5133](https://github.com/ruby/rubygems/pull/5133) by colby-swandale * Fix race conditions when reading & writing gemspecs concurrently. Pull - request [#4408](https://github.com/rubygems/rubygems/pull/4408) by deivid-rodriguez + request [#4408](https://github.com/ruby/rubygems/pull/4408) by deivid-rodriguez * Installs bundler 2.2.33 as a default gem. ### Bug fixes: * Fix `ruby setup.rb` trying to write outside of `--destdir`. Pull request - [#5053](https://github.com/rubygems/rubygems/pull/5053) by deivid-rodriguez + [#5053](https://github.com/ruby/rubygems/pull/5053) by deivid-rodriguez ### Documentation: * Move required_ruby_version gemspec attribute to recommended section. - Pull request [#5130](https://github.com/rubygems/rubygems/pull/5130) by simi + Pull request [#5130](https://github.com/ruby/rubygems/pull/5130) by simi * Ignore to generate the documentation from vendored libraries. Pull - request [#5118](https://github.com/rubygems/rubygems/pull/5118) by hsbt + request [#5118](https://github.com/ruby/rubygems/pull/5118) by hsbt ## 3.2.32 / 2021-11-23 ### Enhancements: -* Refactor installer thread safety protections. Pull request [#5050](https://github.com/rubygems/rubygems/pull/5050) by +* Refactor installer thread safety protections. Pull request [#5050](https://github.com/ruby/rubygems/pull/5050) by deivid-rodriguez -* Allow gem activation from `operating_system.rb`. Pull request [#5044](https://github.com/rubygems/rubygems/pull/5044) by +* Allow gem activation from `operating_system.rb`. Pull request [#5044](https://github.com/ruby/rubygems/pull/5044) by deivid-rodriguez * Installs bundler 2.2.32 as a default gem. @@ -1655,39 +1655,39 @@ ### Enhancements: * Don't pass empty `DESTDIR` to `nmake` since it works differently from - standard `make`. Pull request [#5057](https://github.com/rubygems/rubygems/pull/5057) by hsbt -* Fix `gem install` vs `gem fetch` inconsistency. Pull request [#5037](https://github.com/rubygems/rubygems/pull/5037) by + standard `make`. Pull request [#5057](https://github.com/ruby/rubygems/pull/5057) by hsbt +* Fix `gem install` vs `gem fetch` inconsistency. Pull request [#5037](https://github.com/ruby/rubygems/pull/5037) by deivid-rodriguez -* Lazily load and vendor `optparse`. Pull request [#4881](https://github.com/rubygems/rubygems/pull/4881) by +* Lazily load and vendor `optparse`. Pull request [#4881](https://github.com/ruby/rubygems/pull/4881) by deivid-rodriguez -* Use a vendored copy of `tsort` internally. Pull request [#5027](https://github.com/rubygems/rubygems/pull/5027) by +* Use a vendored copy of `tsort` internally. Pull request [#5027](https://github.com/ruby/rubygems/pull/5027) by deivid-rodriguez * Install bundler 2.2.31 as a default gem. ### Bug fixes: -* Fix `ruby setup.rb` when `--prefix` is passed. Pull request [#5051](https://github.com/rubygems/rubygems/pull/5051) by +* Fix `ruby setup.rb` when `--prefix` is passed. Pull request [#5051](https://github.com/ruby/rubygems/pull/5051) by deivid-rodriguez * Don't apply `--destdir` twice when running `setup.rb`. Pull request - [#2768](https://github.com/rubygems/rubygems/pull/2768) by alyssais + [#2768](https://github.com/ruby/rubygems/pull/2768) by alyssais ## 3.2.30 / 2021-10-26 ### Enhancements: * Add support to build and sign certificates with multiple key algorithms. - Pull request [#4991](https://github.com/rubygems/rubygems/pull/4991) by doodzik -* Avoid loading the `digest` gem unnecessarily. Pull request [#4979](https://github.com/rubygems/rubygems/pull/4979) by + Pull request [#4991](https://github.com/ruby/rubygems/pull/4991) by doodzik +* Avoid loading the `digest` gem unnecessarily. Pull request [#4979](https://github.com/ruby/rubygems/pull/4979) by deivid-rodriguez -* Prefer `require_relative` for all internal requires. Pull request [#4978](https://github.com/rubygems/rubygems/pull/4978) +* Prefer `require_relative` for all internal requires. Pull request [#4978](https://github.com/ruby/rubygems/pull/4978) by deivid-rodriguez * Add missing `require` of `time` within - `Gem::Request.verify_certificate_message`. Pull request [#4975](https://github.com/rubygems/rubygems/pull/4975) by nobu + `Gem::Request.verify_certificate_message`. Pull request [#4975](https://github.com/ruby/rubygems/pull/4975) by nobu * Install bundler 2.2.30 as a default gem. ### Performance: -* Speed up `gem install`, specially under Windows. Pull request [#4960](https://github.com/rubygems/rubygems/pull/4960) by +* Speed up `gem install`, specially under Windows. Pull request [#4960](https://github.com/ruby/rubygems/pull/4960) by deivid-rodriguez ## 3.2.29 / 2021-10-08 @@ -1695,44 +1695,44 @@ ### Enhancements: * Only disallow FIXME/TODO for first word of gemspec description. Pull - request [#4937](https://github.com/rubygems/rubygems/pull/4937) by duckinator + request [#4937](https://github.com/ruby/rubygems/pull/4937) by duckinator * Install bundler 2.2.29 as a default gem. ### Bug fixes: * Fix `wordy` method in `SourceFetchProblem` changing the password of - source. Pull request [#4910](https://github.com/rubygems/rubygems/pull/4910) by Huangxiaodui + source. Pull request [#4910](https://github.com/ruby/rubygems/pull/4910) by Huangxiaodui ### Performance: * Improve `require` performance, particularly on systems with a lot of - gems installed. Pull request [#4951](https://github.com/rubygems/rubygems/pull/4951) by pocke + gems installed. Pull request [#4951](https://github.com/ruby/rubygems/pull/4951) by pocke ## 3.2.28 / 2021-09-23 ### Enhancements: -* Support MINGW-UCRT. Pull request [#4925](https://github.com/rubygems/rubygems/pull/4925) by hsbt -* Only check if descriptions *start with* FIXME/TODO. Pull request [#4841](https://github.com/rubygems/rubygems/pull/4841) +* Support MINGW-UCRT. Pull request [#4925](https://github.com/ruby/rubygems/pull/4925) by hsbt +* Only check if descriptions *start with* FIXME/TODO. Pull request [#4841](https://github.com/ruby/rubygems/pull/4841) by duckinator * Avoid loading `uri` unnecessarily when activating gems. Pull request - [#4897](https://github.com/rubygems/rubygems/pull/4897) by deivid-rodriguez + [#4897](https://github.com/ruby/rubygems/pull/4897) by deivid-rodriguez * Install bundler 2.2.28 as a default gem. ### Bug fixes: -* Fix redacted credentials being sent to gemserver. Pull request [#4919](https://github.com/rubygems/rubygems/pull/4919) by +* Fix redacted credentials being sent to gemserver. Pull request [#4919](https://github.com/ruby/rubygems/pull/4919) by jdliss ## 3.2.27 / 2021-09-03 ### Enhancements: -* Redact credentials when printing URI. Pull request [#4868](https://github.com/rubygems/rubygems/pull/4868) by intuxicated +* Redact credentials when printing URI. Pull request [#4868](https://github.com/ruby/rubygems/pull/4868) by intuxicated * Prefer `require_relative` to `require` for internal requires. Pull - request [#4858](https://github.com/rubygems/rubygems/pull/4858) by deivid-rodriguez + request [#4858](https://github.com/ruby/rubygems/pull/4858) by deivid-rodriguez * Prioritise gems with higher version for fetching metadata, and stop - fetching once we find a valid candidate. Pull request [#4843](https://github.com/rubygems/rubygems/pull/4843) by intuxicated + fetching once we find a valid candidate. Pull request [#4843](https://github.com/ruby/rubygems/pull/4843) by intuxicated * Install bundler 2.2.27 as a default gem. ## 3.2.26 / 2021-08-17 @@ -1740,34 +1740,34 @@ ### Enhancements: * Enhance the error handling for loading the - `rubygems/defaults/operating_system` file. Pull request [#4824](https://github.com/rubygems/rubygems/pull/4824) by + `rubygems/defaults/operating_system` file. Pull request [#4824](https://github.com/ruby/rubygems/pull/4824) by intuxicated -* Ignore `RUBYGEMS_GEMDEPS` for the bundler gem. Pull request [#4532](https://github.com/rubygems/rubygems/pull/4532) by +* Ignore `RUBYGEMS_GEMDEPS` for the bundler gem. Pull request [#4532](https://github.com/ruby/rubygems/pull/4532) by deivid-rodriguez * Install bundler 2.2.26 as a default gem. ### Bug fixes: -* Also load user installed rubygems plugins. Pull request [#4829](https://github.com/rubygems/rubygems/pull/4829) by +* Also load user installed rubygems plugins. Pull request [#4829](https://github.com/ruby/rubygems/pull/4829) by deivid-rodriguez ## 3.2.25 / 2021-07-30 ### Enhancements: -* Don't load the `base64` library since it's not used. Pull request [#4785](https://github.com/rubygems/rubygems/pull/4785) +* Don't load the `base64` library since it's not used. Pull request [#4785](https://github.com/ruby/rubygems/pull/4785) by deivid-rodriguez -* Don't load the `resolv` library since it's not used. Pull request [#4784](https://github.com/rubygems/rubygems/pull/4784) +* Don't load the `resolv` library since it's not used. Pull request [#4784](https://github.com/ruby/rubygems/pull/4784) by deivid-rodriguez -* Lazily load `shellwords` library. Pull request [#4783](https://github.com/rubygems/rubygems/pull/4783) by deivid-rodriguez +* Lazily load `shellwords` library. Pull request [#4783](https://github.com/ruby/rubygems/pull/4783) by deivid-rodriguez * Check requirements class before loading marshalled requirements. Pull - request [#4651](https://github.com/rubygems/rubygems/pull/4651) by nobu + request [#4651](https://github.com/ruby/rubygems/pull/4651) by nobu * Install bundler 2.2.25 as a default gem. ### Bug fixes: * Add missing `require 'fileutils'` in `Gem::ConfigFile`. Pull request - [#4768](https://github.com/rubygems/rubygems/pull/4768) by ybiquitous + [#4768](https://github.com/ruby/rubygems/pull/4768) by ybiquitous ## 3.2.24 / 2021-07-15 @@ -1778,56 +1778,56 @@ ### Bug fixes: * Fix contradictory message about deletion of default gem. Pull request - [#4739](https://github.com/rubygems/rubygems/pull/4739) by jaredbeck + [#4739](https://github.com/ruby/rubygems/pull/4739) by jaredbeck ### Documentation: * Add a description about `GEM_HOST_OTP_CODE` to help text. Pull request - [#4742](https://github.com/rubygems/rubygems/pull/4742) by ybiquitous + [#4742](https://github.com/ruby/rubygems/pull/4742) by ybiquitous ## 3.2.23 / 2021-07-09 ### Enhancements: * Rewind IO source to allow working with contents in memory. Pull request - [#4729](https://github.com/rubygems/rubygems/pull/4729) by drcapulet + [#4729](https://github.com/ruby/rubygems/pull/4729) by drcapulet * Install bundler 2.2.23 as a default gem. ## 3.2.22 / 2021-07-06 ### Enhancements: -* Allow setting `--otp` via `GEM_HOST_OTP_CODE`. Pull request [#4697](https://github.com/rubygems/rubygems/pull/4697) by +* Allow setting `--otp` via `GEM_HOST_OTP_CODE`. Pull request [#4697](https://github.com/ruby/rubygems/pull/4697) by CGA1123 * Fixes for the edge case when openssl library is missing. Pull request - [#4695](https://github.com/rubygems/rubygems/pull/4695) by rhenium + [#4695](https://github.com/ruby/rubygems/pull/4695) by rhenium * Install bundler 2.2.22 as a default gem. ## 3.2.21 / 2021-06-23 ### Enhancements: -* Fix typo in OpenSSL detection. Pull request [#4679](https://github.com/rubygems/rubygems/pull/4679) by osyoyu -* Add the most recent licenses from spdx.org. Pull request [#4662](https://github.com/rubygems/rubygems/pull/4662) by nobu +* Fix typo in OpenSSL detection. Pull request [#4679](https://github.com/ruby/rubygems/pull/4679) by osyoyu +* Add the most recent licenses from spdx.org. Pull request [#4662](https://github.com/ruby/rubygems/pull/4662) by nobu * Simplify setup.rb code to allow installing rubygems from source on - truffleruby 21.0 and 21.1. Pull request [#4624](https://github.com/rubygems/rubygems/pull/4624) by deivid-rodriguez + truffleruby 21.0 and 21.1. Pull request [#4624](https://github.com/ruby/rubygems/pull/4624) by deivid-rodriguez * Install bundler 2.2.21 as a default gem. ### Bug fixes: * Create credentials folder when setting API keys if not there yet. Pull - request [#4665](https://github.com/rubygems/rubygems/pull/4665) by deivid-rodriguez + request [#4665](https://github.com/ruby/rubygems/pull/4665) by deivid-rodriguez ## 3.2.20 / 2021-06-11 ### Security fixes: * Verify platform before installing to avoid potential remote code - execution. Pull request [#4667](https://github.com/rubygems/rubygems/pull/4667) by sonalkr132 + execution. Pull request [#4667](https://github.com/ruby/rubygems/pull/4667) by sonalkr132 ### Enhancements: -* Add better specification policy error description. Pull request [#4658](https://github.com/rubygems/rubygems/pull/4658) by +* Add better specification policy error description. Pull request [#4658](https://github.com/ruby/rubygems/pull/4658) by ceritium * Install bundler 2.2.20 as a default gem. @@ -1835,7 +1835,7 @@ ### Enhancements: -* Fix `gem help build` output format. Pull request [#4613](https://github.com/rubygems/rubygems/pull/4613) by tnir +* Fix `gem help build` output format. Pull request [#4613](https://github.com/ruby/rubygems/pull/4613) by tnir * Install bundler 2.2.19 as a default gem. ## 3.2.18 / 2021-05-25 @@ -1843,25 +1843,25 @@ ### Enhancements: * Don't leave temporary directory around when building extensions to - improve build reproducibility. Pull request [#4610](https://github.com/rubygems/rubygems/pull/4610) by baloo + improve build reproducibility. Pull request [#4610](https://github.com/ruby/rubygems/pull/4610) by baloo * Install bundler 2.2.18 as a default gem. ## 3.2.17 / 2021-05-05 ### Enhancements: -* Only print month & year in deprecation messages. Pull request [#3085](https://github.com/rubygems/rubygems/pull/3085) by +* Only print month & year in deprecation messages. Pull request [#3085](https://github.com/ruby/rubygems/pull/3085) by Schwad * Make deprecate method support ruby3's keyword arguments. Pull request - [#4558](https://github.com/rubygems/rubygems/pull/4558) by mame -* Update the default bindir on macOS. Pull request [#4524](https://github.com/rubygems/rubygems/pull/4524) by nobu -* Prefer File.open instead of Kernel#open. Pull request [#4529](https://github.com/rubygems/rubygems/pull/4529) by mame + [#4558](https://github.com/ruby/rubygems/pull/4558) by mame +* Update the default bindir on macOS. Pull request [#4524](https://github.com/ruby/rubygems/pull/4524) by nobu +* Prefer File.open instead of Kernel#open. Pull request [#4529](https://github.com/ruby/rubygems/pull/4529) by mame * Install bundler 2.2.17 as a default gem. ### Documentation: * Fix usage messages to reflect the current POSIX-compatible behaviour. - Pull request [#4551](https://github.com/rubygems/rubygems/pull/4551) by graywolf-at-work + Pull request [#4551](https://github.com/ruby/rubygems/pull/4551) by graywolf-at-work ## 3.2.16 / 2021-04-08 @@ -1871,31 +1871,31 @@ ### Bug fixes: -* Correctly handle symlinks. Pull request [#2836](https://github.com/rubygems/rubygems/pull/2836) by voxik +* Correctly handle symlinks. Pull request [#2836](https://github.com/ruby/rubygems/pull/2836) by voxik ## 3.2.15 / 2021-03-19 ### Enhancements: -* Prevent downgrades to untested rubygems versions. Pull request [#4460](https://github.com/rubygems/rubygems/pull/4460) by +* Prevent downgrades to untested rubygems versions. Pull request [#4460](https://github.com/ruby/rubygems/pull/4460) by deivid-rodriguez * Install bundler 2.2.15 as a default gem. ### Bug fixes: -* Fix missing require breaking `gem cert`. Pull request [#4464](https://github.com/rubygems/rubygems/pull/4464) by lukehinds +* Fix missing require breaking `gem cert`. Pull request [#4464](https://github.com/ruby/rubygems/pull/4464) by lukehinds ## 3.2.14 / 2021-03-08 ### Enhancements: -* Less wrapping of network errors. Pull request [#4064](https://github.com/rubygems/rubygems/pull/4064) by deivid-rodriguez +* Less wrapping of network errors. Pull request [#4064](https://github.com/ruby/rubygems/pull/4064) by deivid-rodriguez * Install bundler 2.2.14 as a default gem. ### Bug fixes: * Revert addition of support for `musl` variants to restore graceful - fallback on Alpine. Pull request [#4434](https://github.com/rubygems/rubygems/pull/4434) by deivid-rodriguez + fallback on Alpine. Pull request [#4434](https://github.com/ruby/rubygems/pull/4434) by deivid-rodriguez ## 3.2.13 / 2021-03-03 @@ -1905,7 +1905,7 @@ ### Bug fixes: -* Support non-gnu libc linux platforms. Pull request [#4082](https://github.com/rubygems/rubygems/pull/4082) by lloeki +* Support non-gnu libc linux platforms. Pull request [#4082](https://github.com/ruby/rubygems/pull/4082) by lloeki ## 3.2.12 / 2021-03-01 @@ -1916,13 +1916,13 @@ ### Bug fixes: * Restore the ability to manually install extension gems. Pull request - [#4384](https://github.com/rubygems/rubygems/pull/4384) by cfis + [#4384](https://github.com/ruby/rubygems/pull/4384) by cfis ## 3.2.11 / 2021-02-17 ### Enhancements: -* Optionally fallback to IPv4 when IPv6 is unreachable. Pull request [#2662](https://github.com/rubygems/rubygems/pull/2662) +* Optionally fallback to IPv4 when IPv6 is unreachable. Pull request [#2662](https://github.com/ruby/rubygems/pull/2662) by sonalkr132 * Install bundler 2.2.11 as a default gem. @@ -1934,9 +1934,9 @@ ### Documentation: -* Add a `gem push` example to `gem help`. Pull request [#4373](https://github.com/rubygems/rubygems/pull/4373) by +* Add a `gem push` example to `gem help`. Pull request [#4373](https://github.com/ruby/rubygems/pull/4373) by deivid-rodriguez -* Improve documentation for `required_ruby_version`. Pull request [#4343](https://github.com/rubygems/rubygems/pull/4343) by +* Improve documentation for `required_ruby_version`. Pull request [#4343](https://github.com/ruby/rubygems/pull/4343) by AlexWayfer ## 3.2.9 / 2021-02-08 @@ -1948,13 +1948,13 @@ ### Bug fixes: * Fix error message when underscore selection can't find bundler. Pull - request [#4363](https://github.com/rubygems/rubygems/pull/4363) by deivid-rodriguez + request [#4363](https://github.com/ruby/rubygems/pull/4363) by deivid-rodriguez * Fix `Gem::Specification.stubs_for` returning wrong named specs. Pull - request [#4356](https://github.com/rubygems/rubygems/pull/4356) by tompng + request [#4356](https://github.com/ruby/rubygems/pull/4356) by tompng * Don't error out when activating a binstub unless necessary. Pull request - [#4351](https://github.com/rubygems/rubygems/pull/4351) by deivid-rodriguez + [#4351](https://github.com/ruby/rubygems/pull/4351) by deivid-rodriguez * Fix `gem outdated` incorrectly handling platform specific gems. Pull - request [#4248](https://github.com/rubygems/rubygems/pull/4248) by deivid-rodriguez + request [#4248](https://github.com/ruby/rubygems/pull/4248) by deivid-rodriguez ## 3.2.8 / 2021-02-02 @@ -1965,7 +1965,7 @@ ### Bug fixes: * Fix `gem install` crashing on gemspec with nil required_ruby_version. - Pull request [#4334](https://github.com/rubygems/rubygems/pull/4334) by pbernays + Pull request [#4334](https://github.com/ruby/rubygems/pull/4334) by pbernays ## 3.2.7 / 2021-01-26 @@ -1975,7 +1975,7 @@ ### Bug fixes: -* Generate plugin wrappers with relative requires. Pull request [#4317](https://github.com/rubygems/rubygems/pull/4317) by +* Generate plugin wrappers with relative requires. Pull request [#4317](https://github.com/ruby/rubygems/pull/4317) by deivid-rodriguez ## 3.2.6 / 2021-01-18 @@ -1983,15 +1983,15 @@ ### Enhancements: * Fix `Gem::Platform#inspect` showing duplicate information. Pull request - [#4276](https://github.com/rubygems/rubygems/pull/4276) by deivid-rodriguez + [#4276](https://github.com/ruby/rubygems/pull/4276) by deivid-rodriguez * Install bundler 2.2.6 as a default gem. ### Bug fixes: * Swallow any system call error in `ensure_gem_subdirs` to support jruby - embedded paths. Pull request [#4291](https://github.com/rubygems/rubygems/pull/4291) by kares + embedded paths. Pull request [#4291](https://github.com/ruby/rubygems/pull/4291) by kares * Restore accepting custom make command with extra options as the `make` - env variable. Pull request [#4271](https://github.com/rubygems/rubygems/pull/4271) by terceiro + env variable. Pull request [#4271](https://github.com/ruby/rubygems/pull/4271) by terceiro ## 3.2.5 / 2021-01-11 @@ -2002,38 +2002,38 @@ ### Bug fixes: * Don't load more specs after the whole set of specs has been setup. Pull - request [#4262](https://github.com/rubygems/rubygems/pull/4262) by deivid-rodriguez + request [#4262](https://github.com/ruby/rubygems/pull/4262) by deivid-rodriguez * Fix broken `bundler` executable after `gem update --system`. Pull - request [#4221](https://github.com/rubygems/rubygems/pull/4221) by deivid-rodriguez + request [#4221](https://github.com/ruby/rubygems/pull/4221) by deivid-rodriguez ## 3.2.4 / 2020-12-31 ### Enhancements: -* Use a CHANGELOG in markdown for rubygems. Pull request [#4168](https://github.com/rubygems/rubygems/pull/4168) by +* Use a CHANGELOG in markdown for rubygems. Pull request [#4168](https://github.com/ruby/rubygems/pull/4168) by deivid-rodriguez -* Never spawn subshells when building extensions. Pull request [#4190](https://github.com/rubygems/rubygems/pull/4190) by +* Never spawn subshells when building extensions. Pull request [#4190](https://github.com/ruby/rubygems/pull/4190) by deivid-rodriguez * Install bundler 2.2.4 as a default gem. ### Bug fixes: * Fix fallback to the old index and installation from it not working. Pull - request [#4213](https://github.com/rubygems/rubygems/pull/4213) by deivid-rodriguez -* Fix installing from source on truffleruby. Pull request [#4201](https://github.com/rubygems/rubygems/pull/4201) by + request [#4213](https://github.com/ruby/rubygems/pull/4213) by deivid-rodriguez +* Fix installing from source on truffleruby. Pull request [#4201](https://github.com/ruby/rubygems/pull/4201) by deivid-rodriguez ## 3.2.3 / 2020-12-22 ### Enhancements: -* Fix misspellings in default API key name. Pull request [#4177](https://github.com/rubygems/rubygems/pull/4177) by hsbt +* Fix misspellings in default API key name. Pull request [#4177](https://github.com/ruby/rubygems/pull/4177) by hsbt * Install bundler 2.2.3 as a default gem. ### Bug fixes: * Respect `required_ruby_version` and `required_rubygems_version` - constraints when looking for `gem install` candidates. Pull request [#4110](https://github.com/rubygems/rubygems/pull/4110) + constraints when looking for `gem install` candidates. Pull request [#4110](https://github.com/ruby/rubygems/pull/4110) by deivid-rodriguez ## 3.2.2 / 2020-12-17 @@ -2046,560 +2046,560 @@ * Fix issue where CLI commands making more than one request to rubygems.org needing an OTP code would crash or ask for the code twice. - Pull request [#4162](https://github.com/rubygems/rubygems/pull/4162) by sonalkr132 -* Fix building rake extensions that require openssl. Pull request [#4165](https://github.com/rubygems/rubygems/pull/4165) by + Pull request [#4162](https://github.com/ruby/rubygems/pull/4162) by sonalkr132 +* Fix building rake extensions that require openssl. Pull request [#4165](https://github.com/ruby/rubygems/pull/4165) by deivid-rodriguez * Fix `gem update --system` displaying too many changelog entries. Pull - request [#4145](https://github.com/rubygems/rubygems/pull/4145) by deivid-rodriguez + request [#4145](https://github.com/ruby/rubygems/pull/4145) by deivid-rodriguez ## 3.2.1 / 2020-12-14 ### Enhancements: * Added help message for gem i webrick in gem server command. Pull request - [#4117](https://github.com/rubygems/rubygems/pull/4117) by hsbt + [#4117](https://github.com/ruby/rubygems/pull/4117) by hsbt * Install bundler 2.2.1 as a default gem. ### Bug fixes: * Added the missing loading of fileutils same as load_specs. Pull request - [#4124](https://github.com/rubygems/rubygems/pull/4124) by hsbt + [#4124](https://github.com/ruby/rubygems/pull/4124) by hsbt * Fix Resolver::APISet to always include prereleases when necessary. Pull - request [#4113](https://github.com/rubygems/rubygems/pull/4113) by deivid-rodriguez + request [#4113](https://github.com/ruby/rubygems/pull/4113) by deivid-rodriguez ## 3.2.0 / 2020-12-07 ### Enhancements: -* Do not override Kernel#warn when there is no need. Pull request [#4075](https://github.com/rubygems/rubygems/pull/4075) by +* Do not override Kernel#warn when there is no need. Pull request [#4075](https://github.com/ruby/rubygems/pull/4075) by eregon -* Update endpoint of gem signin command. Pull request [#3840](https://github.com/rubygems/rubygems/pull/3840) by sonalkr132 -* Omit deprecated commands from command help output. Pull request [#4023](https://github.com/rubygems/rubygems/pull/4023) by +* Update endpoint of gem signin command. Pull request [#3840](https://github.com/ruby/rubygems/pull/3840) by sonalkr132 +* Omit deprecated commands from command help output. Pull request [#4023](https://github.com/ruby/rubygems/pull/4023) by landongrindheim -* Suggest alternatives in `gem query` deprecation. Pull request [#4021](https://github.com/rubygems/rubygems/pull/4021) by +* Suggest alternatives in `gem query` deprecation. Pull request [#4021](https://github.com/ruby/rubygems/pull/4021) by landongrindheim -* Lazily load `time`, `cgi`, and `zlib`. Pull request [#4010](https://github.com/rubygems/rubygems/pull/4010) by +* Lazily load `time`, `cgi`, and `zlib`. Pull request [#4010](https://github.com/ruby/rubygems/pull/4010) by deivid-rodriguez * Don't hit the network when installing dependencyless local gemspec. Pull - request [#3968](https://github.com/rubygems/rubygems/pull/3968) by deivid-rodriguez -* Add `--force` option to `gem sources` command. Pull request [#3956](https://github.com/rubygems/rubygems/pull/3956) by + request [#3968](https://github.com/ruby/rubygems/pull/3968) by deivid-rodriguez +* Add `--force` option to `gem sources` command. Pull request [#3956](https://github.com/ruby/rubygems/pull/3956) by andy-smith-msm -* Lazily load `openssl`. Pull request [#3850](https://github.com/rubygems/rubygems/pull/3850) by deivid-rodriguez -* Pass more information when comparing platforms. Pull request [#3817](https://github.com/rubygems/rubygems/pull/3817) by +* Lazily load `openssl`. Pull request [#3850](https://github.com/ruby/rubygems/pull/3850) by deivid-rodriguez +* Pass more information when comparing platforms. Pull request [#3817](https://github.com/ruby/rubygems/pull/3817) by eregon * Install bundler 2.2.0 as a default gem. ### Bug fixes: * Use better owner & group for files in rubygems package. Pull request - [#4065](https://github.com/rubygems/rubygems/pull/4065) by deivid-rodriguez -* Improve gem build -C flag. Pull request [#3983](https://github.com/rubygems/rubygems/pull/3983) by bronzdoc + [#4065](https://github.com/ruby/rubygems/pull/4065) by deivid-rodriguez +* Improve gem build -C flag. Pull request [#3983](https://github.com/ruby/rubygems/pull/3983) by bronzdoc * Handle unexpected behavior with URI#merge and subpaths missing trailing - slashes. Pull request [#3123](https://github.com/rubygems/rubygems/pull/3123) by drcapulet + slashes. Pull request [#3123](https://github.com/ruby/rubygems/pull/3123) by drcapulet * Add missing `fileutils` require in rubygems installer. Pull request - [#4036](https://github.com/rubygems/rubygems/pull/4036) by deivid-rodriguez + [#4036](https://github.com/ruby/rubygems/pull/4036) by deivid-rodriguez * Fix `--platform` option to `gem specification` being ignored. Pull - request [#4043](https://github.com/rubygems/rubygems/pull/4043) by deivid-rodriguez + request [#4043](https://github.com/ruby/rubygems/pull/4043) by deivid-rodriguez * Expose `--no-minimal-deps` flag to install the latest version of - dependencies. Pull request [#4030](https://github.com/rubygems/rubygems/pull/4030) by deivid-rodriguez + dependencies. Pull request [#4030](https://github.com/ruby/rubygems/pull/4030) by deivid-rodriguez * Fix "stack level too deep" error when overriding `Warning.warn`. Pull - request [#3987](https://github.com/rubygems/rubygems/pull/3987) by eregon + request [#3987](https://github.com/ruby/rubygems/pull/3987) by eregon * Append '.gemspec' extension only when it is not present. Pull request - [#3988](https://github.com/rubygems/rubygems/pull/3988) by voxik + [#3988](https://github.com/ruby/rubygems/pull/3988) by voxik * Install to correct plugins dir when using `--build-root`. Pull request - [#3972](https://github.com/rubygems/rubygems/pull/3972) by deivid-rodriguez -* Fix `--build-root` flag under Windows. Pull request [#3975](https://github.com/rubygems/rubygems/pull/3975) by + [#3972](https://github.com/ruby/rubygems/pull/3972) by deivid-rodriguez +* Fix `--build-root` flag under Windows. Pull request [#3975](https://github.com/ruby/rubygems/pull/3975) by deivid-rodriguez * Fix `typo_squatting?` false positive for `rubygems.org` itself. Pull - request [#3951](https://github.com/rubygems/rubygems/pull/3951) by andy-smith-msm + request [#3951](https://github.com/ruby/rubygems/pull/3951) by andy-smith-msm * Make `--default` and `--install-dir` options to `gem install` play nice - together. Pull request [#3906](https://github.com/rubygems/rubygems/pull/3906) by deivid-rodriguez + together. Pull request [#3906](https://github.com/ruby/rubygems/pull/3906) by deivid-rodriguez ### Deprecations: -* Deprecate server command. Pull request [#3868](https://github.com/rubygems/rubygems/pull/3868) by bronzdoc +* Deprecate server command. Pull request [#3868](https://github.com/ruby/rubygems/pull/3868) by bronzdoc ### Performance: * Don't change ruby process CWD when building extensions. Pull request - [#3498](https://github.com/rubygems/rubygems/pull/3498) by deivid-rodriguez + [#3498](https://github.com/ruby/rubygems/pull/3498) by deivid-rodriguez ## 3.2.0.rc.2 / 2020-10-08 ### Enhancements: * Make --dry-run flag consistent across rubygems commands. Pull request - [#3867](https://github.com/rubygems/rubygems/pull/3867) by bronzdoc -* Disallow downgrades to too old versions. Pull request [#3566](https://github.com/rubygems/rubygems/pull/3566) by + [#3867](https://github.com/ruby/rubygems/pull/3867) by bronzdoc +* Disallow downgrades to too old versions. Pull request [#3566](https://github.com/ruby/rubygems/pull/3566) by deivid-rodriguez -* Added `--platform` option to `build` command. Pull request [#3079](https://github.com/rubygems/rubygems/pull/3079) by nobu +* Added `--platform` option to `build` command. Pull request [#3079](https://github.com/ruby/rubygems/pull/3079) by nobu * Have "gem update --system" pass through the `--silent` flag. Pull - request [#3789](https://github.com/rubygems/rubygems/pull/3789) by duckinator -* Add writable check for cache dir. Pull request [#3876](https://github.com/rubygems/rubygems/pull/3876) by xndcn -* Warn on duplicate dependency in a specification. Pull request [#3864](https://github.com/rubygems/rubygems/pull/3864) by + request [#3789](https://github.com/ruby/rubygems/pull/3789) by duckinator +* Add writable check for cache dir. Pull request [#3876](https://github.com/ruby/rubygems/pull/3876) by xndcn +* Warn on duplicate dependency in a specification. Pull request [#3864](https://github.com/ruby/rubygems/pull/3864) by bronzdoc -* Fix indentation in `gem env`. Pull request [#3861](https://github.com/rubygems/rubygems/pull/3861) by colby-swandale -* Let more exceptions flow. Pull request [#3819](https://github.com/rubygems/rubygems/pull/3819) by deivid-rodriguez -* Ignore internal frames in RubyGems' Kernel#warn. Pull request [#3810](https://github.com/rubygems/rubygems/pull/3810) by +* Fix indentation in `gem env`. Pull request [#3861](https://github.com/ruby/rubygems/pull/3861) by colby-swandale +* Let more exceptions flow. Pull request [#3819](https://github.com/ruby/rubygems/pull/3819) by deivid-rodriguez +* Ignore internal frames in RubyGems' Kernel#warn. Pull request [#3810](https://github.com/ruby/rubygems/pull/3810) by eregon ### Bug fixes: -* Add missing fileutils require. Pull request [#3911](https://github.com/rubygems/rubygems/pull/3911) by deivid-rodriguez +* Add missing fileutils require. Pull request [#3911](https://github.com/ruby/rubygems/pull/3911) by deivid-rodriguez * Fix false positive warning on Windows when PATH has - `File::ALT_SEPARATOR`. Pull request [#3829](https://github.com/rubygems/rubygems/pull/3829) by deivid-rodriguez + `File::ALT_SEPARATOR`. Pull request [#3829](https://github.com/ruby/rubygems/pull/3829) by deivid-rodriguez * Fix Kernel#warn override to handle backtrace location with nil path. - Pull request [#3852](https://github.com/rubygems/rubygems/pull/3852) by jeremyevans -* Don't format executables on `gem update --system`. Pull request [#3811](https://github.com/rubygems/rubygems/pull/3811) by + Pull request [#3852](https://github.com/ruby/rubygems/pull/3852) by jeremyevans +* Don't format executables on `gem update --system`. Pull request [#3811](https://github.com/ruby/rubygems/pull/3811) by deivid-rodriguez * `gem install --user` fails with `Gem::FilePermissionError` on the system - plugins directory. Pull request [#3804](https://github.com/rubygems/rubygems/pull/3804) by nobu + plugins directory. Pull request [#3804](https://github.com/ruby/rubygems/pull/3804) by nobu ### Performance: * Avoid duplicated generation of APISpecification objects. Pull request - [#3940](https://github.com/rubygems/rubygems/pull/3940) by mame -* Eval defaults with frozen_string_literal: true. Pull request [#3847](https://github.com/rubygems/rubygems/pull/3847) by + [#3940](https://github.com/ruby/rubygems/pull/3940) by mame +* Eval defaults with frozen_string_literal: true. Pull request [#3847](https://github.com/ruby/rubygems/pull/3847) by casperisfine -* Deduplicate the requirement operators in memory. Pull request [#3846](https://github.com/rubygems/rubygems/pull/3846) by +* Deduplicate the requirement operators in memory. Pull request [#3846](https://github.com/ruby/rubygems/pull/3846) by casperisfine -* Optimize Gem.already_loaded?. Pull request [#3793](https://github.com/rubygems/rubygems/pull/3793) by casperisfine +* Optimize Gem.already_loaded?. Pull request [#3793](https://github.com/ruby/rubygems/pull/3793) by casperisfine ## 3.2.0.rc.1 / 2020-07-04 ### Enhancements: -* Test TruffleRuby in CI. Pull request [#2797](https://github.com/rubygems/rubygems/pull/2797) by Benoit Daloze. -* Rework plugins system and speed up rubygems. Pull request [#3108](https://github.com/rubygems/rubygems/pull/3108) by David +* Test TruffleRuby in CI. Pull request [#2797](https://github.com/ruby/rubygems/pull/2797) by Benoit Daloze. +* Rework plugins system and speed up rubygems. Pull request [#3108](https://github.com/ruby/rubygems/pull/3108) by David Rodríguez. -* Specify explicit separator not to be affected by $;. Pull request [#3424](https://github.com/rubygems/rubygems/pull/3424) +* Specify explicit separator not to be affected by $;. Pull request [#3424](https://github.com/ruby/rubygems/pull/3424) by Nobuyoshi Nakada. -* Enable `Layout/ExtraSpacing` cop. Pull request [#3449](https://github.com/rubygems/rubygems/pull/3449) by David Rodríguez. -* Rollback gem deprecate. Pull request [#3530](https://github.com/rubygems/rubygems/pull/3530) by Luis Sagastume. -* Normalize heredoc delimiters. Pull request [#3533](https://github.com/rubygems/rubygems/pull/3533) by David Rodríguez. -* Log messages to stdout in `rake package`. Pull request [#3632](https://github.com/rubygems/rubygems/pull/3632) by David +* Enable `Layout/ExtraSpacing` cop. Pull request [#3449](https://github.com/ruby/rubygems/pull/3449) by David Rodríguez. +* Rollback gem deprecate. Pull request [#3530](https://github.com/ruby/rubygems/pull/3530) by Luis Sagastume. +* Normalize heredoc delimiters. Pull request [#3533](https://github.com/ruby/rubygems/pull/3533) by David Rodríguez. +* Log messages to stdout in `rake package`. Pull request [#3632](https://github.com/ruby/rubygems/pull/3632) by David Rodríguez. -* Remove explicit `psych` activation. Pull request [#3636](https://github.com/rubygems/rubygems/pull/3636) by David +* Remove explicit `psych` activation. Pull request [#3636](https://github.com/ruby/rubygems/pull/3636) by David Rodríguez. -* Delay `fileutils` loading to fix some warnings. Pull request [#3637](https://github.com/rubygems/rubygems/pull/3637) by +* Delay `fileutils` loading to fix some warnings. Pull request [#3637](https://github.com/ruby/rubygems/pull/3637) by David Rodríguez. * Make sure rubygems/package can be directly required reliably. Pull - request [#3670](https://github.com/rubygems/rubygems/pull/3670) by Luis Sagastume. + request [#3670](https://github.com/ruby/rubygems/pull/3670) by Luis Sagastume. * Make sure `tmp` folder exists before calling `Dir.tmpdir`. Pull request - [#3711](https://github.com/rubygems/rubygems/pull/3711) by David Rodríguez. + [#3711](https://github.com/ruby/rubygems/pull/3711) by David Rodríguez. * Add Gem.disable_system_update_message to disable gem update --system if - needed. Pull request [#3720](https://github.com/rubygems/rubygems/pull/3720) by Josef Šimánek. -* Tweaks to play nice with ruby-core setup. Pull request [#3733](https://github.com/rubygems/rubygems/pull/3733) by David + needed. Pull request [#3720](https://github.com/ruby/rubygems/pull/3720) by Josef Šimánek. +* Tweaks to play nice with ruby-core setup. Pull request [#3733](https://github.com/ruby/rubygems/pull/3733) by David Rodríguez. -* Remove explicit require for auto-loaded constant. Pull request [#3751](https://github.com/rubygems/rubygems/pull/3751) by +* Remove explicit require for auto-loaded constant. Pull request [#3751](https://github.com/ruby/rubygems/pull/3751) by Karol Bucek. -* Test files should not be included in spec.files. Pull request [#3758](https://github.com/rubygems/rubygems/pull/3758) by +* Test files should not be included in spec.files. Pull request [#3758](https://github.com/ruby/rubygems/pull/3758) by Marc-André Lafortune. * Remove TODO comment about warning on setting instead of pushing. Pull - request [#2823](https://github.com/rubygems/rubygems/pull/2823) by Luis Sagastume. -* Add deprecate command method. Pull request [#2935](https://github.com/rubygems/rubygems/pull/2935) by Luis Sagastume. -* Simplify deprecate command method. Pull request [#2974](https://github.com/rubygems/rubygems/pull/2974) by Luis Sagastume. + request [#2823](https://github.com/ruby/rubygems/pull/2823) by Luis Sagastume. +* Add deprecate command method. Pull request [#2935](https://github.com/ruby/rubygems/pull/2935) by Luis Sagastume. +* Simplify deprecate command method. Pull request [#2974](https://github.com/ruby/rubygems/pull/2974) by Luis Sagastume. * Fix Gem::LOADED_SPECS_MUTEX handling for recursive locking. Pull request - [#2985](https://github.com/rubygems/rubygems/pull/2985) by MSP-Greg. -* Add `funding_uri ` metadata field to gemspec. Pull request [#3060](https://github.com/rubygems/rubygems/pull/3060) by + [#2985](https://github.com/ruby/rubygems/pull/2985) by MSP-Greg. +* Add `funding_uri ` metadata field to gemspec. Pull request [#3060](https://github.com/ruby/rubygems/pull/3060) by Colby Swandale. -* Updates to some old gem-signing docs. Pull request [#3063](https://github.com/rubygems/rubygems/pull/3063) by Tieg +* Updates to some old gem-signing docs. Pull request [#3063](https://github.com/ruby/rubygems/pull/3063) by Tieg Zaharia. -* Update the gem method for Gem::Installer. Pull request [#3137](https://github.com/rubygems/rubygems/pull/3137) by Daniel +* Update the gem method for Gem::Installer. Pull request [#3137](https://github.com/ruby/rubygems/pull/3137) by Daniel Berger. -* Simplify initial gem help output. Pull request [#3148](https://github.com/rubygems/rubygems/pull/3148) by Olivier Lacan. -* Resolve latest version via `gem contents`. Pull request [#3149](https://github.com/rubygems/rubygems/pull/3149) by Dan +* Simplify initial gem help output. Pull request [#3148](https://github.com/ruby/rubygems/pull/3148) by Olivier Lacan. +* Resolve latest version via `gem contents`. Pull request [#3149](https://github.com/ruby/rubygems/pull/3149) by Dan Rice. -* Install suggestions. Pull request [#3151](https://github.com/rubygems/rubygems/pull/3151) by Sophia Castellarin. -* Only rescue the errors we actually want to rescue. Pull request [#3156](https://github.com/rubygems/rubygems/pull/3156) by +* Install suggestions. Pull request [#3151](https://github.com/ruby/rubygems/pull/3151) by Sophia Castellarin. +* Only rescue the errors we actually want to rescue. Pull request [#3156](https://github.com/ruby/rubygems/pull/3156) by David Rodríguez. ### Bug fixes: * Accept not only /usr/bin/env but also /bin/env in some tests. Pull - request [#3422](https://github.com/rubygems/rubygems/pull/3422) by Yusuke Endoh. + request [#3422](https://github.com/ruby/rubygems/pull/3422) by Yusuke Endoh. * Skip a test that attempts to remove the current directory on Solaris. - Pull request [#3423](https://github.com/rubygems/rubygems/pull/3423) by Yusuke Endoh. -* Fix race condition on bundler's parallel installer. Pull request [#3440](https://github.com/rubygems/rubygems/pull/3440) + Pull request [#3423](https://github.com/ruby/rubygems/pull/3423) by Yusuke Endoh. +* Fix race condition on bundler's parallel installer. Pull request [#3440](https://github.com/ruby/rubygems/pull/3440) by David Rodríguez. * Fix platform comparison check in #contains_requirable_file?. Pull - request [#3495](https://github.com/rubygems/rubygems/pull/3495) by Benoit Daloze. -* Improve missing spec error. Pull request [#3559](https://github.com/rubygems/rubygems/pull/3559) by Luis Sagastume. + request [#3495](https://github.com/ruby/rubygems/pull/3495) by Benoit Daloze. +* Improve missing spec error. Pull request [#3559](https://github.com/ruby/rubygems/pull/3559) by Luis Sagastume. * Fix hidden bundler template installation from rubygems updater. Pull - request [#3674](https://github.com/rubygems/rubygems/pull/3674) by David Rodríguez. -* Fix gem update --user-install. Pull request [#2901](https://github.com/rubygems/rubygems/pull/2901) by Luis Sagastume. + request [#3674](https://github.com/ruby/rubygems/pull/3674) by David Rodríguez. +* Fix gem update --user-install. Pull request [#2901](https://github.com/ruby/rubygems/pull/2901) by Luis Sagastume. * Correct conflict list when uninstallation is prevented. Pull request - [#2973](https://github.com/rubygems/rubygems/pull/2973) by David Rodríguez. + [#2973](https://github.com/ruby/rubygems/pull/2973) by David Rodríguez. * Fix error when trying to find bundler with a deleted "working directo…. - Pull request [#3090](https://github.com/rubygems/rubygems/pull/3090) by Luis Sagastume. -* Fix -I require priority. Pull request [#3124](https://github.com/rubygems/rubygems/pull/3124) by David Rodríguez. -* Fix `ruby setup.rb` for new plugins layout. Pull request [#3144](https://github.com/rubygems/rubygems/pull/3144) by David + Pull request [#3090](https://github.com/ruby/rubygems/pull/3090) by Luis Sagastume. +* Fix -I require priority. Pull request [#3124](https://github.com/ruby/rubygems/pull/3124) by David Rodríguez. +* Fix `ruby setup.rb` for new plugins layout. Pull request [#3144](https://github.com/ruby/rubygems/pull/3144) by David Rodríguez. ### Deprecations: -* Set deprecation warning on query command. Pull request [#2967](https://github.com/rubygems/rubygems/pull/2967) by Luis +* Set deprecation warning on query command. Pull request [#2967](https://github.com/ruby/rubygems/pull/2967) by Luis Sagastume. ### Breaking changes: -* Remove ruby 1.8 leftovers. Pull request [#3442](https://github.com/rubygems/rubygems/pull/3442) by David Rodríguez. -* Minitest cleanup. Pull request [#3445](https://github.com/rubygems/rubygems/pull/3445) by David Rodríguez. +* Remove ruby 1.8 leftovers. Pull request [#3442](https://github.com/ruby/rubygems/pull/3442) by David Rodríguez. +* Minitest cleanup. Pull request [#3445](https://github.com/ruby/rubygems/pull/3445) by David Rodríguez. * Remove `builder` gem requirement for `gem regenerate_index`. Pull - request [#3552](https://github.com/rubygems/rubygems/pull/3552) by David Rodríguez. -* Remove modelines for consistency. Pull request [#3714](https://github.com/rubygems/rubygems/pull/3714) by David Rodríguez. -* Stop using deprecated OpenSSL::Digest constants. Pull request [#3763](https://github.com/rubygems/rubygems/pull/3763) by + request [#3552](https://github.com/ruby/rubygems/pull/3552) by David Rodríguez. +* Remove modelines for consistency. Pull request [#3714](https://github.com/ruby/rubygems/pull/3714) by David Rodríguez. +* Stop using deprecated OpenSSL::Digest constants. Pull request [#3763](https://github.com/ruby/rubygems/pull/3763) by Bart de Water. -* Remove Gem module deprecated methods. Pull request [#3101](https://github.com/rubygems/rubygems/pull/3101) by Luis +* Remove Gem module deprecated methods. Pull request [#3101](https://github.com/ruby/rubygems/pull/3101) by Luis Sagastume. -* Remove ubygems.rb. Pull request [#3102](https://github.com/rubygems/rubygems/pull/3102) by Luis Sagastume. -* Remove Gem::Commands::QueryCommand. Pull request [#3104](https://github.com/rubygems/rubygems/pull/3104) by Luis +* Remove ubygems.rb. Pull request [#3102](https://github.com/ruby/rubygems/pull/3102) by Luis Sagastume. +* Remove Gem::Commands::QueryCommand. Pull request [#3104](https://github.com/ruby/rubygems/pull/3104) by Luis Sagastume. -* Remove dependency installer deprecated methods. Pull request [#3106](https://github.com/rubygems/rubygems/pull/3106) by +* Remove dependency installer deprecated methods. Pull request [#3106](https://github.com/ruby/rubygems/pull/3106) by Luis Sagastume. -* Remove Gem::UserInteraction#debug method. Pull request [#3107](https://github.com/rubygems/rubygems/pull/3107) by Luis +* Remove Gem::UserInteraction#debug method. Pull request [#3107](https://github.com/ruby/rubygems/pull/3107) by Luis Sagastume. -* Remove options from Gem::GemRunner.new. Pull request [#3110](https://github.com/rubygems/rubygems/pull/3110) by Luis +* Remove options from Gem::GemRunner.new. Pull request [#3110](https://github.com/ruby/rubygems/pull/3110) by Luis Sagastume. -* Remove deprecated Gem::RemoteFetcher#fetch_size. Pull request [#3111](https://github.com/rubygems/rubygems/pull/3111) by +* Remove deprecated Gem::RemoteFetcher#fetch_size. Pull request [#3111](https://github.com/ruby/rubygems/pull/3111) by Luis Sagastume. -* Remove source_exception from Gem::Exception. Pull request [#3112](https://github.com/rubygems/rubygems/pull/3112) by Luis +* Remove source_exception from Gem::Exception. Pull request [#3112](https://github.com/ruby/rubygems/pull/3112) by Luis Sagastume. * Requiring rubygems/source_specific_file is deprecated, remove it. Pull - request [#3114](https://github.com/rubygems/rubygems/pull/3114) by Luis Sagastume. + request [#3114](https://github.com/ruby/rubygems/pull/3114) by Luis Sagastume. ## 3.1.4 / 2020-06-03 ### Enhancements: * Deprecate rubyforge_project attribute only during build - time. Pull request [#3609](https://github.com/rubygems/rubygems/pull/3609) by Josef Šimánek. -* Update links. Pull request [#3610](https://github.com/rubygems/rubygems/pull/3610) by Josef Šimánek. -* Run CI at 3.1 branch head as well. Pull request [#3677](https://github.com/rubygems/rubygems/pull/3677) by Josef Šimánek. -* Remove failing ubuntu-rvm CI flow. Pull request [#3611](https://github.com/rubygems/rubygems/pull/3611) by + time. Pull request [#3609](https://github.com/ruby/rubygems/pull/3609) by Josef Šimánek. +* Update links. Pull request [#3610](https://github.com/ruby/rubygems/pull/3610) by Josef Šimánek. +* Run CI at 3.1 branch head as well. Pull request [#3677](https://github.com/ruby/rubygems/pull/3677) by Josef Šimánek. +* Remove failing ubuntu-rvm CI flow. Pull request [#3611](https://github.com/ruby/rubygems/pull/3611) by Josef Šimánek. ## 3.1.3 / 2020-05-05 ### Enhancements: -* Resolver: require NameTuple before use. Pull request [#3171](https://github.com/rubygems/rubygems/pull/3171) by Olle +* Resolver: require NameTuple before use. Pull request [#3171](https://github.com/ruby/rubygems/pull/3171) by Olle Jonsson. -* Use absolute paths with autoload. Pull request [#3100](https://github.com/rubygems/rubygems/pull/3100) by David Rodríguez. -* Avoid changing $SOURCE_DATE_EPOCH. Pull request [#3088](https://github.com/rubygems/rubygems/pull/3088) by Ellen Marie +* Use absolute paths with autoload. Pull request [#3100](https://github.com/ruby/rubygems/pull/3100) by David Rodríguez. +* Avoid changing $SOURCE_DATE_EPOCH. Pull request [#3088](https://github.com/ruby/rubygems/pull/3088) by Ellen Marie Dash. -* Use Bundler 2.1.4. Pull request [#3072](https://github.com/rubygems/rubygems/pull/3072) by Hiroshi SHIBATA. +* Use Bundler 2.1.4. Pull request [#3072](https://github.com/ruby/rubygems/pull/3072) by Hiroshi SHIBATA. * Add tests to check if Gem.ruby_version works with ruby git master. - Pull request [#3049](https://github.com/rubygems/rubygems/pull/3049) by Yusuke Endoh. + Pull request [#3049](https://github.com/ruby/rubygems/pull/3049) by Yusuke Endoh. ### Bug fixes: * Fix platform comparison check in #contains_requirable_file?. Pull - request [#3495](https://github.com/rubygems/rubygems/pull/3495) by Benoit Daloze. -* Improve gzip errors logging. Pull request [#3485](https://github.com/rubygems/rubygems/pull/3485) by David Rodríguez. -* Fix incorrect `gem uninstall --all` message. Pull request [#3483](https://github.com/rubygems/rubygems/pull/3483) by David + request [#3495](https://github.com/ruby/rubygems/pull/3495) by Benoit Daloze. +* Improve gzip errors logging. Pull request [#3485](https://github.com/ruby/rubygems/pull/3485) by David Rodríguez. +* Fix incorrect `gem uninstall --all` message. Pull request [#3483](https://github.com/ruby/rubygems/pull/3483) by David Rodríguez. -* Fix incorrect bundler version being required. Pull request [#3458](https://github.com/rubygems/rubygems/pull/3458) by +* Fix incorrect bundler version being required. Pull request [#3458](https://github.com/ruby/rubygems/pull/3458) by David Rodríguez. * Fix gem install from a gemdeps file with complex dependencies. - Pull request [#3054](https://github.com/rubygems/rubygems/pull/3054) by Luis Sagastume. + Pull request [#3054](https://github.com/ruby/rubygems/pull/3054) by Luis Sagastume. ## 3.1.2 / 2019-12-20 ### Enhancements: -* Restore non prompting `gem update --system` behavior. Pull request [#3040](https://github.com/rubygems/rubygems/pull/3040) +* Restore non prompting `gem update --system` behavior. Pull request [#3040](https://github.com/ruby/rubygems/pull/3040) by David Rodríguez. -* Show only release notes for new code installed. Pull request [#3041](https://github.com/rubygems/rubygems/pull/3041) by +* Show only release notes for new code installed. Pull request [#3041](https://github.com/ruby/rubygems/pull/3041) by David Rodríguez. * Inform about installed `bundle` executable after `gem update --system`. - Pull request [#3042](https://github.com/rubygems/rubygems/pull/3042) by David Rodríguez. -* Use Bundler 2.1.2. Pull request [#3043](https://github.com/rubygems/rubygems/pull/3043) by SHIBATA Hiroshi. + Pull request [#3042](https://github.com/ruby/rubygems/pull/3042) by David Rodríguez. +* Use Bundler 2.1.2. Pull request [#3043](https://github.com/ruby/rubygems/pull/3043) by SHIBATA Hiroshi. ### Bug fixes: -* Require `uri` in source.rb. Pull request [#3034](https://github.com/rubygems/rubygems/pull/3034) by mihaibuzgau. -* Fix `gem update --system --force`. Pull request [#3035](https://github.com/rubygems/rubygems/pull/3035) by David +* Require `uri` in source.rb. Pull request [#3034](https://github.com/ruby/rubygems/pull/3034) by mihaibuzgau. +* Fix `gem update --system --force`. Pull request [#3035](https://github.com/ruby/rubygems/pull/3035) by David Rodríguez. -* Move `require uri` to source_list. Pull request [#3038](https://github.com/rubygems/rubygems/pull/3038) by mihaibuzgau. +* Move `require uri` to source_list. Pull request [#3038](https://github.com/ruby/rubygems/pull/3038) by mihaibuzgau. ## 3.1.1 / 2019-12-16 ### Bug fixes: * Vendor Bundler 2.1.0 again. The version of Bundler with - RubyGems 3.1.0 was Bundler 2.1.0.pre.3. Pull request [#3029](https://github.com/rubygems/rubygems/pull/3029) by + RubyGems 3.1.0 was Bundler 2.1.0.pre.3. Pull request [#3029](https://github.com/ruby/rubygems/pull/3029) by SHIBATA Hiroshi. ## 3.1.0 / 2019-12-16 ### Enhancements: -* Vendor bundler 2.1. Pull request [#3028](https://github.com/rubygems/rubygems/pull/3028) by David Rodríguez. -* Check for rubygems.org typo squatting sources. Pull request [#2999](https://github.com/rubygems/rubygems/pull/2999) by +* Vendor bundler 2.1. Pull request [#3028](https://github.com/ruby/rubygems/pull/3028) by David Rodríguez. +* Check for rubygems.org typo squatting sources. Pull request [#2999](https://github.com/ruby/rubygems/pull/2999) by Luis Sagastume. -* Refactor remote fetcher. Pull request [#3017](https://github.com/rubygems/rubygems/pull/3017) by David Rodríguez. -* Lazily load `open3`. Pull request [#3001](https://github.com/rubygems/rubygems/pull/3001) by David Rodríguez. -* Remove `delegate` dependency. Pull request [#3002](https://github.com/rubygems/rubygems/pull/3002) by David Rodríguez. -* Lazily load `uri`. Pull request [#3005](https://github.com/rubygems/rubygems/pull/3005) by David Rodríguez. -* Lazily load `rubygems/gem_runner` during tests. Pull request [#3009](https://github.com/rubygems/rubygems/pull/3009) by +* Refactor remote fetcher. Pull request [#3017](https://github.com/ruby/rubygems/pull/3017) by David Rodríguez. +* Lazily load `open3`. Pull request [#3001](https://github.com/ruby/rubygems/pull/3001) by David Rodríguez. +* Remove `delegate` dependency. Pull request [#3002](https://github.com/ruby/rubygems/pull/3002) by David Rodríguez. +* Lazily load `uri`. Pull request [#3005](https://github.com/ruby/rubygems/pull/3005) by David Rodríguez. +* Lazily load `rubygems/gem_runner` during tests. Pull request [#3009](https://github.com/ruby/rubygems/pull/3009) by David Rodríguez. -* Use bundler to manage development dependencies. Pull request [#3012](https://github.com/rubygems/rubygems/pull/3012) by +* Use bundler to manage development dependencies. Pull request [#3012](https://github.com/ruby/rubygems/pull/3012) by David Rodríguez. ### Bug fixes: -* Remove unnecessary executable flags. Pull request [#2982](https://github.com/rubygems/rubygems/pull/2982) by David +* Remove unnecessary executable flags. Pull request [#2982](https://github.com/ruby/rubygems/pull/2982) by David Rodríguez. -* Remove configuration that contained a typo. Pull request [#2989](https://github.com/rubygems/rubygems/pull/2989) by David +* Remove configuration that contained a typo. Pull request [#2989](https://github.com/ruby/rubygems/pull/2989) by David Rodríguez. ### Deprecations: * Deprecate `gem generate_index --modern` and `gem generate_index - --no-modern`. Pull request [#2992](https://github.com/rubygems/rubygems/pull/2992) by David Rodríguez. + --no-modern`. Pull request [#2992](https://github.com/ruby/rubygems/pull/2992) by David Rodríguez. ### Breaking changes: -* Remove 1.8.7 leftovers. Pull request [#2972](https://github.com/rubygems/rubygems/pull/2972) by David Rodríguez. +* Remove 1.8.7 leftovers. Pull request [#2972](https://github.com/ruby/rubygems/pull/2972) by David Rodríguez. ## 3.1.0.pre3 / 2019-11-11 ### Enhancements: * Fix gem pristine not accounting for user installed gems. Pull request - [#2914](https://github.com/rubygems/rubygems/pull/2914) by Luis Sagastume. -* Refactor keyword argument test for Ruby 2.7. Pull request [#2947](https://github.com/rubygems/rubygems/pull/2947) by + [#2914](https://github.com/ruby/rubygems/pull/2914) by Luis Sagastume. +* Refactor keyword argument test for Ruby 2.7. Pull request [#2947](https://github.com/ruby/rubygems/pull/2947) by SHIBATA Hiroshi. -* Fix errors at frozen Gem::Version. Pull request [#2949](https://github.com/rubygems/rubygems/pull/2949) by Nobuyoshi +* Fix errors at frozen Gem::Version. Pull request [#2949](https://github.com/ruby/rubygems/pull/2949) by Nobuyoshi Nakada. -* Remove taint usage on Ruby 2.7+. Pull request [#2951](https://github.com/rubygems/rubygems/pull/2951) by Jeremy Evans. -* Check Manifest.txt is up to date. Pull request [#2953](https://github.com/rubygems/rubygems/pull/2953) by David Rodríguez. -* Clarify symlink conditionals in tests. Pull request [#2962](https://github.com/rubygems/rubygems/pull/2962) by David +* Remove taint usage on Ruby 2.7+. Pull request [#2951](https://github.com/ruby/rubygems/pull/2951) by Jeremy Evans. +* Check Manifest.txt is up to date. Pull request [#2953](https://github.com/ruby/rubygems/pull/2953) by David Rodríguez. +* Clarify symlink conditionals in tests. Pull request [#2962](https://github.com/ruby/rubygems/pull/2962) by David Rodríguez. -* Update command line parsing to work under ps. Pull request [#2966](https://github.com/rubygems/rubygems/pull/2966) by +* Update command line parsing to work under ps. Pull request [#2966](https://github.com/ruby/rubygems/pull/2966) by David Rodríguez. -* Properly test `Gem::Specifications.stub_for`. Pull request [#2970](https://github.com/rubygems/rubygems/pull/2970) by +* Properly test `Gem::Specifications.stub_for`. Pull request [#2970](https://github.com/ruby/rubygems/pull/2970) by David Rodríguez. * Fix Gem::LOADED_SPECS_MUTEX handling for recursive locking. Pull request - [#2985](https://github.com/rubygems/rubygems/pull/2985) by MSP-Greg. + [#2985](https://github.com/ruby/rubygems/pull/2985) by MSP-Greg. ## 3.1.0.pre2 / 2019-10-15 ### Enhancements: -* Optimize Gem::Package::TarReader#each. Pull request [#2941](https://github.com/rubygems/rubygems/pull/2941) by Jean byroot +* Optimize Gem::Package::TarReader#each. Pull request [#2941](https://github.com/ruby/rubygems/pull/2941) by Jean byroot Boussier. -* Time comparison around date boundary. Pull request [#2944](https://github.com/rubygems/rubygems/pull/2944) by Nobuyoshi +* Time comparison around date boundary. Pull request [#2944](https://github.com/ruby/rubygems/pull/2944) by Nobuyoshi Nakada. ## 3.1.0.pre1 / 2019-10-08 ### Enhancements: -* Try to use bundler-2.1.0.pre.2. Pull request [#2923](https://github.com/rubygems/rubygems/pull/2923) by SHIBATA Hiroshi. -* [Require] Ensure -I beats a default gem. Pull request [#1868](https://github.com/rubygems/rubygems/pull/1868) by Samuel +* Try to use bundler-2.1.0.pre.2. Pull request [#2923](https://github.com/ruby/rubygems/pull/2923) by SHIBATA Hiroshi. +* [Require] Ensure -I beats a default gem. Pull request [#1868](https://github.com/ruby/rubygems/pull/1868) by Samuel Giddins. * [Specification] Prefer user-installed gems to default gems. Pull request - [#2112](https://github.com/rubygems/rubygems/pull/2112) by Samuel Giddins. -* Multifactor authentication for yank command. Pull request [#2514](https://github.com/rubygems/rubygems/pull/2514) by Qiu + [#2112](https://github.com/ruby/rubygems/pull/2112) by Samuel Giddins. +* Multifactor authentication for yank command. Pull request [#2514](https://github.com/ruby/rubygems/pull/2514) by Qiu Chaofan. -* Autoswitch to exact bundler version if present. Pull request [#2583](https://github.com/rubygems/rubygems/pull/2583) by +* Autoswitch to exact bundler version if present. Pull request [#2583](https://github.com/ruby/rubygems/pull/2583) by David Rodríguez. * Fix Gem::Requirement equality comparison when ~> operator is used. Pull - request [#2554](https://github.com/rubygems/rubygems/pull/2554) by Grey Baker. -* Don't use a proxy if https_proxy env var is empty. Pull request [#2567](https://github.com/rubygems/rubygems/pull/2567) by + request [#2554](https://github.com/ruby/rubygems/pull/2554) by Grey Baker. +* Don't use a proxy if https_proxy env var is empty. Pull request [#2567](https://github.com/ruby/rubygems/pull/2567) by Luis Sagastume. -* Fix typo in specs warning. Pull request [#2585](https://github.com/rubygems/rubygems/pull/2585) by Rui. -* Bin/gem: remove initial empty line. Pull request [#2602](https://github.com/rubygems/rubygems/pull/2602) by Kenyon Ralph. +* Fix typo in specs warning. Pull request [#2585](https://github.com/ruby/rubygems/pull/2585) by Rui. +* Bin/gem: remove initial empty line. Pull request [#2602](https://github.com/ruby/rubygems/pull/2602) by Kenyon Ralph. * Avoid rdoc hook when it's failed to load rdoc library. Pull request - [#2604](https://github.com/rubygems/rubygems/pull/2604) by SHIBATA Hiroshi. -* Refactor get_proxy_from_env logic. Pull request [#2611](https://github.com/rubygems/rubygems/pull/2611) by Luis Sagastume. -* Allow to easily bisect flaky failures. Pull request [#2626](https://github.com/rubygems/rubygems/pull/2626) by David + [#2604](https://github.com/ruby/rubygems/pull/2604) by SHIBATA Hiroshi. +* Refactor get_proxy_from_env logic. Pull request [#2611](https://github.com/ruby/rubygems/pull/2611) by Luis Sagastume. +* Allow to easily bisect flaky failures. Pull request [#2626](https://github.com/ruby/rubygems/pull/2626) by David Rodríguez. * Fix `--ignore-dependencies` flag not installing platform specific gems. - Pull request [#2631](https://github.com/rubygems/rubygems/pull/2631) by David Rodríguez. -* Make `gem install --explain` list platforms. Pull request [#2634](https://github.com/rubygems/rubygems/pull/2634) by David + Pull request [#2631](https://github.com/ruby/rubygems/pull/2631) by David Rodríguez. +* Make `gem install --explain` list platforms. Pull request [#2634](https://github.com/ruby/rubygems/pull/2634) by David Rodríguez. -* Make `gem update --explain` list platforms. Pull request [#2635](https://github.com/rubygems/rubygems/pull/2635) by David +* Make `gem update --explain` list platforms. Pull request [#2635](https://github.com/ruby/rubygems/pull/2635) by David Rodríguez. -* Refactoring install and update explanations. Pull request [#2643](https://github.com/rubygems/rubygems/pull/2643) by David +* Refactoring install and update explanations. Pull request [#2643](https://github.com/ruby/rubygems/pull/2643) by David Rodríguez. -* Restore transitiveness of version comparison. Pull request [#2651](https://github.com/rubygems/rubygems/pull/2651) by +* Restore transitiveness of version comparison. Pull request [#2651](https://github.com/ruby/rubygems/pull/2651) by David Rodríguez. -* Undo requirement sorting. Pull request [#2652](https://github.com/rubygems/rubygems/pull/2652) by David Rodríguez. -* Update dummy version of Bundler for #2581. Pull request [#2584](https://github.com/rubygems/rubygems/pull/2584) by SHIBATA +* Undo requirement sorting. Pull request [#2652](https://github.com/ruby/rubygems/pull/2652) by David Rodríguez. +* Update dummy version of Bundler for #2581. Pull request [#2584](https://github.com/ruby/rubygems/pull/2584) by SHIBATA Hiroshi. -* Ignore to handle the different platform. Pull request [#2672](https://github.com/rubygems/rubygems/pull/2672) by SHIBATA +* Ignore to handle the different platform. Pull request [#2672](https://github.com/ruby/rubygems/pull/2672) by SHIBATA Hiroshi. * Make Gem::Specification.default_stubs to public methods. Pull request - [#2675](https://github.com/rubygems/rubygems/pull/2675) by SHIBATA Hiroshi. -* Sort files and test_files in specifications. Pull request [#2524](https://github.com/rubygems/rubygems/pull/2524) by + [#2675](https://github.com/ruby/rubygems/pull/2675) by SHIBATA Hiroshi. +* Sort files and test_files in specifications. Pull request [#2524](https://github.com/ruby/rubygems/pull/2524) by Christopher Baines. * Fix comment of Gem::Specification#required_ruby_version=. Pull request - [#2732](https://github.com/rubygems/rubygems/pull/2732) by Alex Junger. + [#2732](https://github.com/ruby/rubygems/pull/2732) by Alex Junger. * Config_file.rb - update path separator in ENV['GEMRC'] logic. Pull - request [#2735](https://github.com/rubygems/rubygems/pull/2735) by MSP-Greg. -* Fix `ruby setup.rb` warnings. Pull request [#2737](https://github.com/rubygems/rubygems/pull/2737) by David Rodríguez. + request [#2735](https://github.com/ruby/rubygems/pull/2735) by MSP-Greg. +* Fix `ruby setup.rb` warnings. Pull request [#2737](https://github.com/ruby/rubygems/pull/2737) by David Rodríguez. * Don't use regex delimiters when searching for a dependency. Pull request - [#2738](https://github.com/rubygems/rubygems/pull/2738) by Luis Sagastume. -* Refactor query command. Pull request [#2739](https://github.com/rubygems/rubygems/pull/2739) by Luis Sagastume. + [#2738](https://github.com/ruby/rubygems/pull/2738) by Luis Sagastume. +* Refactor query command. Pull request [#2739](https://github.com/ruby/rubygems/pull/2739) by Luis Sagastume. * Don't remove default spec files from mapping after require. Pull request - [#2741](https://github.com/rubygems/rubygems/pull/2741) by David Rodríguez. -* Cleanup base test case. Pull request [#2742](https://github.com/rubygems/rubygems/pull/2742) by David Rodríguez. -* Simplify Specification#gems_dir. Pull request [#2745](https://github.com/rubygems/rubygems/pull/2745) by David Rodríguez. -* Fix test warning. Pull request [#2746](https://github.com/rubygems/rubygems/pull/2746) by David Rodríguez. -* Extract an `add_to_load_path` method. Pull request [#2749](https://github.com/rubygems/rubygems/pull/2749) by David + [#2741](https://github.com/ruby/rubygems/pull/2741) by David Rodríguez. +* Cleanup base test case. Pull request [#2742](https://github.com/ruby/rubygems/pull/2742) by David Rodríguez. +* Simplify Specification#gems_dir. Pull request [#2745](https://github.com/ruby/rubygems/pull/2745) by David Rodríguez. +* Fix test warning. Pull request [#2746](https://github.com/ruby/rubygems/pull/2746) by David Rodríguez. +* Extract an `add_to_load_path` method. Pull request [#2749](https://github.com/ruby/rubygems/pull/2749) by David Rodríguez. * Fix setup command if format_executable is true by default. Pull request - [#2766](https://github.com/rubygems/rubygems/pull/2766) by Jeremy Evans. + [#2766](https://github.com/ruby/rubygems/pull/2766) by Jeremy Evans. * Update the certificate files to make the test pass on Debian 10. Pull - request [#2777](https://github.com/rubygems/rubygems/pull/2777) by Yusuke Endoh. -* Write to the correct config file(.gemrc). Pull request [#2779](https://github.com/rubygems/rubygems/pull/2779) by Luis + request [#2777](https://github.com/ruby/rubygems/pull/2777) by Yusuke Endoh. +* Write to the correct config file(.gemrc). Pull request [#2779](https://github.com/ruby/rubygems/pull/2779) by Luis Sagastume. * Fix for large values in UID/GID fields in tar archives. Pull request - [#2780](https://github.com/rubygems/rubygems/pull/2780) by Alexey Shein. -* Lazy require stringio. Pull request [#2781](https://github.com/rubygems/rubygems/pull/2781) by Luis Sagastume. + [#2780](https://github.com/ruby/rubygems/pull/2780) by Alexey Shein. +* Lazy require stringio. Pull request [#2781](https://github.com/ruby/rubygems/pull/2781) by Luis Sagastume. * Make Gem::Specification#ruby_code handle OpenSSL::PKey::RSA objects. - Pull request [#2782](https://github.com/rubygems/rubygems/pull/2782) by Luis Sagastume. + Pull request [#2782](https://github.com/ruby/rubygems/pull/2782) by Luis Sagastume. * Fix setup command test for bundler with program_suffix. Pull request - [#2783](https://github.com/rubygems/rubygems/pull/2783) by Sorah Fukumori. -* Make sure `rake package` works. Pull request [#2787](https://github.com/rubygems/rubygems/pull/2787) by David Rodríguez. + [#2783](https://github.com/ruby/rubygems/pull/2783) by Sorah Fukumori. +* Make sure `rake package` works. Pull request [#2787](https://github.com/ruby/rubygems/pull/2787) by David Rodríguez. * Synchronize access to the Gem::Specification::LOAD_CACHE Hash. Pull - request [#2789](https://github.com/rubygems/rubygems/pull/2789) by Benoit Daloze. -* Task to install rubygems to local system. Pull request [#2795](https://github.com/rubygems/rubygems/pull/2795) by David + request [#2789](https://github.com/ruby/rubygems/pull/2789) by Benoit Daloze. +* Task to install rubygems to local system. Pull request [#2795](https://github.com/ruby/rubygems/pull/2795) by David Rodríguez. * Add an attr_reader to Gem::Installer for the package instance variable. - Pull request [#2796](https://github.com/rubygems/rubygems/pull/2796) by Daniel Berger. -* Switch CI script to bash. Pull request [#2799](https://github.com/rubygems/rubygems/pull/2799) by David Rodríguez. -* Move gemcutter utilities code to Gem::Command. Pull request [#2803](https://github.com/rubygems/rubygems/pull/2803) by + Pull request [#2796](https://github.com/ruby/rubygems/pull/2796) by Daniel Berger. +* Switch CI script to bash. Pull request [#2799](https://github.com/ruby/rubygems/pull/2799) by David Rodríguez. +* Move gemcutter utilities code to Gem::Command. Pull request [#2803](https://github.com/ruby/rubygems/pull/2803) by Luis Sagastume. -* Add raw spec method to gem package. Pull request [#2806](https://github.com/rubygems/rubygems/pull/2806) by Luis +* Add raw spec method to gem package. Pull request [#2806](https://github.com/ruby/rubygems/pull/2806) by Luis Sagastume. -* Improve `rake package` test error message. Pull request [#2815](https://github.com/rubygems/rubygems/pull/2815) by David +* Improve `rake package` test error message. Pull request [#2815](https://github.com/ruby/rubygems/pull/2815) by David Rodríguez. -* Resolve `@@project_dir` from test file paths. Pull request [#2843](https://github.com/rubygems/rubygems/pull/2843) by +* Resolve `@@project_dir` from test file paths. Pull request [#2843](https://github.com/ruby/rubygems/pull/2843) by Nobuyoshi Nakada. -* Remove dead code in Gem::Validator. Pull request [#2537](https://github.com/rubygems/rubygems/pull/2537) by Ellen Marie +* Remove dead code in Gem::Validator. Pull request [#2537](https://github.com/ruby/rubygems/pull/2537) by Ellen Marie Dash. * The date might have advanced since TODAY has been set. Pull request - [#2938](https://github.com/rubygems/rubygems/pull/2938) by Nobuyoshi Nakada. -* Remove old ci configurations. Pull request [#2917](https://github.com/rubygems/rubygems/pull/2917) by SHIBATA Hiroshi. -* Add Gem::Dependency identity. Pull request [#2936](https://github.com/rubygems/rubygems/pull/2936) by Luis Sagastume. -* Filter dependency type and name strictly. Pull request [#2930](https://github.com/rubygems/rubygems/pull/2930) by SHIBATA + [#2938](https://github.com/ruby/rubygems/pull/2938) by Nobuyoshi Nakada. +* Remove old ci configurations. Pull request [#2917](https://github.com/ruby/rubygems/pull/2917) by SHIBATA Hiroshi. +* Add Gem::Dependency identity. Pull request [#2936](https://github.com/ruby/rubygems/pull/2936) by Luis Sagastume. +* Filter dependency type and name strictly. Pull request [#2930](https://github.com/ruby/rubygems/pull/2930) by SHIBATA Hiroshi. * Always pass an encoding option to Zlib::GzipReader.wrap. Pull request - [#2933](https://github.com/rubygems/rubygems/pull/2933) by Nobuyoshi Nakada. -* Introduce default prerelease requirement. Pull request [#2925](https://github.com/rubygems/rubygems/pull/2925) by David + [#2933](https://github.com/ruby/rubygems/pull/2933) by Nobuyoshi Nakada. +* Introduce default prerelease requirement. Pull request [#2925](https://github.com/ruby/rubygems/pull/2925) by David Rodríguez. -* Detect libc version, closes #2918. Pull request [#2922](https://github.com/rubygems/rubygems/pull/2922) by fauno. +* Detect libc version, closes #2918. Pull request [#2922](https://github.com/ruby/rubygems/pull/2922) by fauno. * Use IAM role to extract security-credentials for EC2 instance. Pull - request [#2894](https://github.com/rubygems/rubygems/pull/2894) by Alexander Pakulov. -* Improve `gem uninstall --all`. Pull request [#2893](https://github.com/rubygems/rubygems/pull/2893) by David Rodríguez. -* Use `RbConfig::CONFIG['rubylibprefix']`. Pull request [#2889](https://github.com/rubygems/rubygems/pull/2889) by Nobuyoshi + request [#2894](https://github.com/ruby/rubygems/pull/2894) by Alexander Pakulov. +* Improve `gem uninstall --all`. Pull request [#2893](https://github.com/ruby/rubygems/pull/2893) by David Rodríguez. +* Use `RbConfig::CONFIG['rubylibprefix']`. Pull request [#2889](https://github.com/ruby/rubygems/pull/2889) by Nobuyoshi Nakada. * Build the first gemspec we found if no arguments are passed to gem - build. Pull request [#2887](https://github.com/rubygems/rubygems/pull/2887) by Luis Sagastume. -* $LOAD_PATH elements should be real paths. Pull request [#2885](https://github.com/rubygems/rubygems/pull/2885) by + build. Pull request [#2887](https://github.com/ruby/rubygems/pull/2887) by Luis Sagastume. +* $LOAD_PATH elements should be real paths. Pull request [#2885](https://github.com/ruby/rubygems/pull/2885) by Nobuyoshi Nakada. * Use the standard RUBY_ENGINE_VERSION instead of JRUBY_VERSION. Pull - request [#2864](https://github.com/rubygems/rubygems/pull/2864) by Benoit Daloze. -* Cleanup after testing `rake package`. Pull request [#2862](https://github.com/rubygems/rubygems/pull/2862) by David + request [#2864](https://github.com/ruby/rubygems/pull/2864) by Benoit Daloze. +* Cleanup after testing `rake package`. Pull request [#2862](https://github.com/ruby/rubygems/pull/2862) by David Rodríguez. * Cherry-pick shushing deprecation warnings from ruby-core. Pull request - [#2861](https://github.com/rubygems/rubygems/pull/2861) by David Rodríguez. -* Ext/builder.rb cleanup. Pull request [#2849](https://github.com/rubygems/rubygems/pull/2849) by Luis Sagastume. -* Fix @ran_rake assignment in builder.rb. Pull request [#2850](https://github.com/rubygems/rubygems/pull/2850) by Luis + [#2861](https://github.com/ruby/rubygems/pull/2861) by David Rodríguez. +* Ext/builder.rb cleanup. Pull request [#2849](https://github.com/ruby/rubygems/pull/2849) by Luis Sagastume. +* Fix @ran_rake assignment in builder.rb. Pull request [#2850](https://github.com/ruby/rubygems/pull/2850) by Luis Sagastume. -* Remove test suite warnings. Pull request [#2845](https://github.com/rubygems/rubygems/pull/2845) by Luis Sagastume. +* Remove test suite warnings. Pull request [#2845](https://github.com/ruby/rubygems/pull/2845) by Luis Sagastume. * Replace domain parameter with a parameter to suppress suggestions. Pull - request [#2846](https://github.com/rubygems/rubygems/pull/2846) by Luis Sagastume. + request [#2846](https://github.com/ruby/rubygems/pull/2846) by Luis Sagastume. * Move default specifications dir definition out of BasicSpecification. - Pull request [#2841](https://github.com/rubygems/rubygems/pull/2841) by Vít Ondruch. + Pull request [#2841](https://github.com/ruby/rubygems/pull/2841) by Vít Ondruch. * There is no usage of @orig_env_* variables in test suite. Pull request - [#2838](https://github.com/rubygems/rubygems/pull/2838) by SHIBATA Hiroshi. + [#2838](https://github.com/ruby/rubygems/pull/2838) by SHIBATA Hiroshi. * Use File#open instead of Kernel#open in stub_specification.rb. Pull - request [#2834](https://github.com/rubygems/rubygems/pull/2834) by Luis Sagastume. -* Simplify #to_ruby code. Pull request [#2825](https://github.com/rubygems/rubygems/pull/2825) by Nobuyoshi Nakada. -* Add a gem attr to the Gem::Package class. Pull request [#2828](https://github.com/rubygems/rubygems/pull/2828) by Daniel + request [#2834](https://github.com/ruby/rubygems/pull/2834) by Luis Sagastume. +* Simplify #to_ruby code. Pull request [#2825](https://github.com/ruby/rubygems/pull/2825) by Nobuyoshi Nakada. +* Add a gem attr to the Gem::Package class. Pull request [#2828](https://github.com/ruby/rubygems/pull/2828) by Daniel Berger. -* Remove useless TODO comment. Pull request [#2818](https://github.com/rubygems/rubygems/pull/2818) by Luis Sagastume. +* Remove useless TODO comment. Pull request [#2818](https://github.com/ruby/rubygems/pull/2818) by Luis Sagastume. ### Bug fixes: -* Fix typos in History.txt. Pull request [#2565](https://github.com/rubygems/rubygems/pull/2565) by Igor Zubkov. -* Remove unused empty sources array. Pull request [#2598](https://github.com/rubygems/rubygems/pull/2598) by Aaron +* Fix typos in History.txt. Pull request [#2565](https://github.com/ruby/rubygems/pull/2565) by Igor Zubkov. +* Remove unused empty sources array. Pull request [#2598](https://github.com/ruby/rubygems/pull/2598) by Aaron Patterson. * Fix windows specific executables generated by `gem install`. Pull - request [#2628](https://github.com/rubygems/rubygems/pull/2628) by David Rodríguez. -* Gem::Specification#to_ruby needs OpenSSL. Pull request [#2937](https://github.com/rubygems/rubygems/pull/2937) by + request [#2628](https://github.com/ruby/rubygems/pull/2628) by David Rodríguez. +* Gem::Specification#to_ruby needs OpenSSL. Pull request [#2937](https://github.com/ruby/rubygems/pull/2937) by Nobuyoshi Nakada. -* Set SOURCE_DATE_EPOCH env var if not provided. Pull request [#2882](https://github.com/rubygems/rubygems/pull/2882) by +* Set SOURCE_DATE_EPOCH env var if not provided. Pull request [#2882](https://github.com/ruby/rubygems/pull/2882) by Ellen Marie Dash. -* Installer.rb - fix #windows_stub_script. Pull request [#2876](https://github.com/rubygems/rubygems/pull/2876) by MSP-Greg. -* Fixed deprecation message. Pull request [#2867](https://github.com/rubygems/rubygems/pull/2867) by Nobuyoshi Nakada. -* Fix requiring default gems to consider prereleases. Pull request [#2728](https://github.com/rubygems/rubygems/pull/2728) +* Installer.rb - fix #windows_stub_script. Pull request [#2876](https://github.com/ruby/rubygems/pull/2876) by MSP-Greg. +* Fixed deprecation message. Pull request [#2867](https://github.com/ruby/rubygems/pull/2867) by Nobuyoshi Nakada. +* Fix requiring default gems to consider prereleases. Pull request [#2728](https://github.com/ruby/rubygems/pull/2728) by David Rodríguez. -* Forbid `find_spec_for_exe` without an `exec_name`. Pull request [#2706](https://github.com/rubygems/rubygems/pull/2706) by +* Forbid `find_spec_for_exe` without an `exec_name`. Pull request [#2706](https://github.com/ruby/rubygems/pull/2706) by David Rodríguez. * Do not prompt for passphrase when key can be loaded without it. Pull - request [#2710](https://github.com/rubygems/rubygems/pull/2710) by Luis Sagastume. -* Add missing wrapper. Pull request [#2690](https://github.com/rubygems/rubygems/pull/2690) by David Rodríguez. -* Remove long ago deprecated methods. Pull request [#2704](https://github.com/rubygems/rubygems/pull/2704) by David + request [#2710](https://github.com/ruby/rubygems/pull/2710) by Luis Sagastume. +* Add missing wrapper. Pull request [#2690](https://github.com/ruby/rubygems/pull/2690) by David Rodríguez. +* Remove long ago deprecated methods. Pull request [#2704](https://github.com/ruby/rubygems/pull/2704) by David Rodríguez. -* Renamed duplicate test. Pull request [#2678](https://github.com/rubygems/rubygems/pull/2678) by Nobuyoshi Nakada. -* File.exists? is deprecated. Pull request [#2855](https://github.com/rubygems/rubygems/pull/2855) by SHIBATA Hiroshi. -* Fixed to warn with shadowing outer local variable. Pull request [#2856](https://github.com/rubygems/rubygems/pull/2856) by +* Renamed duplicate test. Pull request [#2678](https://github.com/ruby/rubygems/pull/2678) by Nobuyoshi Nakada. +* File.exists? is deprecated. Pull request [#2855](https://github.com/ruby/rubygems/pull/2855) by SHIBATA Hiroshi. +* Fixed to warn with shadowing outer local variable. Pull request [#2856](https://github.com/ruby/rubygems/pull/2856) by SHIBATA Hiroshi. -* Fix explain with ignore-dependencies. Pull request [#2647](https://github.com/rubygems/rubygems/pull/2647) by David +* Fix explain with ignore-dependencies. Pull request [#2647](https://github.com/ruby/rubygems/pull/2647) by David Rodríguez. * Fix default gem executable installation when folder is not `bin/`. Pull - request [#2649](https://github.com/rubygems/rubygems/pull/2649) by David Rodríguez. + request [#2649](https://github.com/ruby/rubygems/pull/2649) by David Rodríguez. * Fix cryptic error on local and ignore-dependencies combination. Pull - request [#2650](https://github.com/rubygems/rubygems/pull/2650) by David Rodríguez. + request [#2650](https://github.com/ruby/rubygems/pull/2650) by David Rodríguez. ### Deprecations: * Make deprecate Gem::RubyGemsVersion and Gem::ConfigMap. Pull request - [#2857](https://github.com/rubygems/rubygems/pull/2857) by SHIBATA Hiroshi. -* Deprecate Gem::RemoteFetcher#fetch_size. Pull request [#2833](https://github.com/rubygems/rubygems/pull/2833) by Luis + [#2857](https://github.com/ruby/rubygems/pull/2857) by SHIBATA Hiroshi. +* Deprecate Gem::RemoteFetcher#fetch_size. Pull request [#2833](https://github.com/ruby/rubygems/pull/2833) by Luis Sagastume. -* Explicitly deprecate `rubyforge_project`. Pull request [#2798](https://github.com/rubygems/rubygems/pull/2798) by David +* Explicitly deprecate `rubyforge_project`. Pull request [#2798](https://github.com/ruby/rubygems/pull/2798) by David Rodríguez. -* Deprecate unused Gem::Installer#unpack method. Pull request [#2715](https://github.com/rubygems/rubygems/pull/2715) by Vít +* Deprecate unused Gem::Installer#unpack method. Pull request [#2715](https://github.com/ruby/rubygems/pull/2715) by Vít Ondruch. -* Deprecate a few unused methods. Pull request [#2674](https://github.com/rubygems/rubygems/pull/2674) by David Rodríguez. -* Add deprecation warnings for cli options. Pull request [#2607](https://github.com/rubygems/rubygems/pull/2607) by Luis +* Deprecate a few unused methods. Pull request [#2674](https://github.com/ruby/rubygems/pull/2674) by David Rodríguez. +* Add deprecation warnings for cli options. Pull request [#2607](https://github.com/ruby/rubygems/pull/2607) by Luis Sagastume. ### Breaking changes: -* Suppress keywords warning. Pull request [#2934](https://github.com/rubygems/rubygems/pull/2934) by Nobuyoshi Nakada. -* Suppress Ruby 2.7's real kwargs warning. Pull request [#2912](https://github.com/rubygems/rubygems/pull/2912) by Koichi +* Suppress keywords warning. Pull request [#2934](https://github.com/ruby/rubygems/pull/2934) by Nobuyoshi Nakada. +* Suppress Ruby 2.7's real kwargs warning. Pull request [#2912](https://github.com/ruby/rubygems/pull/2912) by Koichi ITO. -* Fix Kernel#warn override. Pull request [#2911](https://github.com/rubygems/rubygems/pull/2911) by Jeremy Evans. +* Fix Kernel#warn override. Pull request [#2911](https://github.com/ruby/rubygems/pull/2911) by Jeremy Evans. * Remove conflict.rb code that was supposed to be removed in Rubygems 3. - Pull request [#2802](https://github.com/rubygems/rubygems/pull/2802) by Luis Sagastume. -* Compatibility cleanups. Pull request [#2754](https://github.com/rubygems/rubygems/pull/2754) by David Rodríguez. -* Remove `others_possible` activation request param. Pull request [#2747](https://github.com/rubygems/rubygems/pull/2747) by + Pull request [#2802](https://github.com/ruby/rubygems/pull/2802) by Luis Sagastume. +* Compatibility cleanups. Pull request [#2754](https://github.com/ruby/rubygems/pull/2754) by David Rodríguez. +* Remove `others_possible` activation request param. Pull request [#2747](https://github.com/ruby/rubygems/pull/2747) by David Rodríguez. -* Remove dependency installer deprecated code. Pull request [#2740](https://github.com/rubygems/rubygems/pull/2740) by Luis +* Remove dependency installer deprecated code. Pull request [#2740](https://github.com/ruby/rubygems/pull/2740) by Luis Sagastume. -* Removed guard condition with USE_BUNDLER_FOR_GEMDEPS. Pull request [#2716](https://github.com/rubygems/rubygems/pull/2716) +* Removed guard condition with USE_BUNDLER_FOR_GEMDEPS. Pull request [#2716](https://github.com/ruby/rubygems/pull/2716) by SHIBATA Hiroshi. -* Skip deprecation warning during specs. Pull request [#2718](https://github.com/rubygems/rubygems/pull/2718) by David +* Skip deprecation warning during specs. Pull request [#2718](https://github.com/ruby/rubygems/pull/2718) by David Rodríguez. -* Remove QuickLoader reference. Pull request [#2719](https://github.com/rubygems/rubygems/pull/2719) by David Rodríguez. -* Removed circular require. Pull request [#2679](https://github.com/rubygems/rubygems/pull/2679) by Nobuyoshi Nakada. +* Remove QuickLoader reference. Pull request [#2719](https://github.com/ruby/rubygems/pull/2719) by David Rodríguez. +* Removed circular require. Pull request [#2679](https://github.com/ruby/rubygems/pull/2679) by Nobuyoshi Nakada. * Removed needless environmental variable for Travis CI. Pull request - [#2685](https://github.com/rubygems/rubygems/pull/2685) by SHIBATA Hiroshi. -* Removing yaml require. Pull request [#2538](https://github.com/rubygems/rubygems/pull/2538) by Luciano Sousa. + [#2685](https://github.com/ruby/rubygems/pull/2685) by SHIBATA Hiroshi. +* Removing yaml require. Pull request [#2538](https://github.com/ruby/rubygems/pull/2538) by Luciano Sousa. ## 3.0.8 / 2020-02-19 ### Bug fixes: -* Gem::Specification#to_ruby needs OpenSSL. Pull request [#2937](https://github.com/rubygems/rubygems/pull/2937) by +* Gem::Specification#to_ruby needs OpenSSL. Pull request [#2937](https://github.com/ruby/rubygems/pull/2937) by Nobuyoshi Nakada. ## 3.0.7 / 2020-02-18 @@ -2607,12 +2607,12 @@ ### Bug fixes: * Fix underscore version selection for bundler #2908 by David Rodríguez. -* Add missing wrapper. Pull request [#2690](https://github.com/rubygems/rubygems/pull/2690) by David Rodríguez. +* Add missing wrapper. Pull request [#2690](https://github.com/ruby/rubygems/pull/2690) by David Rodríguez. * Make Gem::Specification#ruby_code handle OpenSSL::PKey::RSA objects. - Pull request [#2782](https://github.com/rubygems/rubygems/pull/2782) by Luis Sagastume. -* Installer.rb - fix #windows_stub_script. Pull request [#2876](https://github.com/rubygems/rubygems/pull/2876) by MSP-Greg. + Pull request [#2782](https://github.com/ruby/rubygems/pull/2782) by Luis Sagastume. +* Installer.rb - fix #windows_stub_script. Pull request [#2876](https://github.com/ruby/rubygems/pull/2876) by MSP-Greg. * Use IAM role to extract security-credentials for EC2 instance. Pull - request [#2894](https://github.com/rubygems/rubygems/pull/2894) by Alexander Pakulov. + request [#2894](https://github.com/ruby/rubygems/pull/2894) by Alexander Pakulov. ## 3.0.6 / 2019-08-17 @@ -2624,53 +2624,53 @@ ### Enhancements: -* Use env var to configure api key on push. Pull request [#2559](https://github.com/rubygems/rubygems/pull/2559) by Luis +* Use env var to configure api key on push. Pull request [#2559](https://github.com/ruby/rubygems/pull/2559) by Luis Sagastume. -* Unswallow uninstall error. Pull request [#2707](https://github.com/rubygems/rubygems/pull/2707) by David Rodríguez. -* Expose windows path normalization utility. Pull request [#2767](https://github.com/rubygems/rubygems/pull/2767) by David +* Unswallow uninstall error. Pull request [#2707](https://github.com/ruby/rubygems/pull/2707) by David Rodríguez. +* Expose windows path normalization utility. Pull request [#2767](https://github.com/ruby/rubygems/pull/2767) by David Rodríguez. -* Clean which command. Pull request [#2801](https://github.com/rubygems/rubygems/pull/2801) by Luis Sagastume. -* Upgrading S3 source signature to AWS SigV4. Pull request [#2807](https://github.com/rubygems/rubygems/pull/2807) by +* Clean which command. Pull request [#2801](https://github.com/ruby/rubygems/pull/2801) by Luis Sagastume. +* Upgrading S3 source signature to AWS SigV4. Pull request [#2807](https://github.com/ruby/rubygems/pull/2807) by Alexander Pakulov. * Remove misleading comment, no reason to move Gem.host to Gem::Util. - Pull request [#2811](https://github.com/rubygems/rubygems/pull/2811) by Luis Sagastume. -* Drop support for 'gem env packageversion'. Pull request [#2813](https://github.com/rubygems/rubygems/pull/2813) by Luis + Pull request [#2811](https://github.com/ruby/rubygems/pull/2811) by Luis Sagastume. +* Drop support for 'gem env packageversion'. Pull request [#2813](https://github.com/ruby/rubygems/pull/2813) by Luis Sagastume. * Take into account just git tracked files in update_manifest rake task. - Pull request [#2816](https://github.com/rubygems/rubygems/pull/2816) by Luis Sagastume. -* Remove TODO comment, there's no Gem::Dirs constant. Pull request [#2819](https://github.com/rubygems/rubygems/pull/2819) + Pull request [#2816](https://github.com/ruby/rubygems/pull/2816) by Luis Sagastume. +* Remove TODO comment, there's no Gem::Dirs constant. Pull request [#2819](https://github.com/ruby/rubygems/pull/2819) by Luis Sagastume. -* Remove unused 'raise' from test_case. Pull request [#2820](https://github.com/rubygems/rubygems/pull/2820) by Luis +* Remove unused 'raise' from test_case. Pull request [#2820](https://github.com/ruby/rubygems/pull/2820) by Luis Sagastume. -* Move TODO comment to an information comment. Pull request [#2821](https://github.com/rubygems/rubygems/pull/2821) by Luis +* Move TODO comment to an information comment. Pull request [#2821](https://github.com/ruby/rubygems/pull/2821) by Luis Sagastume. * Use File#open instead of Kernel#open in stub_specification.rb. Pull - request [#2834](https://github.com/rubygems/rubygems/pull/2834) by Luis Sagastume. -* Make error code a gemcutter_utilities a constant. Pull request [#2844](https://github.com/rubygems/rubygems/pull/2844) by + request [#2834](https://github.com/ruby/rubygems/pull/2834) by Luis Sagastume. +* Make error code a gemcutter_utilities a constant. Pull request [#2844](https://github.com/ruby/rubygems/pull/2844) by Luis Sagastume. -* Remove FIXME comment related to PathSupport. Pull request [#2854](https://github.com/rubygems/rubygems/pull/2854) by Luis +* Remove FIXME comment related to PathSupport. Pull request [#2854](https://github.com/ruby/rubygems/pull/2854) by Luis Sagastume. -* Use gsub with Hash. Pull request [#2860](https://github.com/rubygems/rubygems/pull/2860) by Kazuhiro NISHIYAMA. +* Use gsub with Hash. Pull request [#2860](https://github.com/ruby/rubygems/pull/2860) by Kazuhiro NISHIYAMA. * Use the standard RUBY_ENGINE_VERSION instead of JRUBY_VERSION. Pull - request [#2864](https://github.com/rubygems/rubygems/pull/2864) by Benoit Daloze. -* Do not mutate uri.query during s3 signature creation. Pull request [#2874](https://github.com/rubygems/rubygems/pull/2874) + request [#2864](https://github.com/ruby/rubygems/pull/2864) by Benoit Daloze. +* Do not mutate uri.query during s3 signature creation. Pull request [#2874](https://github.com/ruby/rubygems/pull/2874) by Alexander Pakulov. -* Fixup #2844. Pull request [#2878](https://github.com/rubygems/rubygems/pull/2878) by SHIBATA Hiroshi. +* Fixup #2844. Pull request [#2878](https://github.com/ruby/rubygems/pull/2878) by SHIBATA Hiroshi. ### Bug fixes: -* Fix intermittent test error on Appveyor & Travis. Pull request [#2568](https://github.com/rubygems/rubygems/pull/2568) by +* Fix intermittent test error on Appveyor & Travis. Pull request [#2568](https://github.com/ruby/rubygems/pull/2568) by MSP-Greg. -* Extend timeout on assert_self_install_permissions. Pull request [#2605](https://github.com/rubygems/rubygems/pull/2605) by +* Extend timeout on assert_self_install_permissions. Pull request [#2605](https://github.com/ruby/rubygems/pull/2605) by SHIBATA Hiroshi. -* Better folder assertions. Pull request [#2644](https://github.com/rubygems/rubygems/pull/2644) by David Rodríguez. +* Better folder assertions. Pull request [#2644](https://github.com/ruby/rubygems/pull/2644) by David Rodríguez. * Fix default gem executable installation when folder is not `bin/`. Pull - request [#2649](https://github.com/rubygems/rubygems/pull/2649) by David Rodríguez. -* Fix gem uninstall behavior. Pull request [#2663](https://github.com/rubygems/rubygems/pull/2663) by Luis Sagastume. + request [#2649](https://github.com/ruby/rubygems/pull/2649) by David Rodríguez. +* Fix gem uninstall behavior. Pull request [#2663](https://github.com/ruby/rubygems/pull/2663) by Luis Sagastume. * Fix for large values in UID/GID fields in tar archives. Pull request - [#2780](https://github.com/rubygems/rubygems/pull/2780) by Alexey Shein. -* Fixed task order for release. Pull request [#2792](https://github.com/rubygems/rubygems/pull/2792) by SHIBATA Hiroshi. -* Ignore GEMRC variable for test suite. Pull request [#2837](https://github.com/rubygems/rubygems/pull/2837) by SHIBATA + [#2780](https://github.com/ruby/rubygems/pull/2780) by Alexey Shein. +* Fixed task order for release. Pull request [#2792](https://github.com/ruby/rubygems/pull/2792) by SHIBATA Hiroshi. +* Ignore GEMRC variable for test suite. Pull request [#2837](https://github.com/ruby/rubygems/pull/2837) by SHIBATA Hiroshi. ## 3.0.4 / 2019-06-14 @@ -2680,53 +2680,53 @@ * Add support for TruffleRuby #2612 by Benoit Daloze * Serve a more descriptive error when --no-ri or --no-rdoc are used #2572 by Grey Baker -* Improve test compatibility with CMake 2.8. Pull request [#2590](https://github.com/rubygems/rubygems/pull/2590) by Vít +* Improve test compatibility with CMake 2.8. Pull request [#2590](https://github.com/ruby/rubygems/pull/2590) by Vít Ondruch. * Restore gem build behavior and introduce the "-C" flag to gem build. - Pull request [#2596](https://github.com/rubygems/rubygems/pull/2596) by Luis Sagastume. -* Enabled block call with util_set_arch. Pull request [#2603](https://github.com/rubygems/rubygems/pull/2603) by SHIBATA + Pull request [#2596](https://github.com/ruby/rubygems/pull/2596) by Luis Sagastume. +* Enabled block call with util_set_arch. Pull request [#2603](https://github.com/ruby/rubygems/pull/2603) by SHIBATA Hiroshi. * Avoid rdoc hook when it's failed to load rdoc library. Pull request - [#2604](https://github.com/rubygems/rubygems/pull/2604) by SHIBATA Hiroshi. -* Drop tests for legacy RDoc. Pull request [#2608](https://github.com/rubygems/rubygems/pull/2608) by Nobuyoshi Nakada. -* Update TODO comment. Pull request [#2658](https://github.com/rubygems/rubygems/pull/2658) by Luis Sagastume. -* Skip malicious extension test with mswin platform. Pull request [#2670](https://github.com/rubygems/rubygems/pull/2670) by + [#2604](https://github.com/ruby/rubygems/pull/2604) by SHIBATA Hiroshi. +* Drop tests for legacy RDoc. Pull request [#2608](https://github.com/ruby/rubygems/pull/2608) by Nobuyoshi Nakada. +* Update TODO comment. Pull request [#2658](https://github.com/ruby/rubygems/pull/2658) by Luis Sagastume. +* Skip malicious extension test with mswin platform. Pull request [#2670](https://github.com/ruby/rubygems/pull/2670) by SHIBATA Hiroshi. -* Check deprecated methods on release. Pull request [#2673](https://github.com/rubygems/rubygems/pull/2673) by David +* Check deprecated methods on release. Pull request [#2673](https://github.com/ruby/rubygems/pull/2673) by David Rodríguez. -* Add steps to run bundler tests. Pull request [#2680](https://github.com/rubygems/rubygems/pull/2680) by Aditya Prakash. -* Skip temporary "No such host is known" error. Pull request [#2684](https://github.com/rubygems/rubygems/pull/2684) by +* Add steps to run bundler tests. Pull request [#2680](https://github.com/ruby/rubygems/pull/2680) by Aditya Prakash. +* Skip temporary "No such host is known" error. Pull request [#2684](https://github.com/ruby/rubygems/pull/2684) by Takashi Kokubun. -* Replaced aws-sdk-s3 instead of s3cmd. Pull request [#2688](https://github.com/rubygems/rubygems/pull/2688) by SHIBATA +* Replaced aws-sdk-s3 instead of s3cmd. Pull request [#2688](https://github.com/ruby/rubygems/pull/2688) by SHIBATA Hiroshi. -* Allow uninstall from symlinked GEM_HOME. Pull request [#2720](https://github.com/rubygems/rubygems/pull/2720) by David +* Allow uninstall from symlinked GEM_HOME. Pull request [#2720](https://github.com/ruby/rubygems/pull/2720) by David Rodríguez. * Use current checkout in CI to uninstall RVM related gems. Pull request - [#2729](https://github.com/rubygems/rubygems/pull/2729) by David Rodríguez. -* Update Contributor Covenant v1.4.1. Pull request [#2751](https://github.com/rubygems/rubygems/pull/2751) by SHIBATA + [#2729](https://github.com/ruby/rubygems/pull/2729) by David Rodríguez. +* Update Contributor Covenant v1.4.1. Pull request [#2751](https://github.com/ruby/rubygems/pull/2751) by SHIBATA Hiroshi. -* Added supported versions of Ruby. Pull request [#2756](https://github.com/rubygems/rubygems/pull/2756) by SHIBATA Hiroshi. -* Fix shadowing outer local variable warning. Pull request [#2763](https://github.com/rubygems/rubygems/pull/2763) by Luis +* Added supported versions of Ruby. Pull request [#2756](https://github.com/ruby/rubygems/pull/2756) by SHIBATA Hiroshi. +* Fix shadowing outer local variable warning. Pull request [#2763](https://github.com/ruby/rubygems/pull/2763) by Luis Sagastume. * Update the certificate files to make the test pass on Debian 10. Pull - request [#2777](https://github.com/rubygems/rubygems/pull/2777) by Yusuke Endoh. -* Backport ruby core changes. Pull request [#2778](https://github.com/rubygems/rubygems/pull/2778) by SHIBATA Hiroshi. + request [#2777](https://github.com/ruby/rubygems/pull/2777) by Yusuke Endoh. +* Backport ruby core changes. Pull request [#2778](https://github.com/ruby/rubygems/pull/2778) by SHIBATA Hiroshi. ### Bug fixes: -* Test_gem.rb - intermittent failure fix. Pull request [#2613](https://github.com/rubygems/rubygems/pull/2613) by MSP-Greg. -* Fix sporadic CI failures. Pull request [#2617](https://github.com/rubygems/rubygems/pull/2617) by David Rodríguez. -* Fix flaky bundler version finder tests. Pull request [#2624](https://github.com/rubygems/rubygems/pull/2624) by David +* Test_gem.rb - intermittent failure fix. Pull request [#2613](https://github.com/ruby/rubygems/pull/2613) by MSP-Greg. +* Fix sporadic CI failures. Pull request [#2617](https://github.com/ruby/rubygems/pull/2617) by David Rodríguez. +* Fix flaky bundler version finder tests. Pull request [#2624](https://github.com/ruby/rubygems/pull/2624) by David Rodríguez. -* Fix gem indexer tests leaking utility gems. Pull request [#2625](https://github.com/rubygems/rubygems/pull/2625) by David +* Fix gem indexer tests leaking utility gems. Pull request [#2625](https://github.com/ruby/rubygems/pull/2625) by David Rodríguez. -* Clean up default spec dir too. Pull request [#2639](https://github.com/rubygems/rubygems/pull/2639) by David Rodríguez. -* Fix 2.6.1 build against vendored bundler. Pull request [#2645](https://github.com/rubygems/rubygems/pull/2645) by David +* Clean up default spec dir too. Pull request [#2639](https://github.com/ruby/rubygems/pull/2639) by David Rodríguez. +* Fix 2.6.1 build against vendored bundler. Pull request [#2645](https://github.com/ruby/rubygems/pull/2645) by David Rodríguez. -* Fix comment typo. Pull request [#2664](https://github.com/rubygems/rubygems/pull/2664) by Luis Sagastume. +* Fix comment typo. Pull request [#2664](https://github.com/ruby/rubygems/pull/2664) by Luis Sagastume. * Fix comment of Gem::Specification#required_ruby_version=. Pull request - [#2732](https://github.com/rubygems/rubygems/pull/2732) by Alex Junger. -* Fix TODOs. Pull request [#2748](https://github.com/rubygems/rubygems/pull/2748) by David Rodríguez. + [#2732](https://github.com/ruby/rubygems/pull/2732) by Alex Junger. +* Fix TODOs. Pull request [#2748](https://github.com/ruby/rubygems/pull/2748) by David Rodríguez. ## 3.0.3 / 2019-03-05 @@ -2743,312 +2743,312 @@ Security fixes: ### Enhancements: -* Use Bundler-1.17.3. Pull request [#2556](https://github.com/rubygems/rubygems/pull/2556) by SHIBATA Hiroshi. -* Fix document flag description. Pull request [#2555](https://github.com/rubygems/rubygems/pull/2555) by Luis Sagastume. +* Use Bundler-1.17.3. Pull request [#2556](https://github.com/ruby/rubygems/pull/2556) by SHIBATA Hiroshi. +* Fix document flag description. Pull request [#2555](https://github.com/ruby/rubygems/pull/2555) by Luis Sagastume. ### Bug fixes: * Fix tests when ruby --program-suffix is used without rubygems - --format-executable. Pull request [#2549](https://github.com/rubygems/rubygems/pull/2549) by Jeremy Evans. + --format-executable. Pull request [#2549](https://github.com/ruby/rubygems/pull/2549) by Jeremy Evans. * Fix Gem::Requirement equality comparison when ~> operator is used. Pull - request [#2554](https://github.com/rubygems/rubygems/pull/2554) by Grey Baker. -* Unset SOURCE_DATE_EPOCH in the test cases. Pull request [#2558](https://github.com/rubygems/rubygems/pull/2558) by Sorah + request [#2554](https://github.com/ruby/rubygems/pull/2554) by Grey Baker. +* Unset SOURCE_DATE_EPOCH in the test cases. Pull request [#2558](https://github.com/ruby/rubygems/pull/2558) by Sorah Fukumori. -* Restore SOURCE_DATE_EPOCH. Pull request [#2560](https://github.com/rubygems/rubygems/pull/2560) by SHIBATA Hiroshi. +* Restore SOURCE_DATE_EPOCH. Pull request [#2560](https://github.com/ruby/rubygems/pull/2560) by SHIBATA Hiroshi. ## 3.0.1 / 2018-12-23 ### Bug fixes: -* Ensure globbed files paths are expanded. Pull request [#2536](https://github.com/rubygems/rubygems/pull/2536) by Tony Ta. -* Dup the Dir.home string before passing it on. Pull request [#2545](https://github.com/rubygems/rubygems/pull/2545) by +* Ensure globbed files paths are expanded. Pull request [#2536](https://github.com/ruby/rubygems/pull/2536) by Tony Ta. +* Dup the Dir.home string before passing it on. Pull request [#2545](https://github.com/ruby/rubygems/pull/2545) by Charles Oliver Nutter. -* Added permissions to installed files for non-owners. Pull request [#2546](https://github.com/rubygems/rubygems/pull/2546) +* Added permissions to installed files for non-owners. Pull request [#2546](https://github.com/ruby/rubygems/pull/2546) by SHIBATA Hiroshi. -* Restore release task without hoe. Pull request [#2547](https://github.com/rubygems/rubygems/pull/2547) by SHIBATA Hiroshi. +* Restore release task without hoe. Pull request [#2547](https://github.com/ruby/rubygems/pull/2547) by SHIBATA Hiroshi. ## 3.0.0 / 2018-12-19 ### Enhancements: -* S3 source. Pull request [#1690](https://github.com/rubygems/rubygems/pull/1690) by Aditya Prakash. -* Download gems with threads. Pull request [#1898](https://github.com/rubygems/rubygems/pull/1898) by André Arko. -* Update to SPDX license list 3.0. Pull request [#2152](https://github.com/rubygems/rubygems/pull/2152) by Mike Linksvayer. -* [GSoC] Multi-factor feature for RubyGems. Pull request [#2369](https://github.com/rubygems/rubygems/pull/2369) by Qiu +* S3 source. Pull request [#1690](https://github.com/ruby/rubygems/pull/1690) by Aditya Prakash. +* Download gems with threads. Pull request [#1898](https://github.com/ruby/rubygems/pull/1898) by André Arko. +* Update to SPDX license list 3.0. Pull request [#2152](https://github.com/ruby/rubygems/pull/2152) by Mike Linksvayer. +* [GSoC] Multi-factor feature for RubyGems. Pull request [#2369](https://github.com/ruby/rubygems/pull/2369) by Qiu Chaofan. -* Use bundler 1.17.2. Pull request [#2521](https://github.com/rubygems/rubygems/pull/2521) by SHIBATA Hiroshi. +* Use bundler 1.17.2. Pull request [#2521](https://github.com/ruby/rubygems/pull/2521) by SHIBATA Hiroshi. * Don't treat inaccessible working directories as build failures. Pull - request [#1135](https://github.com/rubygems/rubygems/pull/1135) by Pete. + request [#1135](https://github.com/ruby/rubygems/pull/1135) by Pete. * Remove useless directory parameter from builders .build methods. - [rebased]. Pull request [#1433](https://github.com/rubygems/rubygems/pull/1433) by Kurtis Rainbolt-Greene. -* Skipping more than one gem in pristine. Pull request [#1592](https://github.com/rubygems/rubygems/pull/1592) by Henne + [rebased]. Pull request [#1433](https://github.com/ruby/rubygems/pull/1433) by Kurtis Rainbolt-Greene. +* Skipping more than one gem in pristine. Pull request [#1592](https://github.com/ruby/rubygems/pull/1592) by Henne Vogelsang. * Add info command to print information about an installed gem. Pull - request [#2023](https://github.com/rubygems/rubygems/pull/2023) by Colby Swandale. + request [#2023](https://github.com/ruby/rubygems/pull/2023) by Colby Swandale. * Add --[no-]check-development option to cleanup command. Pull request - [#2061](https://github.com/rubygems/rubygems/pull/2061) by Lin Jen-Shin (godfat). -* Show which gem referenced a missing gem. Pull request [#2067](https://github.com/rubygems/rubygems/pull/2067) by Artem + [#2061](https://github.com/ruby/rubygems/pull/2061) by Lin Jen-Shin (godfat). +* Show which gem referenced a missing gem. Pull request [#2067](https://github.com/ruby/rubygems/pull/2067) by Artem Khramov. * Prevent to delete to "bundler-" prefix gem like bundler-audit. Pull - request [#2086](https://github.com/rubygems/rubygems/pull/2086) by SHIBATA Hiroshi. + request [#2086](https://github.com/ruby/rubygems/pull/2086) by SHIBATA Hiroshi. * Fix rake install_test_deps once the rake clean_env does not exist. Pull - request [#2090](https://github.com/rubygems/rubygems/pull/2090) by Lucas Arantes. + request [#2090](https://github.com/ruby/rubygems/pull/2090) by Lucas Arantes. * Workaround common options mutation in Gem::Command test. Pull request - [#2098](https://github.com/rubygems/rubygems/pull/2098) by Thibault Jouan. -* Extract a SpecificationPolicy validation class. Pull request [#2101](https://github.com/rubygems/rubygems/pull/2101) by + [#2098](https://github.com/ruby/rubygems/pull/2098) by Thibault Jouan. +* Extract a SpecificationPolicy validation class. Pull request [#2101](https://github.com/ruby/rubygems/pull/2101) by Olle Jonsson. * Handle environment that does not have `flock` system call. Pull request - [#2107](https://github.com/rubygems/rubygems/pull/2107) by SHIBATA Hiroshi. -* Handle the explain option in gem update. Pull request [#2110](https://github.com/rubygems/rubygems/pull/2110) by Colby + [#2107](https://github.com/ruby/rubygems/pull/2107) by SHIBATA Hiroshi. +* Handle the explain option in gem update. Pull request [#2110](https://github.com/ruby/rubygems/pull/2110) by Colby Swandale. * Add Gem.operating_system_defaults to allow packagers to override - defaults. Pull request [#2116](https://github.com/rubygems/rubygems/pull/2116) by Vít Ondruch. -* Update for compatibility with new minitest. Pull request [#2118](https://github.com/rubygems/rubygems/pull/2118) by + defaults. Pull request [#2116](https://github.com/ruby/rubygems/pull/2116) by Vít Ondruch. +* Update for compatibility with new minitest. Pull request [#2118](https://github.com/ruby/rubygems/pull/2118) by MSP-Greg. -* Make Windows bin stubs portable. Pull request [#2119](https://github.com/rubygems/rubygems/pull/2119) by MSP-Greg. +* Make Windows bin stubs portable. Pull request [#2119](https://github.com/ruby/rubygems/pull/2119) by MSP-Greg. * Avoid to warnings about gemspec loadings in rubygems tests. Pull request - [#2125](https://github.com/rubygems/rubygems/pull/2125) by SHIBATA Hiroshi. + [#2125](https://github.com/ruby/rubygems/pull/2125) by SHIBATA Hiroshi. * Set whether bundler is used for gemdeps with an environmental variable. - Pull request [#2126](https://github.com/rubygems/rubygems/pull/2126) by SHIBATA Hiroshi. -* Titleize "GETTING HELP" in readme. Pull request [#2136](https://github.com/rubygems/rubygems/pull/2136) by Colby Swandale. + Pull request [#2126](https://github.com/ruby/rubygems/pull/2126) by SHIBATA Hiroshi. +* Titleize "GETTING HELP" in readme. Pull request [#2136](https://github.com/ruby/rubygems/pull/2136) by Colby Swandale. * Improve the error message given when using --version with multiple gems - in the install command. Pull request [#2137](https://github.com/rubygems/rubygems/pull/2137) by Colby Swandale. -* Use `File.open` instead of `open`. Pull request [#2142](https://github.com/rubygems/rubygems/pull/2142) by SHIBATA + in the install command. Pull request [#2137](https://github.com/ruby/rubygems/pull/2137) by Colby Swandale. +* Use `File.open` instead of `open`. Pull request [#2142](https://github.com/ruby/rubygems/pull/2142) by SHIBATA Hiroshi. * Gem::Util.traverse_parents should not crash on permissions error. Pull - request [#2147](https://github.com/rubygems/rubygems/pull/2147) by Robert Ulejczyk. -* [Installer] Avoid a #mkdir race condition. Pull request [#2148](https://github.com/rubygems/rubygems/pull/2148) by Samuel + request [#2147](https://github.com/ruby/rubygems/pull/2147) by Robert Ulejczyk. +* [Installer] Avoid a #mkdir race condition. Pull request [#2148](https://github.com/ruby/rubygems/pull/2148) by Samuel Giddins. * Allow writing gemspecs from gem unpack to location specified by target - option. Pull request [#2150](https://github.com/rubygems/rubygems/pull/2150) by Colby Swandale. + option. Pull request [#2150](https://github.com/ruby/rubygems/pull/2150) by Colby Swandale. * Raise errors in `gem uninstall` when a file in a gem could not be - removed . Pull request [#2154](https://github.com/rubygems/rubygems/pull/2154) by Colby Swandale. -* Remove PID from gem index directory. Pull request [#2155](https://github.com/rubygems/rubygems/pull/2155) by SHIBATA + removed . Pull request [#2154](https://github.com/ruby/rubygems/pull/2154) by Colby Swandale. +* Remove PID from gem index directory. Pull request [#2155](https://github.com/ruby/rubygems/pull/2155) by SHIBATA Hiroshi. -* Nil guard on `Gem::Specification`. Pull request [#2164](https://github.com/rubygems/rubygems/pull/2164) by SHIBATA +* Nil guard on `Gem::Specification`. Pull request [#2164](https://github.com/ruby/rubygems/pull/2164) by SHIBATA Hiroshi. -* Skip broken test with macOS platform. Pull request [#2167](https://github.com/rubygems/rubygems/pull/2167) by SHIBATA +* Skip broken test with macOS platform. Pull request [#2167](https://github.com/ruby/rubygems/pull/2167) by SHIBATA Hiroshi. * Support option for `--destdir` with upgrade installer. Pull request - [#2169](https://github.com/rubygems/rubygems/pull/2169) by SHIBATA Hiroshi. -* To use constant instead of hard-coded version. Pull request [#2171](https://github.com/rubygems/rubygems/pull/2171) by + [#2169](https://github.com/ruby/rubygems/pull/2169) by SHIBATA Hiroshi. +* To use constant instead of hard-coded version. Pull request [#2171](https://github.com/ruby/rubygems/pull/2171) by SHIBATA Hiroshi. -* Add Rake task to install dev dependencies. Pull request [#2173](https://github.com/rubygems/rubygems/pull/2173) by Ellen +* Add Rake task to install dev dependencies. Pull request [#2173](https://github.com/ruby/rubygems/pull/2173) by Ellen Marie Dash. * Add new sections to the README and explanation of what RubyGems is. - Pull request [#2174](https://github.com/rubygems/rubygems/pull/2174) by Colby Swandale. -* Prefer to use `Numeric#zero?` instead of `== 0`. Pull request [#2176](https://github.com/rubygems/rubygems/pull/2176) by + Pull request [#2174](https://github.com/ruby/rubygems/pull/2174) by Colby Swandale. +* Prefer to use `Numeric#zero?` instead of `== 0`. Pull request [#2176](https://github.com/ruby/rubygems/pull/2176) by SHIBATA Hiroshi. -* Ignore performance test of version regexp pattern. Pull request [#2179](https://github.com/rubygems/rubygems/pull/2179) by +* Ignore performance test of version regexp pattern. Pull request [#2179](https://github.com/ruby/rubygems/pull/2179) by SHIBATA Hiroshi. -* Ignore .DS_Store files in the update_manifest task. Pull request [#2199](https://github.com/rubygems/rubygems/pull/2199) +* Ignore .DS_Store files in the update_manifest task. Pull request [#2199](https://github.com/ruby/rubygems/pull/2199) by Colby Swandale. * Allow building gems without having to be in the gem folder . Pull - request [#2204](https://github.com/rubygems/rubygems/pull/2204) by Colby Swandale. -* Added coverage ability used by simplecov. Pull request [#2207](https://github.com/rubygems/rubygems/pull/2207) by SHIBATA + request [#2204](https://github.com/ruby/rubygems/pull/2204) by Colby Swandale. +* Added coverage ability used by simplecov. Pull request [#2207](https://github.com/ruby/rubygems/pull/2207) by SHIBATA Hiroshi. -* Improve invalid proxy error message. Pull request [#2217](https://github.com/rubygems/rubygems/pull/2217) by Luis +* Improve invalid proxy error message. Pull request [#2217](https://github.com/ruby/rubygems/pull/2217) by Luis Sagastume. * Simplify home directory detection and platform condition. Pull request - [#2218](https://github.com/rubygems/rubygems/pull/2218) by SHIBATA Hiroshi. -* Permission options. Pull request [#2219](https://github.com/rubygems/rubygems/pull/2219) by Nobuyoshi Nakada. -* Improve gemspec and package task. Pull request [#2220](https://github.com/rubygems/rubygems/pull/2220) by SHIBATA Hiroshi. -* Prefer to use util_spec in `Gem::TestCase`. Pull request [#2227](https://github.com/rubygems/rubygems/pull/2227) by + [#2218](https://github.com/ruby/rubygems/pull/2218) by SHIBATA Hiroshi. +* Permission options. Pull request [#2219](https://github.com/ruby/rubygems/pull/2219) by Nobuyoshi Nakada. +* Improve gemspec and package task. Pull request [#2220](https://github.com/ruby/rubygems/pull/2220) by SHIBATA Hiroshi. +* Prefer to use util_spec in `Gem::TestCase`. Pull request [#2227](https://github.com/ruby/rubygems/pull/2227) by SHIBATA Hiroshi. * [Requirement] Treat requirements with == versions as equal. Pull - request [#2230](https://github.com/rubygems/rubygems/pull/2230) by Samuel Giddins. -* Add a note for the non-semantically versioned case. Pull request [#2242](https://github.com/rubygems/rubygems/pull/2242) + request [#2230](https://github.com/ruby/rubygems/pull/2230) by Samuel Giddins. +* Add a note for the non-semantically versioned case. Pull request [#2242](https://github.com/ruby/rubygems/pull/2242) by David Rodríguez. -* Keep feature names loaded in the block. Pull request [#2261](https://github.com/rubygems/rubygems/pull/2261) by Nobuyoshi +* Keep feature names loaded in the block. Pull request [#2261](https://github.com/ruby/rubygems/pull/2261) by Nobuyoshi Nakada. -* Tweak warning recommendation. Pull request [#2266](https://github.com/rubygems/rubygems/pull/2266) by David Rodríguez. -* Show git path in gem env. Pull request [#2268](https://github.com/rubygems/rubygems/pull/2268) by Luis Sagastume. -* Add `--env-shebang` flag to setup command. Pull request [#2271](https://github.com/rubygems/rubygems/pull/2271) by James +* Tweak warning recommendation. Pull request [#2266](https://github.com/ruby/rubygems/pull/2266) by David Rodríguez. +* Show git path in gem env. Pull request [#2268](https://github.com/ruby/rubygems/pull/2268) by Luis Sagastume. +* Add `--env-shebang` flag to setup command. Pull request [#2271](https://github.com/ruby/rubygems/pull/2271) by James Myers. * Support SOURCE_DATE_EPOCH to make gem spec reproducible. Pull request - [#2278](https://github.com/rubygems/rubygems/pull/2278) by Levente Polyak. + [#2278](https://github.com/ruby/rubygems/pull/2278) by Levente Polyak. * Chdir back to original directory when building an extension fails. Pull - request [#2282](https://github.com/rubygems/rubygems/pull/2282) by Samuel Giddins. -* [Rakefile] Add a default task that runs the tests. Pull request [#2283](https://github.com/rubygems/rubygems/pull/2283) by + request [#2282](https://github.com/ruby/rubygems/pull/2282) by Samuel Giddins. +* [Rakefile] Add a default task that runs the tests. Pull request [#2283](https://github.com/ruby/rubygems/pull/2283) by Samuel Giddins. * Support SOURCE_DATE_EPOCH to make gem tar reproducible. Pull request - [#2289](https://github.com/rubygems/rubygems/pull/2289) by Levente Polyak. -* Reset hooks in test cases. Pull request [#2297](https://github.com/rubygems/rubygems/pull/2297) by Samuel Giddins. -* Minor typo: nokogiri. Pull request [#2298](https://github.com/rubygems/rubygems/pull/2298) by Darshan Baid. -* Ignore vendored molinillo from code coverage. Pull request [#2302](https://github.com/rubygems/rubygems/pull/2302) by + [#2289](https://github.com/ruby/rubygems/pull/2289) by Levente Polyak. +* Reset hooks in test cases. Pull request [#2297](https://github.com/ruby/rubygems/pull/2297) by Samuel Giddins. +* Minor typo: nokogiri. Pull request [#2298](https://github.com/ruby/rubygems/pull/2298) by Darshan Baid. +* Ignore vendored molinillo from code coverage. Pull request [#2302](https://github.com/ruby/rubygems/pull/2302) by SHIBATA Hiroshi. -* Support IO.copy_stream. Pull request [#2303](https://github.com/rubygems/rubygems/pull/2303) by okkez. -* Prepare beta release. Pull request [#2304](https://github.com/rubygems/rubygems/pull/2304) by SHIBATA Hiroshi. -* Add error message when trying to open a default gem. Pull request [#2307](https://github.com/rubygems/rubygems/pull/2307) +* Support IO.copy_stream. Pull request [#2303](https://github.com/ruby/rubygems/pull/2303) by okkez. +* Prepare beta release. Pull request [#2304](https://github.com/ruby/rubygems/pull/2304) by SHIBATA Hiroshi. +* Add error message when trying to open a default gem. Pull request [#2307](https://github.com/ruby/rubygems/pull/2307) by Luis Sagastume. -* Add alias command 'i' for 'install' command. Pull request [#2308](https://github.com/rubygems/rubygems/pull/2308) by +* Add alias command 'i' for 'install' command. Pull request [#2308](https://github.com/ruby/rubygems/pull/2308) by ota42y. -* Cleanup rdoc task in Rakefile. Pull request [#2318](https://github.com/rubygems/rubygems/pull/2318) by SHIBATA Hiroshi. -* Add testcase to test_gem_text.rb. Pull request [#2329](https://github.com/rubygems/rubygems/pull/2329) by Oliver. -* Gem build strict option. Pull request [#2332](https://github.com/rubygems/rubygems/pull/2332) by David Rodríguez. -* Make spec reset more informative. Pull request [#2333](https://github.com/rubygems/rubygems/pull/2333) by Luis Sagastume. +* Cleanup rdoc task in Rakefile. Pull request [#2318](https://github.com/ruby/rubygems/pull/2318) by SHIBATA Hiroshi. +* Add testcase to test_gem_text.rb. Pull request [#2329](https://github.com/ruby/rubygems/pull/2329) by Oliver. +* Gem build strict option. Pull request [#2332](https://github.com/ruby/rubygems/pull/2332) by David Rodríguez. +* Make spec reset more informative. Pull request [#2333](https://github.com/ruby/rubygems/pull/2333) by Luis Sagastume. * [Rakefile] Set bundler build metadata when doing a release. Pull request - [#2335](https://github.com/rubygems/rubygems/pull/2335) by Samuel Giddins. -* Speed up globbing relative to given directories. Pull request [#2336](https://github.com/rubygems/rubygems/pull/2336) by + [#2335](https://github.com/ruby/rubygems/pull/2335) by Samuel Giddins. +* Speed up globbing relative to given directories. Pull request [#2336](https://github.com/ruby/rubygems/pull/2336) by Samuel Giddins. -* Remove semver gem build warning. Pull request [#2351](https://github.com/rubygems/rubygems/pull/2351) by David Rodríguez. -* Expand symlinks in gem path. Pull request [#2352](https://github.com/rubygems/rubygems/pull/2352) by Benoit Daloze. -* Normalize comment indentations. Pull request [#2353](https://github.com/rubygems/rubygems/pull/2353) by David Rodríguez. -* Add bindir flag to pristine. Pull request [#2361](https://github.com/rubygems/rubygems/pull/2361) by Luis Sagastume. -* Add --user-install behaviour to cleanup command. Pull request [#2362](https://github.com/rubygems/rubygems/pull/2362) by +* Remove semver gem build warning. Pull request [#2351](https://github.com/ruby/rubygems/pull/2351) by David Rodríguez. +* Expand symlinks in gem path. Pull request [#2352](https://github.com/ruby/rubygems/pull/2352) by Benoit Daloze. +* Normalize comment indentations. Pull request [#2353](https://github.com/ruby/rubygems/pull/2353) by David Rodríguez. +* Add bindir flag to pristine. Pull request [#2361](https://github.com/ruby/rubygems/pull/2361) by Luis Sagastume. +* Add --user-install behaviour to cleanup command. Pull request [#2362](https://github.com/ruby/rubygems/pull/2362) by Luis Sagastume. -* Allow build options to be passed to Rake. Pull request [#2382](https://github.com/rubygems/rubygems/pull/2382) by Alyssa +* Allow build options to be passed to Rake. Pull request [#2382](https://github.com/ruby/rubygems/pull/2382) by Alyssa Ross. -* Add --re-sign flag to cert command. Pull request [#2391](https://github.com/rubygems/rubygems/pull/2391) by Luis +* Add --re-sign flag to cert command. Pull request [#2391](https://github.com/ruby/rubygems/pull/2391) by Luis Sagastume. -* Fix "interpreted as grouped expression" warning. Pull request [#2399](https://github.com/rubygems/rubygems/pull/2399) by +* Fix "interpreted as grouped expression" warning. Pull request [#2399](https://github.com/ruby/rubygems/pull/2399) by Colby Swandale. * [Gem::Ext::Builder] Comments to aid future refactoring. Pull request - [#2405](https://github.com/rubygems/rubygems/pull/2405) by Ellen Marie Dash. + [#2405](https://github.com/ruby/rubygems/pull/2405) by Ellen Marie Dash. * Move CONTRIBUTING.rdoc and POLICIES.rdoc documents to markdown. Pull - request [#2412](https://github.com/rubygems/rubygems/pull/2412) by Colby Swandale. -* Improve certificate expiration defaults. Pull request [#2420](https://github.com/rubygems/rubygems/pull/2420) by Luis + request [#2412](https://github.com/ruby/rubygems/pull/2412) by Colby Swandale. +* Improve certificate expiration defaults. Pull request [#2420](https://github.com/ruby/rubygems/pull/2420) by Luis Sagastume. -* Freeze all possible constants. Pull request [#2422](https://github.com/rubygems/rubygems/pull/2422) by Colby Swandale. +* Freeze all possible constants. Pull request [#2422](https://github.com/ruby/rubygems/pull/2422) by Colby Swandale. * Fix bundler rubygems binstub not properly looking for bundler. Pull - request [#2426](https://github.com/rubygems/rubygems/pull/2426) by David Rodríguez. + request [#2426](https://github.com/ruby/rubygems/pull/2426) by David Rodríguez. * Make sure rubygems never leaks to another installation. Pull request - [#2427](https://github.com/rubygems/rubygems/pull/2427) by David Rodríguez. -* Update README.md. Pull request [#2428](https://github.com/rubygems/rubygems/pull/2428) by Marc-André Lafortune. -* Restrict special chars from prefixing new gem names. Pull request [#2432](https://github.com/rubygems/rubygems/pull/2432) + [#2427](https://github.com/ruby/rubygems/pull/2427) by David Rodríguez. +* Update README.md. Pull request [#2428](https://github.com/ruby/rubygems/pull/2428) by Marc-André Lafortune. +* Restrict special chars from prefixing new gem names. Pull request [#2432](https://github.com/ruby/rubygems/pull/2432) by Luis Sagastume. * This removes support for dynamic API backend lookup via DNS SRV records. - Pull request [#2433](https://github.com/rubygems/rubygems/pull/2433) by Arlandis Word. -* Fix link to CONTRIBUTING.md doc. Pull request [#2434](https://github.com/rubygems/rubygems/pull/2434) by Arlandis Word. -* Support Keyword args with Psych. Pull request [#2439](https://github.com/rubygems/rubygems/pull/2439) by SHIBATA Hiroshi. -* Bug/kernel#warn uplevel. Pull request [#2442](https://github.com/rubygems/rubygems/pull/2442) by Nobuyoshi Nakada. -* Improve certificate error message. Pull request [#2454](https://github.com/rubygems/rubygems/pull/2454) by Luis Sagastume. -* Update gem open command help text. Pull request [#2458](https://github.com/rubygems/rubygems/pull/2458) by Aditya Prakash. -* Uninstall with versions. Pull request [#2466](https://github.com/rubygems/rubygems/pull/2466) by David Rodríguez. -* Add output option to build command. Pull request [#2501](https://github.com/rubygems/rubygems/pull/2501) by Colby + Pull request [#2433](https://github.com/ruby/rubygems/pull/2433) by Arlandis Word. +* Fix link to CONTRIBUTING.md doc. Pull request [#2434](https://github.com/ruby/rubygems/pull/2434) by Arlandis Word. +* Support Keyword args with Psych. Pull request [#2439](https://github.com/ruby/rubygems/pull/2439) by SHIBATA Hiroshi. +* Bug/kernel#warn uplevel. Pull request [#2442](https://github.com/ruby/rubygems/pull/2442) by Nobuyoshi Nakada. +* Improve certificate error message. Pull request [#2454](https://github.com/ruby/rubygems/pull/2454) by Luis Sagastume. +* Update gem open command help text. Pull request [#2458](https://github.com/ruby/rubygems/pull/2458) by Aditya Prakash. +* Uninstall with versions. Pull request [#2466](https://github.com/ruby/rubygems/pull/2466) by David Rodríguez. +* Add output option to build command. Pull request [#2501](https://github.com/ruby/rubygems/pull/2501) by Colby Swandale. -* Move rubocop into a separate stage in travis ci. Pull request [#2510](https://github.com/rubygems/rubygems/pull/2510) by +* Move rubocop into a separate stage in travis ci. Pull request [#2510](https://github.com/ruby/rubygems/pull/2510) by Colby Swandale. -* Ignore warnings with test_gem_specification.rb. Pull request [#2523](https://github.com/rubygems/rubygems/pull/2523) by +* Ignore warnings with test_gem_specification.rb. Pull request [#2523](https://github.com/ruby/rubygems/pull/2523) by SHIBATA Hiroshi. -* Support the environment without OpenSSL. Pull request [#2528](https://github.com/rubygems/rubygems/pull/2528) by SHIBATA +* Support the environment without OpenSSL. Pull request [#2528](https://github.com/ruby/rubygems/pull/2528) by SHIBATA Hiroshi. ### Bug fixes: -* Fix undefined method error when printing alert. Pull request [#1884](https://github.com/rubygems/rubygems/pull/1884) by +* Fix undefined method error when printing alert. Pull request [#1884](https://github.com/ruby/rubygems/pull/1884) by Robert Ross. * Frozen string fix - lib/rubygems/bundler_version_finder.rb. Pull request - [#2115](https://github.com/rubygems/rubygems/pull/2115) by MSP-Greg. -* Fixed typos. Pull request [#2143](https://github.com/rubygems/rubygems/pull/2143) by SHIBATA Hiroshi. -* Fix regression of destdir on Windows platform. Pull request [#2178](https://github.com/rubygems/rubygems/pull/2178) by + [#2115](https://github.com/ruby/rubygems/pull/2115) by MSP-Greg. +* Fixed typos. Pull request [#2143](https://github.com/ruby/rubygems/pull/2143) by SHIBATA Hiroshi. +* Fix regression of destdir on Windows platform. Pull request [#2178](https://github.com/ruby/rubygems/pull/2178) by SHIBATA Hiroshi. * Fixed no assignment variables about default gems installation. Pull - request [#2181](https://github.com/rubygems/rubygems/pull/2181) by SHIBATA Hiroshi. -* Fix spelling errors in the README. Pull request [#2187](https://github.com/rubygems/rubygems/pull/2187) by Colby Swandale. -* Missing comma creates ambiguous meaning. Pull request [#2190](https://github.com/rubygems/rubygems/pull/2190) by Clifford + request [#2181](https://github.com/ruby/rubygems/pull/2181) by SHIBATA Hiroshi. +* Fix spelling errors in the README. Pull request [#2187](https://github.com/ruby/rubygems/pull/2187) by Colby Swandale. +* Missing comma creates ambiguous meaning. Pull request [#2190](https://github.com/ruby/rubygems/pull/2190) by Clifford Heath. -* Fix getting started instructions. Pull request [#2198](https://github.com/rubygems/rubygems/pull/2198) by Luis Sagastume. -* Fix rubygems dev env. Pull request [#2201](https://github.com/rubygems/rubygems/pull/2201) by Luis Sagastume. +* Fix getting started instructions. Pull request [#2198](https://github.com/ruby/rubygems/pull/2198) by Luis Sagastume. +* Fix rubygems dev env. Pull request [#2201](https://github.com/ruby/rubygems/pull/2201) by Luis Sagastume. * Fix #1470: generate documentation when --install-dir is present. Pull - request [#2229](https://github.com/rubygems/rubygems/pull/2229) by Elias Hernandis. -* Fix activation when multiple platforms installed. Pull request [#2339](https://github.com/rubygems/rubygems/pull/2339) by + request [#2229](https://github.com/ruby/rubygems/pull/2229) by Elias Hernandis. +* Fix activation when multiple platforms installed. Pull request [#2339](https://github.com/ruby/rubygems/pull/2339) by MSP-Greg. * Fix required_ruby_version with prereleases and improve error message. - Pull request [#2344](https://github.com/rubygems/rubygems/pull/2344) by David Rodríguez. -* Update tests for 'newer' Windows builds. Pull request [#2348](https://github.com/rubygems/rubygems/pull/2348) by MSP-Greg. -* Fix broken rubocop task by upgrading to 0.58.1. Pull request [#2356](https://github.com/rubygems/rubygems/pull/2356) by + Pull request [#2344](https://github.com/ruby/rubygems/pull/2344) by David Rodríguez. +* Update tests for 'newer' Windows builds. Pull request [#2348](https://github.com/ruby/rubygems/pull/2348) by MSP-Greg. +* Fix broken rubocop task by upgrading to 0.58.1. Pull request [#2356](https://github.com/ruby/rubygems/pull/2356) by David Rodríguez. * Gem::Version should handle nil like it used to before. Pull request - [#2363](https://github.com/rubygems/rubygems/pull/2363) by Luis Sagastume. -* Avoid need of C++ compiler to pass the test suite. Pull request [#2367](https://github.com/rubygems/rubygems/pull/2367) by + [#2363](https://github.com/ruby/rubygems/pull/2363) by Luis Sagastume. +* Avoid need of C++ compiler to pass the test suite. Pull request [#2367](https://github.com/ruby/rubygems/pull/2367) by Vít Ondruch. -* Fix auto resign expired certificate. Pull request [#2380](https://github.com/rubygems/rubygems/pull/2380) by Luis +* Fix auto resign expired certificate. Pull request [#2380](https://github.com/ruby/rubygems/pull/2380) by Luis Sagastume. -* Skip permissions-dependent test when root. Pull request [#2386](https://github.com/rubygems/rubygems/pull/2386) by Alyssa +* Skip permissions-dependent test when root. Pull request [#2386](https://github.com/ruby/rubygems/pull/2386) by Alyssa Ross. -* Fix test that depended on /usr/bin being in PATH. Pull request [#2387](https://github.com/rubygems/rubygems/pull/2387) by +* Fix test that depended on /usr/bin being in PATH. Pull request [#2387](https://github.com/ruby/rubygems/pull/2387) by Alyssa Ross. -* Fixed test fail with mswin environment. Pull request [#2390](https://github.com/rubygems/rubygems/pull/2390) by SHIBATA +* Fixed test fail with mswin environment. Pull request [#2390](https://github.com/ruby/rubygems/pull/2390) by SHIBATA Hiroshi. -* Fix broken builds using the correct rubocop version. Pull request [#2396](https://github.com/rubygems/rubygems/pull/2396) +* Fix broken builds using the correct rubocop version. Pull request [#2396](https://github.com/ruby/rubygems/pull/2396) by Luis Sagastume. -* Fix extension builder failure when verbose. Pull request [#2457](https://github.com/rubygems/rubygems/pull/2457) by Sorah +* Fix extension builder failure when verbose. Pull request [#2457](https://github.com/ruby/rubygems/pull/2457) by Sorah Fukumori. -* Fix test warnings. Pull request [#2472](https://github.com/rubygems/rubygems/pull/2472) by MSP-Greg. +* Fix test warnings. Pull request [#2472](https://github.com/ruby/rubygems/pull/2472) by MSP-Greg. * The test suite of bundler is not present ruby description. Pull request - [#2484](https://github.com/rubygems/rubygems/pull/2484) by SHIBATA Hiroshi. -* Fix crash on certain gemspecs. Pull request [#2506](https://github.com/rubygems/rubygems/pull/2506) by David Rodríguez. -* Fixed test fails with the newer version of OpenSSL. Pull request [#2507](https://github.com/rubygems/rubygems/pull/2507) + [#2484](https://github.com/ruby/rubygems/pull/2484) by SHIBATA Hiroshi. +* Fix crash on certain gemspecs. Pull request [#2506](https://github.com/ruby/rubygems/pull/2506) by David Rodríguez. +* Fixed test fails with the newer version of OpenSSL. Pull request [#2507](https://github.com/ruby/rubygems/pull/2507) by SHIBATA Hiroshi. -* Fix broken symlink that points to ../*. Pull request [#2516](https://github.com/rubygems/rubygems/pull/2516) by Akira +* Fix broken symlink that points to ../*. Pull request [#2516](https://github.com/ruby/rubygems/pull/2516) by Akira Matsuda. -* Fix remote fetcher tests. Pull request [#2520](https://github.com/rubygems/rubygems/pull/2520) by Luis Sagastume. +* Fix remote fetcher tests. Pull request [#2520](https://github.com/ruby/rubygems/pull/2520) by Luis Sagastume. * Fix tests when --program-suffix and similar ruby configure options are - used. Pull request [#2529](https://github.com/rubygems/rubygems/pull/2529) by Jeremy Evans. + used. Pull request [#2529](https://github.com/ruby/rubygems/pull/2529) by Jeremy Evans. ### Breaking changes: -* IO.binread is not provided at Ruby 1.8. Pull request [#2093](https://github.com/rubygems/rubygems/pull/2093) by SHIBATA +* IO.binread is not provided at Ruby 1.8. Pull request [#2093](https://github.com/ruby/rubygems/pull/2093) by SHIBATA Hiroshi. * Ignored to publish rdoc documentation of rubygems for - docs.seattlerb.org. Pull request [#2105](https://github.com/rubygems/rubygems/pull/2105) by SHIBATA Hiroshi. -* Support pre-release RubyGems. Pull request [#2128](https://github.com/rubygems/rubygems/pull/2128) by SHIBATA Hiroshi. -* Relax minitest version for 5. Pull request [#2131](https://github.com/rubygems/rubygems/pull/2131) by SHIBATA Hiroshi. -* Remove zentest from dev dependency. Pull request [#2132](https://github.com/rubygems/rubygems/pull/2132) by SHIBATA + docs.seattlerb.org. Pull request [#2105](https://github.com/ruby/rubygems/pull/2105) by SHIBATA Hiroshi. +* Support pre-release RubyGems. Pull request [#2128](https://github.com/ruby/rubygems/pull/2128) by SHIBATA Hiroshi. +* Relax minitest version for 5. Pull request [#2131](https://github.com/ruby/rubygems/pull/2131) by SHIBATA Hiroshi. +* Remove zentest from dev dependency. Pull request [#2132](https://github.com/ruby/rubygems/pull/2132) by SHIBATA Hiroshi. -* Remove hoe for test suite. Pull request [#2160](https://github.com/rubygems/rubygems/pull/2160) by SHIBATA Hiroshi. -* Cleanup deprecated tasks. Pull request [#2162](https://github.com/rubygems/rubygems/pull/2162) by SHIBATA Hiroshi. -* Drop to support Ruby < 2.2. Pull request [#2182](https://github.com/rubygems/rubygems/pull/2182) by SHIBATA Hiroshi. -* Cleanup deprecated style. Pull request [#2193](https://github.com/rubygems/rubygems/pull/2193) by SHIBATA Hiroshi. -* Remove CVEs from the rubygems repo. Pull request [#2195](https://github.com/rubygems/rubygems/pull/2195) by Colby +* Remove hoe for test suite. Pull request [#2160](https://github.com/ruby/rubygems/pull/2160) by SHIBATA Hiroshi. +* Cleanup deprecated tasks. Pull request [#2162](https://github.com/ruby/rubygems/pull/2162) by SHIBATA Hiroshi. +* Drop to support Ruby < 2.2. Pull request [#2182](https://github.com/ruby/rubygems/pull/2182) by SHIBATA Hiroshi. +* Cleanup deprecated style. Pull request [#2193](https://github.com/ruby/rubygems/pull/2193) by SHIBATA Hiroshi. +* Remove CVEs from the rubygems repo. Pull request [#2195](https://github.com/ruby/rubygems/pull/2195) by Colby Swandale. -* Removed needless condition for old version of ruby. Pull request [#2206](https://github.com/rubygems/rubygems/pull/2206) +* Removed needless condition for old version of ruby. Pull request [#2206](https://github.com/ruby/rubygems/pull/2206) by SHIBATA Hiroshi. -* Removed deprecated methods over the limit day. Pull request [#2216](https://github.com/rubygems/rubygems/pull/2216) by +* Removed deprecated methods over the limit day. Pull request [#2216](https://github.com/ruby/rubygems/pull/2216) by SHIBATA Hiroshi. -* Remove syck support. Pull request [#2222](https://github.com/rubygems/rubygems/pull/2222) by SHIBATA Hiroshi. -* Removed needless condition for Encoding. Pull request [#2223](https://github.com/rubygems/rubygems/pull/2223) by SHIBATA +* Remove syck support. Pull request [#2222](https://github.com/ruby/rubygems/pull/2222) by SHIBATA Hiroshi. +* Removed needless condition for Encoding. Pull request [#2223](https://github.com/ruby/rubygems/pull/2223) by SHIBATA Hiroshi. -* Removed needless condition for String#force_encoding. Pull request [#2225](https://github.com/rubygems/rubygems/pull/2225) +* Removed needless condition for String#force_encoding. Pull request [#2225](https://github.com/ruby/rubygems/pull/2225) by SHIBATA Hiroshi. -* Removed needless OpenSSL patch for Ruby 1.8. Pull request [#2243](https://github.com/rubygems/rubygems/pull/2243) by +* Removed needless OpenSSL patch for Ruby 1.8. Pull request [#2243](https://github.com/ruby/rubygems/pull/2243) by SHIBATA Hiroshi. -* Removed compatibility code for Ruby 1.9.2. Pull request [#2244](https://github.com/rubygems/rubygems/pull/2244) by SHIBATA +* Removed compatibility code for Ruby 1.9.2. Pull request [#2244](https://github.com/ruby/rubygems/pull/2244) by SHIBATA Hiroshi. -* Removed needless version condition for the old ruby. Pull request [#2252](https://github.com/rubygems/rubygems/pull/2252) +* Removed needless version condition for the old ruby. Pull request [#2252](https://github.com/ruby/rubygems/pull/2252) by SHIBATA Hiroshi. -* Remove needless define/respond_to condition. Pull request [#2255](https://github.com/rubygems/rubygems/pull/2255) by +* Remove needless define/respond_to condition. Pull request [#2255](https://github.com/ruby/rubygems/pull/2255) by SHIBATA Hiroshi. -* Use File.realpath directly in Gem::Package. Pull request [#2284](https://github.com/rubygems/rubygems/pull/2284) by +* Use File.realpath directly in Gem::Package. Pull request [#2284](https://github.com/ruby/rubygems/pull/2284) by SHIBATA Hiroshi. -* Removed needless condition for old versions of Ruby. Pull request [#2286](https://github.com/rubygems/rubygems/pull/2286) +* Removed needless condition for old versions of Ruby. Pull request [#2286](https://github.com/ruby/rubygems/pull/2286) by SHIBATA Hiroshi. * Remove the --rdoc and --ri options from install/update. Pull request - [#2354](https://github.com/rubygems/rubygems/pull/2354) by Colby Swandale. + [#2354](https://github.com/ruby/rubygems/pull/2354) by Colby Swandale. * Move authors assigner to required attributes section of - Gem::Specification. Pull request [#2406](https://github.com/rubygems/rubygems/pull/2406) by Grey Baker. -* Remove rubyforge_page functionality. Pull request [#2436](https://github.com/rubygems/rubygems/pull/2436) by Nick + Gem::Specification. Pull request [#2406](https://github.com/ruby/rubygems/pull/2406) by Grey Baker. +* Remove rubyforge_page functionality. Pull request [#2436](https://github.com/ruby/rubygems/pull/2436) by Nick Schwaderer. -* Drop ruby 1.8 support and use IO.popen. Pull request [#2441](https://github.com/rubygems/rubygems/pull/2441) by Nobuyoshi +* Drop ruby 1.8 support and use IO.popen. Pull request [#2441](https://github.com/ruby/rubygems/pull/2441) by Nobuyoshi Nakada. -* Drop ruby 2.2 support. Pull request [#2487](https://github.com/rubygems/rubygems/pull/2487) by David Rodríguez. -* Remove some old compatibility code. Pull request [#2488](https://github.com/rubygems/rubygems/pull/2488) by David +* Drop ruby 2.2 support. Pull request [#2487](https://github.com/ruby/rubygems/pull/2487) by David Rodríguez. +* Remove some old compatibility code. Pull request [#2488](https://github.com/ruby/rubygems/pull/2488) by David Rodríguez. -* Remove .document from src. Pull request [#2489](https://github.com/rubygems/rubygems/pull/2489) by Colby Swandale. -* Remove old version support. Pull request [#2493](https://github.com/rubygems/rubygems/pull/2493) by Nobuyoshi Nakada. +* Remove .document from src. Pull request [#2489](https://github.com/ruby/rubygems/pull/2489) by Colby Swandale. +* Remove old version support. Pull request [#2493](https://github.com/ruby/rubygems/pull/2493) by Nobuyoshi Nakada. * [BudlerVersionFinder] set .filter! and .compatible? to match only on - major versions. Pull request [#2515](https://github.com/rubygems/rubygems/pull/2515) by Colby Swandale. + major versions. Pull request [#2515](https://github.com/ruby/rubygems/pull/2515) by Colby Swandale. ## 2.7.10 / 2019-06-14 ### Enhancements: -* Fix bundler rubygems binstub not properly looking for bundler. Pull request [#2426](https://github.com/rubygems/rubygems/pull/2426) +* Fix bundler rubygems binstub not properly looking for bundler. Pull request [#2426](https://github.com/ruby/rubygems/pull/2426) by David Rodríguez. * [BudlerVersionFinder] set .filter! and .compatible? to match only on major versions. - Pull request [#2515](https://github.com/rubygems/rubygems/pull/2515) by Colby Swandale. -+ Update for compatibility with new minitest. Pull request [#2118](https://github.com/rubygems/rubygems/pull/2118) by MSP-Greg. + Pull request [#2515](https://github.com/ruby/rubygems/pull/2515) by Colby Swandale. ++ Update for compatibility with new minitest. Pull request [#2118](https://github.com/ruby/rubygems/pull/2118) by MSP-Greg. ## 2.7.9 / 2019-03-05 @@ -3066,76 +3066,76 @@ Security fixes: ### Enhancements: * [Requirement] Treat requirements with == versions as equal. Pull - request [#2230](https://github.com/rubygems/rubygems/pull/2230) by Samuel Giddins. -* Fix exec_name documentation. Pull request [#2239](https://github.com/rubygems/rubygems/pull/2239) by Luis Sagastume. -* [TarHeader] Extract the empty header into a constant. Pull request [#2247](https://github.com/rubygems/rubygems/pull/2247) + request [#2230](https://github.com/ruby/rubygems/pull/2230) by Samuel Giddins. +* Fix exec_name documentation. Pull request [#2239](https://github.com/ruby/rubygems/pull/2239) by Luis Sagastume. +* [TarHeader] Extract the empty header into a constant. Pull request [#2247](https://github.com/ruby/rubygems/pull/2247) by Samuel Giddins. * Simplify the code that lets us call the original, non-monkeypatched - Kernel#require. Pull request [#2267](https://github.com/rubygems/rubygems/pull/2267) by Leon Miller-Out. -* Add install alias documentation. Pull request [#2320](https://github.com/rubygems/rubygems/pull/2320) by ota42y. + Kernel#require. Pull request [#2267](https://github.com/ruby/rubygems/pull/2267) by Leon Miller-Out. +* Add install alias documentation. Pull request [#2320](https://github.com/ruby/rubygems/pull/2320) by ota42y. * [Rakefile] Set bundler build metadata when doing a release. Pull request - [#2335](https://github.com/rubygems/rubygems/pull/2335) by Samuel Giddins. -* Backport commits from ruby core . Pull request [#2347](https://github.com/rubygems/rubygems/pull/2347) by SHIBATA Hiroshi. -* Sign in to the correct host before push. Pull request [#2366](https://github.com/rubygems/rubygems/pull/2366) by Luis + [#2335](https://github.com/ruby/rubygems/pull/2335) by Samuel Giddins. +* Backport commits from ruby core . Pull request [#2347](https://github.com/ruby/rubygems/pull/2347) by SHIBATA Hiroshi. +* Sign in to the correct host before push. Pull request [#2366](https://github.com/ruby/rubygems/pull/2366) by Luis Sagastume. -* Bump bundler-1.16.4. Pull request [#2381](https://github.com/rubygems/rubygems/pull/2381) by SHIBATA Hiroshi. -* Improve bindir flag description. Pull request [#2383](https://github.com/rubygems/rubygems/pull/2383) by Luis Sagastume. -* Update bundler-1.16.6. Pull request [#2423](https://github.com/rubygems/rubygems/pull/2423) by SHIBATA Hiroshi. +* Bump bundler-1.16.4. Pull request [#2381](https://github.com/ruby/rubygems/pull/2381) by SHIBATA Hiroshi. +* Improve bindir flag description. Pull request [#2383](https://github.com/ruby/rubygems/pull/2383) by Luis Sagastume. +* Update bundler-1.16.6. Pull request [#2423](https://github.com/ruby/rubygems/pull/2423) by SHIBATA Hiroshi. ### Bug fixes: * Fix #1470: generate documentation when --install-dir is present. Pull - request [#2229](https://github.com/rubygems/rubygems/pull/2229) by Elias Hernandis. -* Fix no proxy checking. Pull request [#2249](https://github.com/rubygems/rubygems/pull/2249) by Luis Sagastume. -* Validate SPDX license exceptions. Pull request [#2257](https://github.com/rubygems/rubygems/pull/2257) by Mikit. -* Retry api specification spec with original platform. Pull request [#2275](https://github.com/rubygems/rubygems/pull/2275) + request [#2229](https://github.com/ruby/rubygems/pull/2229) by Elias Hernandis. +* Fix no proxy checking. Pull request [#2249](https://github.com/ruby/rubygems/pull/2249) by Luis Sagastume. +* Validate SPDX license exceptions. Pull request [#2257](https://github.com/ruby/rubygems/pull/2257) by Mikit. +* Retry api specification spec with original platform. Pull request [#2275](https://github.com/ruby/rubygems/pull/2275) by Luis Sagastume. -* Fix approximate recommendation with prereleases. Pull request [#2345](https://github.com/rubygems/rubygems/pull/2345) by +* Fix approximate recommendation with prereleases. Pull request [#2345](https://github.com/ruby/rubygems/pull/2345) by David Rodríguez. * Gem::Version should handle nil like it used to before. Pull request - [#2363](https://github.com/rubygems/rubygems/pull/2363) by Luis Sagastume. + [#2363](https://github.com/ruby/rubygems/pull/2363) by Luis Sagastume. ## 2.7.7 / 2018-05-08 ### Enhancements: * [RequestSet] Only suggest a gem version with an installable platform. - Pull request [#2175](https://github.com/rubygems/rubygems/pull/2175) by Samuel Giddins. + Pull request [#2175](https://github.com/ruby/rubygems/pull/2175) by Samuel Giddins. * Fixed no assignment variables about default gems installation. Pull - request [#2181](https://github.com/rubygems/rubygems/pull/2181) by SHIBATA Hiroshi. -* Backport improvements for test-case from Ruby core. Pull request [#2189](https://github.com/rubygems/rubygems/pull/2189) + request [#2181](https://github.com/ruby/rubygems/pull/2181) by SHIBATA Hiroshi. +* Backport improvements for test-case from Ruby core. Pull request [#2189](https://github.com/ruby/rubygems/pull/2189) by SHIBATA Hiroshi. -* Fix ruby warnings in test suite. Pull request [#2205](https://github.com/rubygems/rubygems/pull/2205) by Colby Swandale. +* Fix ruby warnings in test suite. Pull request [#2205](https://github.com/ruby/rubygems/pull/2205) by Colby Swandale. * To use Gem::Specification#bindir of bundler instead of hard coded path. - Pull request [#2208](https://github.com/rubygems/rubygems/pull/2208) by SHIBATA Hiroshi. -* Update gem push --help description. Pull request [#2215](https://github.com/rubygems/rubygems/pull/2215) by Luis + Pull request [#2208](https://github.com/ruby/rubygems/pull/2208) by SHIBATA Hiroshi. +* Update gem push --help description. Pull request [#2215](https://github.com/ruby/rubygems/pull/2215) by Luis Sagastume. -* Backport ruby core commits. Pull request [#2264](https://github.com/rubygems/rubygems/pull/2264) by SHIBATA Hiroshi. +* Backport ruby core commits. Pull request [#2264](https://github.com/ruby/rubygems/pull/2264) by SHIBATA Hiroshi. ### Bug fixes: * Frozen string fix - lib/rubygems/bundler_version_finder.rb. Pull request - [#2115](https://github.com/rubygems/rubygems/pull/2115) by MSP-Greg. -* Fixed tempfile leak for RubyGems 2.7.6. Pull request [#2194](https://github.com/rubygems/rubygems/pull/2194) by SHIBATA + [#2115](https://github.com/ruby/rubygems/pull/2115) by MSP-Greg. +* Fixed tempfile leak for RubyGems 2.7.6. Pull request [#2194](https://github.com/ruby/rubygems/pull/2194) by SHIBATA Hiroshi. -* Add missing requires. Pull request [#2196](https://github.com/rubygems/rubygems/pull/2196) by David Rodríguez. -* Fix Gem::Version.correct?. Pull request [#2203](https://github.com/rubygems/rubygems/pull/2203) by Masato Nakamura. -* Fix verify_entry regex for metadata. Pull request [#2212](https://github.com/rubygems/rubygems/pull/2212) by Luis +* Add missing requires. Pull request [#2196](https://github.com/ruby/rubygems/pull/2196) by David Rodríguez. +* Fix Gem::Version.correct?. Pull request [#2203](https://github.com/ruby/rubygems/pull/2203) by Masato Nakamura. +* Fix verify_entry regex for metadata. Pull request [#2212](https://github.com/ruby/rubygems/pull/2212) by Luis Sagastume. -* Fix path checks for case insensitive filesystem. Pull request [#2211](https://github.com/rubygems/rubygems/pull/2211) by +* Fix path checks for case insensitive filesystem. Pull request [#2211](https://github.com/ruby/rubygems/pull/2211) by Lars Kanis. ### Deprecations: -* Deprecate unused code before removing them at #1524. Pull request [#2197](https://github.com/rubygems/rubygems/pull/2197) +* Deprecate unused code before removing them at #1524. Pull request [#2197](https://github.com/ruby/rubygems/pull/2197) by SHIBATA Hiroshi. -* Deprecate for rubygems 3. Pull request [#2214](https://github.com/rubygems/rubygems/pull/2214) by SHIBATA Hiroshi. -* Mark deprecation to `ubygems.rb` for RubyGems 4. Pull request [#2269](https://github.com/rubygems/rubygems/pull/2269) by +* Deprecate for rubygems 3. Pull request [#2214](https://github.com/ruby/rubygems/pull/2214) by SHIBATA Hiroshi. +* Mark deprecation to `ubygems.rb` for RubyGems 4. Pull request [#2269](https://github.com/ruby/rubygems/pull/2269) by SHIBATA Hiroshi. ### Breaking changes: -* Update bundler-1.16.2. Pull request [#2291](https://github.com/rubygems/rubygems/pull/2291) by SHIBATA Hiroshi. +* Update bundler-1.16.2. Pull request [#2291](https://github.com/ruby/rubygems/pull/2291) by SHIBATA Hiroshi. ## 2.7.6 / 2018-02-16 @@ -3161,7 +3161,7 @@ Security fixes: ### Bug fixes: * To use bundler-1.16.1 #2121 by SHIBATA Hiroshi. -* Fixed leaked FDs. Pull request [#2127](https://github.com/rubygems/rubygems/pull/2127) by Nobuyoshi Nakada. +* Fixed leaked FDs. Pull request [#2127](https://github.com/ruby/rubygems/pull/2127) by Nobuyoshi Nakada. * Support option for `--destdir` with upgrade installer. #2169 by Thibault Jouan. * Remove PID from gem index directory. #2155 by SHIBATA Hiroshi. * Avoid a #mkdir race condition #2148 by Samuel Giddins. @@ -3174,226 +3174,226 @@ Security fixes: ### Bug fixes: -* Fixed leaked FDs. Pull request [#2127](https://github.com/rubygems/rubygems/pull/2127) by Nobuyoshi Nakada. +* Fixed leaked FDs. Pull request [#2127](https://github.com/ruby/rubygems/pull/2127) by Nobuyoshi Nakada. * Avoid to warnings about gemspec loadings in rubygems tests. Pull request - [#2125](https://github.com/rubygems/rubygems/pull/2125) by SHIBATA Hiroshi. -* Fix updater with rubygems-2.7.3 Pull request [#2124](https://github.com/rubygems/rubygems/pull/2124) by SHIBATA Hiroshi. + [#2125](https://github.com/ruby/rubygems/pull/2125) by SHIBATA Hiroshi. +* Fix updater with rubygems-2.7.3 Pull request [#2124](https://github.com/ruby/rubygems/pull/2124) by SHIBATA Hiroshi. * Handle environment that does not have `flock` system call. Pull request - [#2107](https://github.com/rubygems/rubygems/pull/2107) by SHIBATA Hiroshi. + [#2107](https://github.com/ruby/rubygems/pull/2107) by SHIBATA Hiroshi. ## 2.7.3 ### Enhancements: -* Removed needless version lock. Pull request [#2074](https://github.com/rubygems/rubygems/pull/2074) by SHIBATA Hiroshi. +* Removed needless version lock. Pull request [#2074](https://github.com/ruby/rubygems/pull/2074) by SHIBATA Hiroshi. * Add --[no-]check-development option to cleanup command. Pull request - [#2061](https://github.com/rubygems/rubygems/pull/2061) by Lin Jen-Shin (godfat). -* Merge glob pattern using braces. Pull request [#2072](https://github.com/rubygems/rubygems/pull/2072) by Kazuhiro + [#2061](https://github.com/ruby/rubygems/pull/2061) by Lin Jen-Shin (godfat). +* Merge glob pattern using braces. Pull request [#2072](https://github.com/ruby/rubygems/pull/2072) by Kazuhiro NISHIYAMA. -* Removed warnings of unused variables. Pull request [#2084](https://github.com/rubygems/rubygems/pull/2084) by SHIBATA +* Removed warnings of unused variables. Pull request [#2084](https://github.com/ruby/rubygems/pull/2084) by SHIBATA Hiroshi. -* Call SPDX.org using HTTPS. Pull request [#2102](https://github.com/rubygems/rubygems/pull/2102) by Olle Jonsson. -* Remove multi load warning from plugins documentation. Pull request [#2103](https://github.com/rubygems/rubygems/pull/2103) +* Call SPDX.org using HTTPS. Pull request [#2102](https://github.com/ruby/rubygems/pull/2102) by Olle Jonsson. +* Remove multi load warning from plugins documentation. Pull request [#2103](https://github.com/ruby/rubygems/pull/2103) by Thibault Jouan. ### Bug fixes: -* Fix test failure on Alpine Linux. Pull request [#2079](https://github.com/rubygems/rubygems/pull/2079) by Ellen Marie +* Fix test failure on Alpine Linux. Pull request [#2079](https://github.com/ruby/rubygems/pull/2079) by Ellen Marie Dash. -* Avoid encoding issues by using binread in setup. Pull request [#2089](https://github.com/rubygems/rubygems/pull/2089) by +* Avoid encoding issues by using binread in setup. Pull request [#2089](https://github.com/ruby/rubygems/pull/2089) by Mauro Morales. * Fix rake install_test_deps once the rake clean_env does not exist. Pull - request [#2090](https://github.com/rubygems/rubygems/pull/2090) by Lucas Oliveira. + request [#2090](https://github.com/ruby/rubygems/pull/2090) by Lucas Oliveira. * Prevent to delete to "bundler-" prefix gem like bundler-audit. Pull - request [#2086](https://github.com/rubygems/rubygems/pull/2086) by SHIBATA Hiroshi. -* Generate .bat files on Windows platform. Pull request [#2094](https://github.com/rubygems/rubygems/pull/2094) by SHIBATA + request [#2086](https://github.com/ruby/rubygems/pull/2086) by SHIBATA Hiroshi. +* Generate .bat files on Windows platform. Pull request [#2094](https://github.com/ruby/rubygems/pull/2094) by SHIBATA Hiroshi. * Workaround common options mutation in Gem::Command test. Pull request - [#2098](https://github.com/rubygems/rubygems/pull/2098) by Thibault Jouan. -* Check gems dir existence before removing bundler. Pull request [#2104](https://github.com/rubygems/rubygems/pull/2104) by + [#2098](https://github.com/ruby/rubygems/pull/2098) by Thibault Jouan. +* Check gems dir existence before removing bundler. Pull request [#2104](https://github.com/ruby/rubygems/pull/2104) by Thibault Jouan. -* Use setup command --regenerate-binstubs option flag. Pull request [#2099](https://github.com/rubygems/rubygems/pull/2099) +* Use setup command --regenerate-binstubs option flag. Pull request [#2099](https://github.com/ruby/rubygems/pull/2099) by Thibault Jouan. ## 2.7.2 ### Bug fixes: -* Added template files to vendoerd bundler. Pull request [#2065](https://github.com/rubygems/rubygems/pull/2065) by SHIBATA +* Added template files to vendoerd bundler. Pull request [#2065](https://github.com/ruby/rubygems/pull/2065) by SHIBATA Hiroshi. -* Added workaround for non-git environment. Pull request [#2066](https://github.com/rubygems/rubygems/pull/2066) by SHIBATA +* Added workaround for non-git environment. Pull request [#2066](https://github.com/ruby/rubygems/pull/2066) by SHIBATA Hiroshi. ## 2.7.1 (2017-11-03) ### Bug fixes: -* Fix `gem update --system` with RubyGems 2.7+. Pull request [#2054](https://github.com/rubygems/rubygems/pull/2054) by +* Fix `gem update --system` with RubyGems 2.7+. Pull request [#2054](https://github.com/ruby/rubygems/pull/2054) by Samuel Giddins. ## 2.7.0 (2017-11-02) ### Enhancements: -* Update vendored bundler-1.16.0. Pull request [#2051](https://github.com/rubygems/rubygems/pull/2051) by Samuel Giddins. -* Use Bundler for Gem.use_gemdeps. Pull request [#1674](https://github.com/rubygems/rubygems/pull/1674) by Samuel Giddins. -* Add command `signin` to `gem` CLI. Pull request [#1944](https://github.com/rubygems/rubygems/pull/1944) by Shiva Bhusal. -* Add Logout feature to CLI. Pull request [#1938](https://github.com/rubygems/rubygems/pull/1938) by Shiva Bhusal. +* Update vendored bundler-1.16.0. Pull request [#2051](https://github.com/ruby/rubygems/pull/2051) by Samuel Giddins. +* Use Bundler for Gem.use_gemdeps. Pull request [#1674](https://github.com/ruby/rubygems/pull/1674) by Samuel Giddins. +* Add command `signin` to `gem` CLI. Pull request [#1944](https://github.com/ruby/rubygems/pull/1944) by Shiva Bhusal. +* Add Logout feature to CLI. Pull request [#1938](https://github.com/ruby/rubygems/pull/1938) by Shiva Bhusal. * Added message to uninstall command for gem that is not installed. Pull - request [#1979](https://github.com/rubygems/rubygems/pull/1979) by anant anil kolvankar. -* Add --trust-policy option to unpack command. Pull request [#1718](https://github.com/rubygems/rubygems/pull/1718) by + request [#1979](https://github.com/ruby/rubygems/pull/1979) by anant anil kolvankar. +* Add --trust-policy option to unpack command. Pull request [#1718](https://github.com/ruby/rubygems/pull/1718) by Nobuyoshi Nakada. -* Show default gems for all platforms. Pull request [#1685](https://github.com/rubygems/rubygems/pull/1685) by Konstantin +* Show default gems for all platforms. Pull request [#1685](https://github.com/ruby/rubygems/pull/1685) by Konstantin Shabanov. -* Add Travis and Appveyor build status to README. Pull request [#1918](https://github.com/rubygems/rubygems/pull/1918) by +* Add Travis and Appveyor build status to README. Pull request [#1918](https://github.com/ruby/rubygems/pull/1918) by Jun Aruga. -* Remove warning `no email specified` when no email. Pull request [#1675](https://github.com/rubygems/rubygems/pull/1675) by +* Remove warning `no email specified` when no email. Pull request [#1675](https://github.com/ruby/rubygems/pull/1675) by Leigh McCulloch. -* Improve -rubygems performance. Pull request [#1801](https://github.com/rubygems/rubygems/pull/1801) by Samuel Giddins. -* Improve the performance of Kernel#require. Pull request [#1678](https://github.com/rubygems/rubygems/pull/1678) by Samuel +* Improve -rubygems performance. Pull request [#1801](https://github.com/ruby/rubygems/pull/1801) by Samuel Giddins. +* Improve the performance of Kernel#require. Pull request [#1678](https://github.com/ruby/rubygems/pull/1678) by Samuel Giddins. * Improve user-facing messages by consistent casing of Ruby/RubyGems. Pull - request [#1771](https://github.com/rubygems/rubygems/pull/1771) by John Labovitz. + request [#1771](https://github.com/ruby/rubygems/pull/1771) by John Labovitz. * Improve error message when Gem::RuntimeRequirementNotMetError is raised. - Pull request [#1789](https://github.com/rubygems/rubygems/pull/1789) by Luis Sagastume. -* Code Improvement: Inheritance corrected. Pull request [#1942](https://github.com/rubygems/rubygems/pull/1942) by Shiva + Pull request [#1789](https://github.com/ruby/rubygems/pull/1789) by Luis Sagastume. +* Code Improvement: Inheritance corrected. Pull request [#1942](https://github.com/ruby/rubygems/pull/1942) by Shiva Bhusal. -* [Source] Autoload fileutils. Pull request [#1906](https://github.com/rubygems/rubygems/pull/1906) by Samuel Giddins. -* Use Hash#fetch instead of if/else in Gem::ConfigFile. Pull request [#1824](https://github.com/rubygems/rubygems/pull/1824) +* [Source] Autoload fileutils. Pull request [#1906](https://github.com/ruby/rubygems/pull/1906) by Samuel Giddins. +* Use Hash#fetch instead of if/else in Gem::ConfigFile. Pull request [#1824](https://github.com/ruby/rubygems/pull/1824) by Daniel Berger. -* Require digest when it is used. Pull request [#2006](https://github.com/rubygems/rubygems/pull/2006) by Samuel Giddins. +* Require digest when it is used. Pull request [#2006](https://github.com/ruby/rubygems/pull/2006) by Samuel Giddins. * Do not index the doc folder in the `update_manifest` task. Pull request - [#2031](https://github.com/rubygems/rubygems/pull/2031) by Colby Swandale. -* Don't use two postfix conditionals on one line. Pull request [#2038](https://github.com/rubygems/rubygems/pull/2038) by + [#2031](https://github.com/ruby/rubygems/pull/2031) by Colby Swandale. +* Don't use two postfix conditionals on one line. Pull request [#2038](https://github.com/ruby/rubygems/pull/2038) by Ellen Marie Dash. * [SafeYAML] Avoid warning when Gem::Deprecate.skip is set. Pull request - [#2034](https://github.com/rubygems/rubygems/pull/2034) by Samuel Giddins. -* Update gem yank description. Pull request [#2009](https://github.com/rubygems/rubygems/pull/2009) by David Radcliffe. + [#2034](https://github.com/ruby/rubygems/pull/2034) by Samuel Giddins. +* Update gem yank description. Pull request [#2009](https://github.com/ruby/rubygems/pull/2009) by David Radcliffe. * Fix formatting of installation instructions in README. Pull request - [#2018](https://github.com/rubygems/rubygems/pull/2018) by Jordan Danford. -* Do not use #quick_spec internally. Pull request [#1733](https://github.com/rubygems/rubygems/pull/1733) by Jon Moss. -* Switch from docs to guides reference. Pull request [#1886](https://github.com/rubygems/rubygems/pull/1886) by Jonathan + [#2018](https://github.com/ruby/rubygems/pull/2018) by Jordan Danford. +* Do not use #quick_spec internally. Pull request [#1733](https://github.com/ruby/rubygems/pull/1733) by Jon Moss. +* Switch from docs to guides reference. Pull request [#1886](https://github.com/ruby/rubygems/pull/1886) by Jonathan Claudius. * Happier message when latest version is already installed. Pull request - [#1956](https://github.com/rubygems/rubygems/pull/1956) by Jared Beck. -* Update specification reference docs. Pull request [#1960](https://github.com/rubygems/rubygems/pull/1960) by Grey Baker. + [#1956](https://github.com/ruby/rubygems/pull/1956) by Jared Beck. +* Update specification reference docs. Pull request [#1960](https://github.com/ruby/rubygems/pull/1960) by Grey Baker. * Allow Gem.finish_resolve to respect already-activated specs. Pull - request [#1910](https://github.com/rubygems/rubygems/pull/1910) by Samuel Giddins. -* Update cryptography for Gem::Security. Pull request [#1691](https://github.com/rubygems/rubygems/pull/1691) by Sylvain + request [#1910](https://github.com/ruby/rubygems/pull/1910) by Samuel Giddins. +* Update cryptography for Gem::Security. Pull request [#1691](https://github.com/ruby/rubygems/pull/1691) by Sylvain Daubert. * Don't output mkmf.log message if compilation didn't fail. Pull request - [#1808](https://github.com/rubygems/rubygems/pull/1808) by Jeremy Evans. -* Matches_for_glob - remove root path. Pull request [#2010](https://github.com/rubygems/rubygems/pull/2010) by ahorek. + [#1808](https://github.com/ruby/rubygems/pull/1808) by Jeremy Evans. +* Matches_for_glob - remove root path. Pull request [#2010](https://github.com/ruby/rubygems/pull/2010) by ahorek. * Gem::Resolver#search_for update for reliable searching/sorting. Pull - request [#1993](https://github.com/rubygems/rubygems/pull/1993) by MSP-Greg. + request [#1993](https://github.com/ruby/rubygems/pull/1993) by MSP-Greg. * Allow local installs with transitive prerelease requirements. Pull - request [#1990](https://github.com/rubygems/rubygems/pull/1990) by Samuel Giddins. -* Small style fixes to Installer Set. Pull request [#1985](https://github.com/rubygems/rubygems/pull/1985) by Arthur + request [#1990](https://github.com/ruby/rubygems/pull/1990) by Samuel Giddins. +* Small style fixes to Installer Set. Pull request [#1985](https://github.com/ruby/rubygems/pull/1985) by Arthur Marzinkovskiy. -* Setup cmd: Avoid terminating option string w/ dot. Pull request [#1825](https://github.com/rubygems/rubygems/pull/1825) by +* Setup cmd: Avoid terminating option string w/ dot. Pull request [#1825](https://github.com/ruby/rubygems/pull/1825) by Olle Jonsson. -* Warn when no files are set. Pull request [#1773](https://github.com/rubygems/rubygems/pull/1773) by Aidan Coyle. -* Ensure `to_spec` falls back on prerelease specs. Pull request [#1755](https://github.com/rubygems/rubygems/pull/1755) by +* Warn when no files are set. Pull request [#1773](https://github.com/ruby/rubygems/pull/1773) by Aidan Coyle. +* Ensure `to_spec` falls back on prerelease specs. Pull request [#1755](https://github.com/ruby/rubygems/pull/1755) by André Arko. * [Specification] Eval setting default attributes in #initialize. Pull - request [#1739](https://github.com/rubygems/rubygems/pull/1739) by Samuel Giddins. -* Sort ordering of sources is preserved. Pull request [#1633](https://github.com/rubygems/rubygems/pull/1633) by Nathan + request [#1739](https://github.com/ruby/rubygems/pull/1739) by Samuel Giddins. +* Sort ordering of sources is preserved. Pull request [#1633](https://github.com/ruby/rubygems/pull/1633) by Nathan Ladd. -* Retry with :prerelease when no suggestions are found. Pull request [#1696](https://github.com/rubygems/rubygems/pull/1696) +* Retry with :prerelease when no suggestions are found. Pull request [#1696](https://github.com/ruby/rubygems/pull/1696) by Aditya Prakash. * [Rakefile] Run `git submodule update --init` in `rake newb`. Pull - request [#1694](https://github.com/rubygems/rubygems/pull/1694) by Samuel Giddins. -* [TestCase] Address comments around ui changes. Pull request [#1677](https://github.com/rubygems/rubygems/pull/1677) by + request [#1694](https://github.com/ruby/rubygems/pull/1694) by Samuel Giddins. +* [TestCase] Address comments around ui changes. Pull request [#1677](https://github.com/ruby/rubygems/pull/1677) by Samuel Giddins. -* Eagerly resolve in activate_bin_path. Pull request [#1666](https://github.com/rubygems/rubygems/pull/1666) by Samuel +* Eagerly resolve in activate_bin_path. Pull request [#1666](https://github.com/ruby/rubygems/pull/1666) by Samuel Giddins. -* [Version] Make hash based upon canonical segments. Pull request [#1659](https://github.com/rubygems/rubygems/pull/1659) by +* [Version] Make hash based upon canonical segments. Pull request [#1659](https://github.com/ruby/rubygems/pull/1659) by Samuel Giddins. -* Add Ruby Together CTA, rearrange README a bit. Pull request [#1775](https://github.com/rubygems/rubygems/pull/1775) by +* Add Ruby Together CTA, rearrange README a bit. Pull request [#1775](https://github.com/ruby/rubygems/pull/1775) by Michael Bernstein. -* Update Contributing.rdoc with new label usage. Pull request [#1716](https://github.com/rubygems/rubygems/pull/1716) by +* Update Contributing.rdoc with new label usage. Pull request [#1716](https://github.com/ruby/rubygems/pull/1716) by Lynn Cyrin. -* Add --host sample to help. Pull request [#1709](https://github.com/rubygems/rubygems/pull/1709) by Code Ahss. +* Add --host sample to help. Pull request [#1709](https://github.com/ruby/rubygems/pull/1709) by Code Ahss. * Add a helpful suggestion when `gem install` fails due to required_rub…. - Pull request [#1697](https://github.com/rubygems/rubygems/pull/1697) by Samuel Giddins. -* Add cert expiration length flag. Pull request [#1725](https://github.com/rubygems/rubygems/pull/1725) by Luis Sagastume. -* Add submodule instructions to manual install. Pull request [#1727](https://github.com/rubygems/rubygems/pull/1727) by + Pull request [#1697](https://github.com/ruby/rubygems/pull/1697) by Samuel Giddins. +* Add cert expiration length flag. Pull request [#1725](https://github.com/ruby/rubygems/pull/1725) by Luis Sagastume. +* Add submodule instructions to manual install. Pull request [#1727](https://github.com/ruby/rubygems/pull/1727) by Joseph Frazier. -* Allow usage of multiple `--version` operators. Pull request [#1546](https://github.com/rubygems/rubygems/pull/1546) by +* Allow usage of multiple `--version` operators. Pull request [#1546](https://github.com/ruby/rubygems/pull/1546) by James Wen. -* Warn when requiring deprecated files. Pull request [#1939](https://github.com/rubygems/rubygems/pull/1939) by Ellen Marie +* Warn when requiring deprecated files. Pull request [#1939](https://github.com/ruby/rubygems/pull/1939) by Ellen Marie Dash. ### Deprecations: * Deprecate Gem::InstallerTestCase#util_gem_bindir and - Gem::InstallerTestCase#util_gem_dir. Pull request [#1729](https://github.com/rubygems/rubygems/pull/1729) by Jon Moss. -* Deprecate passing options to Gem::GemRunner. Pull request [#1730](https://github.com/rubygems/rubygems/pull/1730) by Jon + Gem::InstallerTestCase#util_gem_dir. Pull request [#1729](https://github.com/ruby/rubygems/pull/1729) by Jon Moss. +* Deprecate passing options to Gem::GemRunner. Pull request [#1730](https://github.com/ruby/rubygems/pull/1730) by Jon Moss. -* Add deprecation for Gem#datadir. Pull request [#1732](https://github.com/rubygems/rubygems/pull/1732) by Jon Moss. +* Add deprecation for Gem#datadir. Pull request [#1732](https://github.com/ruby/rubygems/pull/1732) by Jon Moss. * Add deprecation warning for Gem::DependencyInstaller#gems_to_install. - Pull request [#1731](https://github.com/rubygems/rubygems/pull/1731) by Jon Moss. + Pull request [#1731](https://github.com/ruby/rubygems/pull/1731) by Jon Moss. ### Breaking changes: * Use `-rrubygems` instead of `-rubygems.rb`. Because ubygems.rb is - unavailable on Ruby 2.5. Pull request [#2028](https://github.com/rubygems/rubygems/pull/2028) #2027 #2029 + unavailable on Ruby 2.5. Pull request [#2028](https://github.com/ruby/rubygems/pull/2028) #2027 #2029 by SHIBATA Hiroshi. * Update Code of Conduct to Contributor Covenant v1.4.0. Pull request - [#1796](https://github.com/rubygems/rubygems/pull/1796) by Matej. + [#1796](https://github.com/ruby/rubygems/pull/1796) by Matej. ### Bug fixes: -* Fix issue for MinGW / MSYS2 builds and testing. Pull request [#1876](https://github.com/rubygems/rubygems/pull/1876) by +* Fix issue for MinGW / MSYS2 builds and testing. Pull request [#1876](https://github.com/ruby/rubygems/pull/1876) by MSP-Greg. * Fixed broken links and overzealous URL encoding in gem server. Pull - request [#1809](https://github.com/rubygems/rubygems/pull/1809) by Nicole Orchard. -* Fix a typo. Pull request [#1722](https://github.com/rubygems/rubygems/pull/1722) by Koichi ITO. -* Fix error message Gem::Security::Policy. Pull request [#1724](https://github.com/rubygems/rubygems/pull/1724) by Nobuyoshi + request [#1809](https://github.com/ruby/rubygems/pull/1809) by Nicole Orchard. +* Fix a typo. Pull request [#1722](https://github.com/ruby/rubygems/pull/1722) by Koichi ITO. +* Fix error message Gem::Security::Policy. Pull request [#1724](https://github.com/ruby/rubygems/pull/1724) by Nobuyoshi Nakada. -* Fixing links markdown formatting in README. Pull request [#1791](https://github.com/rubygems/rubygems/pull/1791) by Piotr +* Fixing links markdown formatting in README. Pull request [#1791](https://github.com/ruby/rubygems/pull/1791) by Piotr Kuczynski. -* Fix failing Bundler 1.8.7 CI builds. Pull request [#1820](https://github.com/rubygems/rubygems/pull/1820) by Samuel +* Fix failing Bundler 1.8.7 CI builds. Pull request [#1820](https://github.com/ruby/rubygems/pull/1820) by Samuel Giddins. -* Fixed test broken on ruby-head . Pull request [#1842](https://github.com/rubygems/rubygems/pull/1842) by SHIBATA Hiroshi. -* Fix typos with misspell. Pull request [#1846](https://github.com/rubygems/rubygems/pull/1846) by SHIBATA Hiroshi. +* Fixed test broken on ruby-head . Pull request [#1842](https://github.com/ruby/rubygems/pull/1842) by SHIBATA Hiroshi. +* Fix typos with misspell. Pull request [#1846](https://github.com/ruby/rubygems/pull/1846) by SHIBATA Hiroshi. * Fix gem open to open highest version number rather than lowest. Pull - request [#1877](https://github.com/rubygems/rubygems/pull/1877) by Tim Pope. + request [#1877](https://github.com/ruby/rubygems/pull/1877) by Tim Pope. * Fix test_self_find_files_with_gemfile to sort expected files. Pull - request [#1878](https://github.com/rubygems/rubygems/pull/1878) by Kazuaki Matsuo. -* Fix typos in CONTRIBUTING.rdoc. Pull request [#1909](https://github.com/rubygems/rubygems/pull/1909) by Mark Sayson. -* Fix some small documentation issues in installer. Pull request [#1972](https://github.com/rubygems/rubygems/pull/1972) by + request [#1878](https://github.com/ruby/rubygems/pull/1878) by Kazuaki Matsuo. +* Fix typos in CONTRIBUTING.rdoc. Pull request [#1909](https://github.com/ruby/rubygems/pull/1909) by Mark Sayson. +* Fix some small documentation issues in installer. Pull request [#1972](https://github.com/ruby/rubygems/pull/1972) by Colby Swandale. -* Fix links in Policies document. Pull request [#1964](https://github.com/rubygems/rubygems/pull/1964) by Alyssa Ross. -* Fix NoMethodError on bundler/inline environment. Pull request [#2042](https://github.com/rubygems/rubygems/pull/2042) by +* Fix links in Policies document. Pull request [#1964](https://github.com/ruby/rubygems/pull/1964) by Alyssa Ross. +* Fix NoMethodError on bundler/inline environment. Pull request [#2042](https://github.com/ruby/rubygems/pull/2042) by SHIBATA Hiroshi. -* Correct comments for Gem::InstallerTestCase#setup. Pull request [#1741](https://github.com/rubygems/rubygems/pull/1741) by +* Correct comments for Gem::InstallerTestCase#setup. Pull request [#1741](https://github.com/ruby/rubygems/pull/1741) by MSP-Greg. * Use File.expand_path for certification and key location. Pull request - [#1987](https://github.com/rubygems/rubygems/pull/1987) by SHIBATA Hiroshi. -* Rescue EROFS. Pull request [#1417](https://github.com/rubygems/rubygems/pull/1417) by Nobuyoshi Nakada. -* Fix spelling of 'vulnerability'. Pull request [#2022](https://github.com/rubygems/rubygems/pull/2022) by Philip Arndt. -* Fix metadata link key names. Pull request [#1896](https://github.com/rubygems/rubygems/pull/1896) by Aditya Prakash. -* Fix a typo in uninstall_command.rb. Pull request [#1934](https://github.com/rubygems/rubygems/pull/1934) by Yasuhiro + [#1987](https://github.com/ruby/rubygems/pull/1987) by SHIBATA Hiroshi. +* Rescue EROFS. Pull request [#1417](https://github.com/ruby/rubygems/pull/1417) by Nobuyoshi Nakada. +* Fix spelling of 'vulnerability'. Pull request [#2022](https://github.com/ruby/rubygems/pull/2022) by Philip Arndt. +* Fix metadata link key names. Pull request [#1896](https://github.com/ruby/rubygems/pull/1896) by Aditya Prakash. +* Fix a typo in uninstall_command.rb. Pull request [#1934](https://github.com/ruby/rubygems/pull/1934) by Yasuhiro Horimoto. * Gem::Requirement.create treat arguments as variable-length. Pull request - [#1830](https://github.com/rubygems/rubygems/pull/1830) by Toru YAGI. + [#1830](https://github.com/ruby/rubygems/pull/1830) by Toru YAGI. * Display an explanation when rake encounters an ontological problem. Pull - request [#1982](https://github.com/rubygems/rubygems/pull/1982) by Wilson Bilkovich. -* [Server] Handle gems with names ending in `-\d`. Pull request [#1926](https://github.com/rubygems/rubygems/pull/1926) by + request [#1982](https://github.com/ruby/rubygems/pull/1982) by Wilson Bilkovich. +* [Server] Handle gems with names ending in `-\d`. Pull request [#1926](https://github.com/ruby/rubygems/pull/1926) by Samuel Giddins. * [InstallerSet] Avoid reloading _all_ local gems multiple times during - dependency resolution. Pull request [#1925](https://github.com/rubygems/rubygems/pull/1925) by Samuel Giddins. -* Modify the return value of Gem::Version.correct?. Pull request [#1916](https://github.com/rubygems/rubygems/pull/1916) by + dependency resolution. Pull request [#1925](https://github.com/ruby/rubygems/pull/1925) by Samuel Giddins. +* Modify the return value of Gem::Version.correct?. Pull request [#1916](https://github.com/ruby/rubygems/pull/1916) by Tsukuru Tanimichi. -* Validate metadata link keys. Pull request [#1834](https://github.com/rubygems/rubygems/pull/1834) by Aditya Prakash. -* Add changelog to metadata validation. Pull request [#1885](https://github.com/rubygems/rubygems/pull/1885) by Aditya +* Validate metadata link keys. Pull request [#1834](https://github.com/ruby/rubygems/pull/1834) by Aditya Prakash. +* Add changelog to metadata validation. Pull request [#1885](https://github.com/ruby/rubygems/pull/1885) by Aditya Prakash. -* Replace socket error text message. Pull request [#1823](https://github.com/rubygems/rubygems/pull/1823) by Daniel Berger. +* Replace socket error text message. Pull request [#1823](https://github.com/ruby/rubygems/pull/1823) by Daniel Berger. * Raise error if the email is invalid when building cert. Pull request - [#1779](https://github.com/rubygems/rubygems/pull/1779) by Luis Sagastume. + [#1779](https://github.com/ruby/rubygems/pull/1779) by Luis Sagastume. * [StubSpecification] Don’t iterate through all loaded specs in #to_spec. - Pull request [#1738](https://github.com/rubygems/rubygems/pull/1738) by Samuel Giddins. + Pull request [#1738](https://github.com/ruby/rubygems/pull/1738) by Samuel Giddins. ## 2.6.14 / 2017-10-09 @@ -3422,35 +3422,35 @@ Security fixes: ### Bug fixes: * Fix test_self_find_files_with_gemfile to sort expected files. Pull - request [#1880](https://github.com/rubygems/rubygems/pull/1880) by Kazuaki Matsuo. -* Fix issue for MinGW / MSYS2 builds and testing. Pull request [#1879](https://github.com/rubygems/rubygems/pull/1879) by + request [#1880](https://github.com/ruby/rubygems/pull/1880) by Kazuaki Matsuo. +* Fix issue for MinGW / MSYS2 builds and testing. Pull request [#1879](https://github.com/ruby/rubygems/pull/1879) by MSP-Greg. * Fix gem open to open highest version number rather than lowest. Pull - request [#1877](https://github.com/rubygems/rubygems/pull/1877) by Tim Pope. + request [#1877](https://github.com/ruby/rubygems/pull/1877) by Tim Pope. * Add a test for requiring a default spec as installed by the ruby - installer. Pull request [#1899](https://github.com/rubygems/rubygems/pull/1899) by Samuel Giddins. -* Fix broken --exact parameter to gem command. Pull request [#1873](https://github.com/rubygems/rubygems/pull/1873) by Jason + installer. Pull request [#1899](https://github.com/ruby/rubygems/pull/1899) by Samuel Giddins. +* Fix broken --exact parameter to gem command. Pull request [#1873](https://github.com/ruby/rubygems/pull/1873) by Jason Frey. -* [Installer] Generate backwards-compatible binstubs. Pull request [#1904](https://github.com/rubygems/rubygems/pull/1904) +* [Installer] Generate backwards-compatible binstubs. Pull request [#1904](https://github.com/ruby/rubygems/pull/1904) by Samuel Giddins. -* Fix pre-existing source recognition on add action. Pull request [#1883](https://github.com/rubygems/rubygems/pull/1883) by +* Fix pre-existing source recognition on add action. Pull request [#1883](https://github.com/ruby/rubygems/pull/1883) by Jonathan Claudius. -* Prevent negative IDs in output of #inspect. Pull request [#1908](https://github.com/rubygems/rubygems/pull/1908) by Vít +* Prevent negative IDs in output of #inspect. Pull request [#1908](https://github.com/ruby/rubygems/pull/1908) by Vít Ondruch. * Allow Gem.finish_resolve to respect already-activated specs. Pull - request [#1910](https://github.com/rubygems/rubygems/pull/1910) by Samuel Giddins. + request [#1910](https://github.com/ruby/rubygems/pull/1910) by Samuel Giddins. ## 2.6.11 / 2017-03-16 ### Bug fixes: -* Fixed broken tests on ruby-head. Pull request [#1841](https://github.com/rubygems/rubygems/pull/1841) by +* Fixed broken tests on ruby-head. Pull request [#1841](https://github.com/ruby/rubygems/pull/1841) by SHIBATA Hiroshi. -* Update vendored Molinillo to 0.5.7. Pull request [#1859](https://github.com/rubygems/rubygems/pull/1859) by Samuel +* Update vendored Molinillo to 0.5.7. Pull request [#1859](https://github.com/ruby/rubygems/pull/1859) by Samuel Giddins. -* Avoid activating Ruby 2.5 default gems when possible. Pull request [#1843](https://github.com/rubygems/rubygems/pull/1843) +* Avoid activating Ruby 2.5 default gems when possible. Pull request [#1843](https://github.com/ruby/rubygems/pull/1843) by Samuel Giddins. -* Use improved resolver sorting algorithm. Pull request [#1856](https://github.com/rubygems/rubygems/pull/1856) by +* Use improved resolver sorting algorithm. Pull request [#1856](https://github.com/ruby/rubygems/pull/1856) by Samuel Giddins. ## 2.6.10 / 2017-01-23 @@ -3458,33 +3458,33 @@ Security fixes: ### Bug fixes: * Fix `require` calling the wrong `gem` method when it is overridden. - Pull request [#1822](https://github.com/rubygems/rubygems/pull/1822) by Samuel Giddins. + Pull request [#1822](https://github.com/ruby/rubygems/pull/1822) by Samuel Giddins. ## 2.6.9 / 2017-01-20 ### Bug fixes: -* Allow initializing versions with empty strings. Pull request [#1767](https://github.com/rubygems/rubygems/pull/1767) by +* Allow initializing versions with empty strings. Pull request [#1767](https://github.com/ruby/rubygems/pull/1767) by Luis Sagastume. -* Fix TypeError on 2.4. Pull request [#1788](https://github.com/rubygems/rubygems/pull/1788) by Nobuyoshi Nakada. +* Fix TypeError on 2.4. Pull request [#1788](https://github.com/ruby/rubygems/pull/1788) by Nobuyoshi Nakada. * Don't output mkmf.log message if compilation didn't fail. Pull request - [#1808](https://github.com/rubygems/rubygems/pull/1808) by Jeremy Evans. + [#1808](https://github.com/ruby/rubygems/pull/1808) by Jeremy Evans. * Fixed broken links and overzealous URL encoding in gem server. Pull - request [#1809](https://github.com/rubygems/rubygems/pull/1809) by Nicole Orchard. -* Update vendored Molinillo to 0.5.5. Pull request [#1812](https://github.com/rubygems/rubygems/pull/1812) by Samuel + request [#1809](https://github.com/ruby/rubygems/pull/1809) by Nicole Orchard. +* Update vendored Molinillo to 0.5.5. Pull request [#1812](https://github.com/ruby/rubygems/pull/1812) by Samuel Giddins. -* RakeBuilder: avoid frozen string issue. Pull request [#1819](https://github.com/rubygems/rubygems/pull/1819) by Olle +* RakeBuilder: avoid frozen string issue. Pull request [#1819](https://github.com/ruby/rubygems/pull/1819) by Olle Jonsson. ## 2.6.8 / 2016-10-29 ### Bug fixes: -* Improve SSL verification failure message. Pull request [#1751](https://github.com/rubygems/rubygems/pull/1751) +* Improve SSL verification failure message. Pull request [#1751](https://github.com/ruby/rubygems/pull/1751) by Eric Hodel. * Ensure `to_spec` falls back on prerelease specs. Pull request - [#1755](https://github.com/rubygems/rubygems/pull/1755) by André Arko. -* Update vendored Molinillo to 0.5.3. Pull request [#1763](https://github.com/rubygems/rubygems/pull/1763) by + [#1755](https://github.com/ruby/rubygems/pull/1755) by André Arko. +* Update vendored Molinillo to 0.5.3. Pull request [#1763](https://github.com/ruby/rubygems/pull/1763) by Samuel Giddins. ## 2.6.7 / 2016-09-26 @@ -3492,13 +3492,13 @@ Security fixes: ### Bug fixes: * Install native extensions in the correct location when using the - `--user-install` flag. Pull request [#1683](https://github.com/rubygems/rubygems/pull/1683) by Noah Kantrowitz. + `--user-install` flag. Pull request [#1683](https://github.com/ruby/rubygems/pull/1683) by Noah Kantrowitz. * When calling `Gem.sources`, load sources from `configuration` - if present, else use the default sources. Pull request [#1699](https://github.com/rubygems/rubygems/pull/1699) + if present, else use the default sources. Pull request [#1699](https://github.com/ruby/rubygems/pull/1699) by Luis Sagastume. * Fail gracefully when attempting to redirect without a Location. - Pull request [#1711](https://github.com/rubygems/rubygems/pull/1711) by Samuel Giddins. -* Update vendored Molinillo to 0.5.1. Pull request [#1714](https://github.com/rubygems/rubygems/pull/1714) by + Pull request [#1711](https://github.com/ruby/rubygems/pull/1711) by Samuel Giddins. +* Update vendored Molinillo to 0.5.1. Pull request [#1714](https://github.com/ruby/rubygems/pull/1714) by Samuel Giddins. ## 2.6.6 / 2016-06-22 @@ -3507,51 +3507,51 @@ Security fixes: * Sort installed versions to make sure we install the latest version when running `gem update --system`. As a one-time fix, run - `gem update --system=2.6.6`. Pull request [#1601](https://github.com/rubygems/rubygems/pull/1601) by David Radcliffe. + `gem update --system=2.6.6`. Pull request [#1601](https://github.com/ruby/rubygems/pull/1601) by David Radcliffe. ## 2.6.5 / 2016-06-21 ### Enhancements: -* Support for unified Integer in Ruby 2.4. Pull request [#1618](https://github.com/rubygems/rubygems/pull/1618) +* Support for unified Integer in Ruby 2.4. Pull request [#1618](https://github.com/ruby/rubygems/pull/1618) by SHIBATA Hiroshi. * Update vendored Molinillo to 0.5.0 for performance improvements. - Pull request [#1638](https://github.com/rubygems/rubygems/pull/1638) by Samuel Giddins. + Pull request [#1638](https://github.com/ruby/rubygems/pull/1638) by Samuel Giddins. ### Bug fixes: * Raise an explicit error if Signer#sign is called with no certs. Pull - request [#1605](https://github.com/rubygems/rubygems/pull/1605) by Daniel Berger. + request [#1605](https://github.com/ruby/rubygems/pull/1605) by Daniel Berger. * Update `update_bundled_ca_certificates` utility script for directory - nesting. Pull request [#1583](https://github.com/rubygems/rubygems/pull/1583) by James Wen. + nesting. Pull request [#1583](https://github.com/ruby/rubygems/pull/1583) by James Wen. * Fix broken symlink support in tar writer (+ fix broken test). Pull - request [#1578](https://github.com/rubygems/rubygems/pull/1578) by Cezary Baginski. -* Remove extension directory before (re-)installing. Pull request [#1576](https://github.com/rubygems/rubygems/pull/1576) + request [#1578](https://github.com/ruby/rubygems/pull/1578) by Cezary Baginski. +* Remove extension directory before (re-)installing. Pull request [#1576](https://github.com/ruby/rubygems/pull/1576) by Jeremy Hinegardner. * Regenerate test CA certificates with appropriate extensions. Pull - request [#1611](https://github.com/rubygems/rubygems/pull/1611) by rhenium. + request [#1611](https://github.com/ruby/rubygems/pull/1611) by rhenium. * Rubygems does not terminate on failed file lock when not superuser. Pull - request [#1582](https://github.com/rubygems/rubygems/pull/1582) by Ellen Marie Dash. -* Fix tar headers with a 101 character name. Pull request [#1612](https://github.com/rubygems/rubygems/pull/1612) by Paweł + request [#1582](https://github.com/ruby/rubygems/pull/1582) by Ellen Marie Dash. +* Fix tar headers with a 101 character name. Pull request [#1612](https://github.com/ruby/rubygems/pull/1612) by Paweł Tomulik. * Add Gem.platform_defaults to allow implementations to override defaults. - Pull request [#1644](https://github.com/rubygems/rubygems/pull/1644) by Charles Oliver Nutter. -* Run Bundler tests on TravisCI. Pull request [#1650](https://github.com/rubygems/rubygems/pull/1650) by Samuel Giddins. + Pull request [#1644](https://github.com/ruby/rubygems/pull/1644) by Charles Oliver Nutter. +* Run Bundler tests on TravisCI. Pull request [#1650](https://github.com/ruby/rubygems/pull/1650) by Samuel Giddins. ## 2.6.4 / 2016-04-26 ### Enhancements: -* Use Gem::Util::NULL_DEVICE instead of hard coded strings. Pull request [#1588](https://github.com/rubygems/rubygems/pull/1588) +* Use Gem::Util::NULL_DEVICE instead of hard coded strings. Pull request [#1588](https://github.com/ruby/rubygems/pull/1588) by Chris Charabaruk. -* Use File.symlink on MS Windows if supported. Pull request [#1418](https://github.com/rubygems/rubygems/pull/1418) +* Use File.symlink on MS Windows if supported. Pull request [#1418](https://github.com/ruby/rubygems/pull/1418) by Nobuyoshi Nakada. ### Bug fixes: * Redact uri password from error output when gem fetch fails. Pull request - [#1565](https://github.com/rubygems/rubygems/pull/1565) by Brian Fletcher. -* Suppress warnings. Pull request [#1594](https://github.com/rubygems/rubygems/pull/1594) by Nobuyoshi Nakada. + [#1565](https://github.com/ruby/rubygems/pull/1565) by Brian Fletcher. +* Suppress warnings. Pull request [#1594](https://github.com/ruby/rubygems/pull/1594) by Nobuyoshi Nakada. * Escape user-supplied content served on web pages by `gem server` to avoid potential XSS vulnerabilities. Samuel Giddins. @@ -3559,136 +3559,136 @@ Security fixes: ### Enhancements: -* Lazily calculate Gem::LoadError exception messages. Pull request [#1550](https://github.com/rubygems/rubygems/pull/1550) +* Lazily calculate Gem::LoadError exception messages. Pull request [#1550](https://github.com/ruby/rubygems/pull/1550) by Aaron Patterson. -* New fastly cert. Pull request [#1548](https://github.com/rubygems/rubygems/pull/1548) by David Radcliffe. -* Organize and cleanup SSL certs. Pull request [#1555](https://github.com/rubygems/rubygems/pull/1555) by James Wen. +* New fastly cert. Pull request [#1548](https://github.com/ruby/rubygems/pull/1548) by David Radcliffe. +* Organize and cleanup SSL certs. Pull request [#1555](https://github.com/ruby/rubygems/pull/1555) by James Wen. * [RubyGems] Make deprecation message for paths= more helpful. Pull - request [#1562](https://github.com/rubygems/rubygems/pull/1562) by Samuel Giddins. -* Show default gems when using "gem list". Pull request [#1570](https://github.com/rubygems/rubygems/pull/1570) by Luis + request [#1562](https://github.com/ruby/rubygems/pull/1562) by Samuel Giddins. +* Show default gems when using "gem list". Pull request [#1570](https://github.com/ruby/rubygems/pull/1570) by Luis Sagastume. ### Bug fixes: * Stub ordering should be consistent regardless of how cache is populated. - Pull request [#1552](https://github.com/rubygems/rubygems/pull/1552) by Aaron Patterson. + Pull request [#1552](https://github.com/ruby/rubygems/pull/1552) by Aaron Patterson. * Handle cases when the @@stubs variable contains non-stubs. Pull request - [#1558](https://github.com/rubygems/rubygems/pull/1558) by Per Lundberg. -* Fix test on Windows for inconsistent temp path. Pull request [#1554](https://github.com/rubygems/rubygems/pull/1554) by + [#1558](https://github.com/ruby/rubygems/pull/1558) by Per Lundberg. +* Fix test on Windows for inconsistent temp path. Pull request [#1554](https://github.com/ruby/rubygems/pull/1554) by Hiroshi Shirosaki. -* Fix `Gem.find_spec_for_exe` picks oldest gem. Pull request [#1566](https://github.com/rubygems/rubygems/pull/1566) by +* Fix `Gem.find_spec_for_exe` picks oldest gem. Pull request [#1566](https://github.com/ruby/rubygems/pull/1566) by Shinichi Maeshima. * [Owner] Fallback to email and userid when owner email is missing. Pull - request [#1569](https://github.com/rubygems/rubygems/pull/1569) by Samuel Giddins. -* [Installer] Handle nil existing executable. Pull request [#1561](https://github.com/rubygems/rubygems/pull/1561) by Samuel + request [#1569](https://github.com/ruby/rubygems/pull/1569) by Samuel Giddins. +* [Installer] Handle nil existing executable. Pull request [#1561](https://github.com/ruby/rubygems/pull/1561) by Samuel Giddins. -* Allow two digit version numbers in the tests. Pull request [#1575](https://github.com/rubygems/rubygems/pull/1575) by unak. +* Allow two digit version numbers in the tests. Pull request [#1575](https://github.com/ruby/rubygems/pull/1575) by unak. ## 2.6.2 / 2016-03-12 ### Bug fixes: -* Fix wrong version of gem activation for bin stub. Pull request [#1527](https://github.com/rubygems/rubygems/pull/1527) by +* Fix wrong version of gem activation for bin stub. Pull request [#1527](https://github.com/ruby/rubygems/pull/1527) by Aaron Patterson. -* Speed up gem activation failures. Pull request [#1539](https://github.com/rubygems/rubygems/pull/1539) by Aaron Patterson. -* Fix platform sorting in the resolver. Pull request [#1542](https://github.com/rubygems/rubygems/pull/1542) by Samuel E. +* Speed up gem activation failures. Pull request [#1539](https://github.com/ruby/rubygems/pull/1539) by Aaron Patterson. +* Fix platform sorting in the resolver. Pull request [#1542](https://github.com/ruby/rubygems/pull/1542) by Samuel E. Giddins. * Ensure we unlock the monitor even if try_activate throws. Pull request - [#1538](https://github.com/rubygems/rubygems/pull/1538) by Charles Oliver Nutter. + [#1538](https://github.com/ruby/rubygems/pull/1538) by Charles Oliver Nutter. ## 2.6.1 / 2016-02-28 ### Bug fixes: -* Ensure `default_path` and `home` are set for paths. Pull request [#1513](https://github.com/rubygems/rubygems/pull/1513) +* Ensure `default_path` and `home` are set for paths. Pull request [#1513](https://github.com/ruby/rubygems/pull/1513) by Aaron Patterson. * Restore but deprecate support for Array values on `Gem.paths=`. Pull - request [#1514](https://github.com/rubygems/rubygems/pull/1514) by Aaron Patterson. + request [#1514](https://github.com/ruby/rubygems/pull/1514) by Aaron Patterson. * Fix invalid gem file preventing gem install from working. Pull request - [#1499](https://github.com/rubygems/rubygems/pull/1499) by Luis Sagastume. + [#1499](https://github.com/ruby/rubygems/pull/1499) by Luis Sagastume. ## 2.6.0 / 2016-02-26 ### Enhancements: * RubyGems now defaults the `gem push` to the gem's "allowed_push_host" - metadata setting. Pull request [#1486](https://github.com/rubygems/rubygems/pull/1486) by Josh Lane. -* Update bundled Molinillo to 0.4.3. Pull request [#1493](https://github.com/rubygems/rubygems/pull/1493) by Samuel E. Giddins. -* Add version option to gem open command. Pull request [#1483](https://github.com/rubygems/rubygems/pull/1483) by Hrvoje + metadata setting. Pull request [#1486](https://github.com/ruby/rubygems/pull/1486) by Josh Lane. +* Update bundled Molinillo to 0.4.3. Pull request [#1493](https://github.com/ruby/rubygems/pull/1493) by Samuel E. Giddins. +* Add version option to gem open command. Pull request [#1483](https://github.com/ruby/rubygems/pull/1483) by Hrvoje Šimić. -* Feature/add silent flag. Pull request [#1455](https://github.com/rubygems/rubygems/pull/1455) by Luis Sagastume. -* Allow specifying gem requirements via env variables. Pull request [#1472](https://github.com/rubygems/rubygems/pull/1472) +* Feature/add silent flag. Pull request [#1455](https://github.com/ruby/rubygems/pull/1455) by Luis Sagastume. +* Allow specifying gem requirements via env variables. Pull request [#1472](https://github.com/ruby/rubygems/pull/1472) by Samuel E. Giddins. ### Bug fixes: * RubyGems now stores `gem push` credentials under the host you signed-in for. - Pull request [#1485](https://github.com/rubygems/rubygems/pull/1485) by Josh Lane. -* Move `coding` location to first line. Pull request [#1471](https://github.com/rubygems/rubygems/pull/1471) by SHIBATA + Pull request [#1485](https://github.com/ruby/rubygems/pull/1485) by Josh Lane. +* Move `coding` location to first line. Pull request [#1471](https://github.com/ruby/rubygems/pull/1471) by SHIBATA Hiroshi. -* [PathSupport] Handle a regexp path separator. Pull request [#1469](https://github.com/rubygems/rubygems/pull/1469) by +* [PathSupport] Handle a regexp path separator. Pull request [#1469](https://github.com/ruby/rubygems/pull/1469) by Samuel E. Giddins. -* Clean up the PathSupport object. Pull request [#1094](https://github.com/rubygems/rubygems/pull/1094) by Aaron Patterson. -* Join with File::PATH_SEPARATOR in Gem.use_paths. Pull request [#1476](https://github.com/rubygems/rubygems/pull/1476) by +* Clean up the PathSupport object. Pull request [#1094](https://github.com/ruby/rubygems/pull/1094) by Aaron Patterson. +* Join with File::PATH_SEPARATOR in Gem.use_paths. Pull request [#1476](https://github.com/ruby/rubygems/pull/1476) by Samuel E. Giddins. * Handle when the gem home and gem path aren't set in the config file. Pull - request [#1478](https://github.com/rubygems/rubygems/pull/1478) by Samuel E. Giddins. -* Terminate TimeoutHandler. Pull request [#1479](https://github.com/rubygems/rubygems/pull/1479) by Nobuyoshi Nakada. -* Remove redundant cache. Pull request [#1482](https://github.com/rubygems/rubygems/pull/1482) by Eileen M. Uchitelle. -* Freeze `Gem::Version@segments` instance variable. Pull request [#1487](https://github.com/rubygems/rubygems/pull/1487) by + request [#1478](https://github.com/ruby/rubygems/pull/1478) by Samuel E. Giddins. +* Terminate TimeoutHandler. Pull request [#1479](https://github.com/ruby/rubygems/pull/1479) by Nobuyoshi Nakada. +* Remove redundant cache. Pull request [#1482](https://github.com/ruby/rubygems/pull/1482) by Eileen M. Uchitelle. +* Freeze `Gem::Version@segments` instance variable. Pull request [#1487](https://github.com/ruby/rubygems/pull/1487) by Ben Dean. * Gem cleanup is trying to uninstall gems outside GEM_HOME and reporting - an error after it tries. Pull request [#1353](https://github.com/rubygems/rubygems/pull/1353) by Luis Sagastume. -* Avoid duplicated sources. Pull request [#1489](https://github.com/rubygems/rubygems/pull/1489) by Luis Sagastume. -* Better description for quiet flag. Pull request [#1491](https://github.com/rubygems/rubygems/pull/1491) by Luis Sagastume. -* Raise error if find_by_name returns with nil. Pull request [#1494](https://github.com/rubygems/rubygems/pull/1494) by + an error after it tries. Pull request [#1353](https://github.com/ruby/rubygems/pull/1353) by Luis Sagastume. +* Avoid duplicated sources. Pull request [#1489](https://github.com/ruby/rubygems/pull/1489) by Luis Sagastume. +* Better description for quiet flag. Pull request [#1491](https://github.com/ruby/rubygems/pull/1491) by Luis Sagastume. +* Raise error if find_by_name returns with nil. Pull request [#1494](https://github.com/ruby/rubygems/pull/1494) by Zoltán Hegedüs. -* Find_files only from loaded_gems when using gemdeps. Pull request [#1277](https://github.com/rubygems/rubygems/pull/1277) +* Find_files only from loaded_gems when using gemdeps. Pull request [#1277](https://github.com/ruby/rubygems/pull/1277) by Michal Papis. ## 2.5.2 / 2016-01-31 ### Bug fixes: -* Fix memoization of Gem::Version#prerelease? Pull request [#1125](https://github.com/rubygems/rubygems/pull/1125) by Matijs van +* Fix memoization of Gem::Version#prerelease? Pull request [#1125](https://github.com/ruby/rubygems/pull/1125) by Matijs van Zuijlen. * Handle trailing colons in GEM_PATH, by Damien Robert. * Improve the Gemfile `gemspec` method, fixing #1204 and #1033. Pull request - [#1276](https://github.com/rubygems/rubygems/pull/1276) by Michael Papis. -* Warn only once when a gemspec license is invalid. Pull request [#1414](https://github.com/rubygems/rubygems/pull/1414) by Samuel + [#1276](https://github.com/ruby/rubygems/pull/1276) by Michael Papis. +* Warn only once when a gemspec license is invalid. Pull request [#1414](https://github.com/ruby/rubygems/pull/1414) by Samuel E. Giddins. * Check for exact constants before using them, fixing Ruby bug #11940. Pull - request [#1438](https://github.com/rubygems/rubygems/pull/1438) by Nobuyoshi Nakada. -* Fix building C extensions on Ruby 1.9.x on Windows. Pull request [#1453](https://github.com/rubygems/rubygems/pull/1453) by Marie + request [#1438](https://github.com/ruby/rubygems/pull/1438) by Nobuyoshi Nakada. +* Fix building C extensions on Ruby 1.9.x on Windows. Pull request [#1453](https://github.com/ruby/rubygems/pull/1453) by Marie Markwell. -* Handle symlinks containing ".." correctly. Pull request [#1457](https://github.com/rubygems/rubygems/pull/1457) by Samuel E. +* Handle symlinks containing ".." correctly. Pull request [#1457](https://github.com/ruby/rubygems/pull/1457) by Samuel E. Giddins. ### Enhancements: -* Add `--no-rc` flag, which skips loading `.gemrc`. Pull request [#1329](https://github.com/rubygems/rubygems/pull/1329) by Luis +* Add `--no-rc` flag, which skips loading `.gemrc`. Pull request [#1329](https://github.com/ruby/rubygems/pull/1329) by Luis Sagastume. * Allow basic auth to be excluded from `allowed_push_host`. By Josh Lane. * Add `gem list --exact`, which finds gems by string match instead of regex. Pull - request [#1344](https://github.com/rubygems/rubygems/pull/1344) by Luis Sagastume. -* Suggest alternatives when gem license is unknown. Pull request [#1443](https://github.com/rubygems/rubygems/pull/1443) by Samuel + request [#1344](https://github.com/ruby/rubygems/pull/1344) by Luis Sagastume. +* Suggest alternatives when gem license is unknown. Pull request [#1443](https://github.com/ruby/rubygems/pull/1443) by Samuel E. Giddins. * Print a useful error if a binstub expects a newer version of a gem than is - installed. Pull request [#1407](https://github.com/rubygems/rubygems/pull/1407) by Samuel E. Giddins. + installed. Pull request [#1407](https://github.com/ruby/rubygems/pull/1407) by Samuel E. Giddins. * Allow the (supported) s3:// scheme to be used with `--source`. Pull request - [#1416](https://github.com/rubygems/rubygems/pull/1416) by Dave Adams. -* Add `--[no-]post-install-message` to `install` and `update`. Pull request [#1162](https://github.com/rubygems/rubygems/pull/1162) + [#1416](https://github.com/ruby/rubygems/pull/1416) by Dave Adams. +* Add `--[no-]post-install-message` to `install` and `update`. Pull request [#1162](https://github.com/ruby/rubygems/pull/1162) by Josef Šimánek. * Add `--host` option to `yank`, providing symmetry with `pull`. Pull request - [#1361](https://github.com/rubygems/rubygems/pull/1361) by Mike Virata-Stone. -* Update bundled Molinillo to 0.4.1. Pull request [#1452](https://github.com/rubygems/rubygems/pull/1452) by Samuel E. Giddins. -* Allow calling `build` without '.gemspec'. Pull request [#1454](https://github.com/rubygems/rubygems/pull/1454) by Stephen + [#1361](https://github.com/ruby/rubygems/pull/1361) by Mike Virata-Stone. +* Update bundled Molinillo to 0.4.1. Pull request [#1452](https://github.com/ruby/rubygems/pull/1452) by Samuel E. Giddins. +* Allow calling `build` without '.gemspec'. Pull request [#1454](https://github.com/ruby/rubygems/pull/1454) by Stephen Blackstone. -* Add support for `source` option on gems in Gemfile. Pull request [#1355](https://github.com/rubygems/rubygems/pull/1355) by +* Add support for `source` option on gems in Gemfile. Pull request [#1355](https://github.com/ruby/rubygems/pull/1355) by Michael Papis. * Function correctly when string literals are frozen on Ruby 2.3. Pull request - [#1408](https://github.com/rubygems/rubygems/pull/1408) by Samuel E. Giddins. + [#1408](https://github.com/ruby/rubygems/pull/1408) by Samuel E. Giddins. ## 2.5.1 / 2015-12-10 @@ -3696,30 +3696,30 @@ Security fixes: * Ensure platform sorting only uses strings. Affected binary installs on Windows. Issue #1369 reported by Ryan Atball (among others). - Pull request [#1375](https://github.com/rubygems/rubygems/pull/1375) by Samuel E. Giddins. + Pull request [#1375](https://github.com/ruby/rubygems/pull/1375) by Samuel E. Giddins. * Revert PR #1332. Unable to reproduce, and nil should be impossible. * Gem::Specification#to_fullpath now returns .rb extensions when such a file - exists. Pull request [#1114](https://github.com/rubygems/rubygems/pull/1114) by y-yagi. + exists. Pull request [#1114](https://github.com/ruby/rubygems/pull/1114) by y-yagi. * RubyGems now handles Net::HTTPFatalError instead of crashing. Pull - request [#1314](https://github.com/rubygems/rubygems/pull/1314) by Samuel E. Giddins. -* Updated bundled Molinillo to 0.4.0. Pull request [#1322](https://github.com/rubygems/rubygems/pull/1322), #1396 by Samuel E. + request [#1314](https://github.com/ruby/rubygems/pull/1314) by Samuel E. Giddins. +* Updated bundled Molinillo to 0.4.0. Pull request [#1322](https://github.com/ruby/rubygems/pull/1322), #1396 by Samuel E. Giddins. * Improved performance of spec loading by reducing likelihood of loading the - complete specification. Pull request [#1373](https://github.com/rubygems/rubygems/pull/1373) by Aaron Patterson. -* Improved caching of requirable files Pull request [#1377](https://github.com/rubygems/rubygems/pull/1377) by Aaron Patterson. -* Fixed activation of gems with development dependencies. Pull request [#1388](https://github.com/rubygems/rubygems/pull/1388) + complete specification. Pull request [#1373](https://github.com/ruby/rubygems/pull/1373) by Aaron Patterson. +* Improved caching of requirable files Pull request [#1377](https://github.com/ruby/rubygems/pull/1377) by Aaron Patterson. +* Fixed activation of gems with development dependencies. Pull request [#1388](https://github.com/ruby/rubygems/pull/1388) by Samuel E. Giddins. * RubyGems now uses the same Molinillo vendoring strategy as Bundler. Pull - request [#1397](https://github.com/rubygems/rubygems/pull/1397) by Samuel E. Giddins. -* Fixed documentation of Gem::Requirement.parse. Pull request [#1398](https://github.com/rubygems/rubygems/pull/1398) by + request [#1397](https://github.com/ruby/rubygems/pull/1397) by Samuel E. Giddins. +* Fixed documentation of Gem::Requirement.parse. Pull request [#1398](https://github.com/ruby/rubygems/pull/1398) by Juanito Fatas. * RubyGems no longer warns when a prerelease gem has prerelease dependencies. - Pull request [#1399](https://github.com/rubygems/rubygems/pull/1399) by Samuel E. Giddins. -* Fixed Gem::Version documentation example. Pull request [#1401](https://github.com/rubygems/rubygems/pull/1401) by Guilherme + Pull request [#1399](https://github.com/ruby/rubygems/pull/1399) by Samuel E. Giddins. +* Fixed Gem::Version documentation example. Pull request [#1401](https://github.com/ruby/rubygems/pull/1401) by Guilherme Goettems Schneider. -* Updated documentation links to https://. Pull request [#1404](https://github.com/rubygems/rubygems/pull/1404) by Suriyaa +* Updated documentation links to https://. Pull request [#1404](https://github.com/ruby/rubygems/pull/1404) by Suriyaa Kudo. -* Fixed double word typo. Pull request [#1411](https://github.com/rubygems/rubygems/pull/1411) by Jake Worth. +* Fixed double word typo. Pull request [#1411](https://github.com/ruby/rubygems/pull/1411) by Jake Worth. ## 2.5.0 / 2015-11-03 @@ -3730,24 +3730,24 @@ Security fixes: Gem::Specification#license attribute to try to standardize (though not enforce) licenses set by gem authors. - Pull request [#1249](https://github.com/rubygems/rubygems/pull/1249) by Kyle Mitchell. + Pull request [#1249](https://github.com/ruby/rubygems/pull/1249) by Kyle Mitchell. * Use Molinillo as the resolver library. This is the same resolver as used by - Bundler. Pull request [#1189](https://github.com/rubygems/rubygems/pull/1189) by Samuel E. Giddins. -* Add `--skip=gem_name` to Pristine command. Pull request [#1018](https://github.com/rubygems/rubygems/pull/1018) by windwiny. + Bundler. Pull request [#1189](https://github.com/ruby/rubygems/pull/1189) by Samuel E. Giddins. +* Add `--skip=gem_name` to Pristine command. Pull request [#1018](https://github.com/ruby/rubygems/pull/1018) by windwiny. * The parsed gem dependencies file is now available via Gem.gemdeps following - Gem.use_gemdeps. Pull request [#1224](https://github.com/rubygems/rubygems/pull/1224) by Hsing-Hui Hsu, issue #1213 by + Gem.use_gemdeps. Pull request [#1224](https://github.com/ruby/rubygems/pull/1224) by Hsing-Hui Hsu, issue #1213 by Michal Papis. * Moved description attribute to recommended for Gem::Specification. - Pull request [#1046](https://github.com/rubygems/rubygems/pull/1046) by Michal Papis + Pull request [#1046](https://github.com/ruby/rubygems/pull/1046) by Michal Papis * Moved `Gem::Indexer#abbreviate` and `#sanitize` to `Gem::Specification`. - Pull request [#1145](https://github.com/rubygems/rubygems/pull/1145) by Arthur Nogueira Neves + Pull request [#1145](https://github.com/ruby/rubygems/pull/1145) by Arthur Nogueira Neves * Cache Gem::Version segments for `#bump` and `#release`. - Pull request [#1131](https://github.com/rubygems/rubygems/pull/1131) by Matijs van Zuijlen + Pull request [#1131](https://github.com/ruby/rubygems/pull/1131) by Matijs van Zuijlen * Fix edge case in `levenshtein_distance` for comparing longer strings. - Pull request [#1173](https://github.com/rubygems/rubygems/pull/1173) by Richard Schneeman + Pull request [#1173](https://github.com/ruby/rubygems/pull/1173) by Richard Schneeman * Remove duplication from List#to_a, improving from O(n^2) to O(n) time. - Pull request [#1200](https://github.com/rubygems/rubygems/pull/1200) by Marc Siegel. + Pull request [#1200](https://github.com/ruby/rubygems/pull/1200) by Marc Siegel. * Gem::Specification.add_specs is deprecated and will be removed from version 3.0 with no replacement. To add specs, install the gem, then reset the cache. @@ -3759,95 +3759,95 @@ Security fixes: cache by calling Gem::Specification.reset. * Call Array#compact before calling Array#uniq for minor speed improvement in the Gem::Specification#files method. - Pull request [#1253](https://github.com/rubygems/rubygems/pull/1253) by Marat Amerov. + Pull request [#1253](https://github.com/ruby/rubygems/pull/1253) by Marat Amerov. * Use stringio instead of custom String classes. - Pull request [#1250](https://github.com/rubygems/rubygems/pull/1250) by Petr Skocik. + Pull request [#1250](https://github.com/ruby/rubygems/pull/1250) by Petr Skocik. * Use URI#host instead of URI#hostname to retain backwards compatibility with Ruby 1.9.2 and earlier in util library. - Pull request [#1288](https://github.com/rubygems/rubygems/pull/1288) by Joe Rafaniello. + Pull request [#1288](https://github.com/ruby/rubygems/pull/1288) by Joe Rafaniello. * Documentation update for gem sources. - Pull request [#1324](https://github.com/rubygems/rubygems/pull/1324) by Ilya Vassilevsky. + Pull request [#1324](https://github.com/ruby/rubygems/pull/1324) by Ilya Vassilevsky. * Documentation update for required_ruby_version. - Pull request [#1321](https://github.com/rubygems/rubygems/pull/1321) by Matt Patterson. + Pull request [#1321](https://github.com/ruby/rubygems/pull/1321) by Matt Patterson. * Documentation update for gem update. - Pull request [#1306](https://github.com/rubygems/rubygems/pull/1306) by Tim Blair. + Pull request [#1306](https://github.com/ruby/rubygems/pull/1306) by Tim Blair. * Emit a warning on SRV resolve failure. - Pull request [#1023](https://github.com/rubygems/rubygems/pull/1023) by Ivan Kuchin. + Pull request [#1023](https://github.com/ruby/rubygems/pull/1023) by Ivan Kuchin. * Allow duplicate dependencies between runtime and development. - Pull request [#1032](https://github.com/rubygems/rubygems/pull/1032) by Murray Steele. + Pull request [#1032](https://github.com/ruby/rubygems/pull/1032) by Murray Steele. * The gem env command now shows the user installation directory. - Pull request [#1343](https://github.com/rubygems/rubygems/pull/1343) by Luis Sagastume. + Pull request [#1343](https://github.com/ruby/rubygems/pull/1343) by Luis Sagastume. * The Gem::Platform#=== method now treats a nil cpu arch the same as 'universal'. - Pull request [#1356](https://github.com/rubygems/rubygems/pull/1356) by Daniel Berger. + Pull request [#1356](https://github.com/ruby/rubygems/pull/1356) by Daniel Berger. * Improved memory performance in Gem::Specification.traverse. Pull request - [#1188](https://github.com/rubygems/rubygems/pull/1188) by Aaron Patterson. -* RubyGems packages now support symlinks. Pull request [#1209](https://github.com/rubygems/rubygems/pull/1209) by Samuel E. + [#1188](https://github.com/ruby/rubygems/pull/1188) by Aaron Patterson. +* RubyGems packages now support symlinks. Pull request [#1209](https://github.com/ruby/rubygems/pull/1209) by Samuel E. Giddins. * RubyGems no longer outputs mkmf.log if it does not exist. Pull request - [#1222](https://github.com/rubygems/rubygems/pull/1222) by Andrew Hooker. -* Added Bitrig platform. Pull request [#1233](https://github.com/rubygems/rubygems/pull/1233) by John C. Vernaleo. + [#1222](https://github.com/ruby/rubygems/pull/1222) by Andrew Hooker. +* Added Bitrig platform. Pull request [#1233](https://github.com/ruby/rubygems/pull/1233) by John C. Vernaleo. * Improved error message for first-time RubyGems developers. Pull request - [#1241](https://github.com/rubygems/rubygems/pull/1241) by André Arko + [#1241](https://github.com/ruby/rubygems/pull/1241) by André Arko * Improved performance of Gem::Specification#load with cached specs. Pull - request [#1297](https://github.com/rubygems/rubygems/pull/1297) by Samuel E. Giddins. -* Gem::RemoteFetcher allows users to set HTTP headers. Pull request [#1363](https://github.com/rubygems/rubygems/pull/1363) by + request [#1297](https://github.com/ruby/rubygems/pull/1297) by Samuel E. Giddins. +* Gem::RemoteFetcher allows users to set HTTP headers. Pull request [#1363](https://github.com/ruby/rubygems/pull/1363) by Agis Anastasopoulos. ### Bug fixes: * Fixed Rake homepage url in example for Gem::Specification#homepage. - Pull request [#1171](https://github.com/rubygems/rubygems/pull/1171) by Arthur Nogueira Neves + Pull request [#1171](https://github.com/ruby/rubygems/pull/1171) by Arthur Nogueira Neves * Don't crash if partially uninstalled gem can't be found. - Pull request [#1283](https://github.com/rubygems/rubygems/pull/1283) by Cezary Baginski. + Pull request [#1283](https://github.com/ruby/rubygems/pull/1283) by Cezary Baginski. * Test warning cleanup. - Pull request [#1298](https://github.com/rubygems/rubygems/pull/1298) by Samuel E. Giddins. + Pull request [#1298](https://github.com/ruby/rubygems/pull/1298) by Samuel E. Giddins. * Documentation fix for GemDependencyAPI. - Pull request [#1308](https://github.com/rubygems/rubygems/pull/1308) by Michael Papis. + Pull request [#1308](https://github.com/ruby/rubygems/pull/1308) by Michael Papis. * Fetcher now ignores ENOLCK errors in single threaded environments. This handles an issue with gem installation on NFS as best we can. Addresses issue #1176 by Ryan Moore. - Pull request [#1327](https://github.com/rubygems/rubygems/pull/1327) by Daniel Berger. + Pull request [#1327](https://github.com/ruby/rubygems/pull/1327) by Daniel Berger. * Fix some path quoting issues in the test suite. - Pull request [#1328](https://github.com/rubygems/rubygems/pull/1328) by Gavin Miller. + Pull request [#1328](https://github.com/ruby/rubygems/pull/1328) by Gavin Miller. * Fix NoMethodError in running ruby processes when gems are uninstalled. - Pull request [#1332](https://github.com/rubygems/rubygems/pull/1332) by Peter Drake. + Pull request [#1332](https://github.com/ruby/rubygems/pull/1332) by Peter Drake. * Fixed a potential NoMethodError for gem cleanup. - Pull request [#1333](https://github.com/rubygems/rubygems/pull/1333) by Peter Drake. + Pull request [#1333](https://github.com/ruby/rubygems/pull/1333) by Peter Drake. * Fixed gem help bug. - Issue #1352 reported by bogem, pull request [#1357](https://github.com/rubygems/rubygems/pull/1357) by Luis Sagastume. -* Remove temporary directories after tests finish. Pull request [#1181](https://github.com/rubygems/rubygems/pull/1181) by + Issue #1352 reported by bogem, pull request [#1357](https://github.com/ruby/rubygems/pull/1357) by Luis Sagastume. +* Remove temporary directories after tests finish. Pull request [#1181](https://github.com/ruby/rubygems/pull/1181) by Nobuyoshi Nokada. -* Update links in RubyGems documentation. Pull request [#1185](https://github.com/rubygems/rubygems/pull/1185) by Darío Hereñú. -* Prerelease gem executables can now be run. Pull request [#1186](https://github.com/rubygems/rubygems/pull/1186) by Samuel E. +* Update links in RubyGems documentation. Pull request [#1185](https://github.com/ruby/rubygems/pull/1185) by Darío Hereñú. +* Prerelease gem executables can now be run. Pull request [#1186](https://github.com/ruby/rubygems/pull/1186) by Samuel E. Giddins. -* Updated RubyGems travis-ci ruby versions. Pull request [#1187](https://github.com/rubygems/rubygems/pull/1187) by Samuel E. +* Updated RubyGems travis-ci ruby versions. Pull request [#1187](https://github.com/ruby/rubygems/pull/1187) by Samuel E. Giddins. -* Fixed release date of RubyGems 2.4.6. Pull request [#1190](https://github.com/rubygems/rubygems/pull/1190) by Frieder +* Fixed release date of RubyGems 2.4.6. Pull request [#1190](https://github.com/ruby/rubygems/pull/1190) by Frieder Bluemle. -* Fixed bugs in gem activation. Pull request [#1202](https://github.com/rubygems/rubygems/pull/1202) by Miklós Fazekas. -* Fixed documentation for `gem list`. Pull request [#1228](https://github.com/rubygems/rubygems/pull/1228) by Godfrey Chan. -* Fixed #1200 history entry. Pull request [#1234](https://github.com/rubygems/rubygems/pull/1234) by Marc Siegel. +* Fixed bugs in gem activation. Pull request [#1202](https://github.com/ruby/rubygems/pull/1202) by Miklós Fazekas. +* Fixed documentation for `gem list`. Pull request [#1228](https://github.com/ruby/rubygems/pull/1228) by Godfrey Chan. +* Fixed #1200 history entry. Pull request [#1234](https://github.com/ruby/rubygems/pull/1234) by Marc Siegel. * Fixed synchronization issue when resetting the Gem::Specification gem list. - Pull request [#1239](https://github.com/rubygems/rubygems/pull/1239) by Samuel E. Giddins. -* Fixed running tests in parallel. Pull request [#1257](https://github.com/rubygems/rubygems/pull/1257) by SHIBATA Hiroshi. + Pull request [#1239](https://github.com/ruby/rubygems/pull/1239) by Samuel E. Giddins. +* Fixed running tests in parallel. Pull request [#1257](https://github.com/ruby/rubygems/pull/1257) by SHIBATA Hiroshi. * Fixed running tests with `--program-prefix` or `--program-suffix` for ruby. - Pull request [#1258](https://github.com/rubygems/rubygems/pull/1258) by Shane Gibbs. -* Fixed Gem::Specification#to_yaml. Pull request [#1262](https://github.com/rubygems/rubygems/pull/1262) by Hiroaki Izu. + Pull request [#1258](https://github.com/ruby/rubygems/pull/1258) by Shane Gibbs. +* Fixed Gem::Specification#to_yaml. Pull request [#1262](https://github.com/ruby/rubygems/pull/1262) by Hiroaki Izu. * Fixed taintedness of Gem::Specification#raw_require_paths. Pull request - [#1268](https://github.com/rubygems/rubygems/pull/1268) by Sam Ruby. -* Fixed sorting of platforms when installing gems. Pull request [#1271](https://github.com/rubygems/rubygems/pull/1271) by + [#1268](https://github.com/ruby/rubygems/pull/1268) by Sam Ruby. +* Fixed sorting of platforms when installing gems. Pull request [#1271](https://github.com/ruby/rubygems/pull/1271) by nonsequitur. * Use `--no-document` over deprecated documentation options when installing - dependencies on travis. Pull request [#1272](https://github.com/rubygems/rubygems/pull/1272) by takiy33. -* Improved support for IPv6 addresses in URIs. Pull request [#1275](https://github.com/rubygems/rubygems/pull/1275) by Joe + dependencies on travis. Pull request [#1272](https://github.com/ruby/rubygems/pull/1272) by takiy33. +* Improved support for IPv6 addresses in URIs. Pull request [#1275](https://github.com/ruby/rubygems/pull/1275) by Joe Rafaniello. * Spec validation no longer crashes if a file does not exist. Pull request - [#1278](https://github.com/rubygems/rubygems/pull/1278) by Samuel E. Giddins. -* Gems can now be installed within `rescue`. Pull request [#1282](https://github.com/rubygems/rubygems/pull/1282) by Samuel E. + [#1278](https://github.com/ruby/rubygems/pull/1278) by Samuel E. Giddins. +* Gems can now be installed within `rescue`. Pull request [#1282](https://github.com/ruby/rubygems/pull/1282) by Samuel E. Giddins. * Increased Diffie-Hellman key size for tests for modern OpenSSL. Pull - request [#1290](https://github.com/rubygems/rubygems/pull/1290) by Vít Ondruch. -* RubyGems handles invalid config files better. Pull request [#1367](https://github.com/rubygems/rubygems/pull/1367) by Agis + request [#1290](https://github.com/ruby/rubygems/pull/1290) by Vít Ondruch. +* RubyGems handles invalid config files better. Pull request [#1367](https://github.com/ruby/rubygems/pull/1367) by Agis Anastasopoulos. ## 2.4.8 / 2015-06-08 @@ -3871,33 +3871,33 @@ Security fixes: Issue #1141 by Jakub Jirutka. * Moved extension directory after require_paths to fix missing constant bugs in some gems with C extensions. Issue #784 by André Arko, pull request - [#1137](https://github.com/rubygems/rubygems/pull/1137) by Barry Allard. + [#1137](https://github.com/ruby/rubygems/pull/1137) by Barry Allard. * Use Gem::Dependency#requirement when adding a dependency to an existing - dependency instance. Pull request [#1101](https://github.com/rubygems/rubygems/pull/1101) by Josh Cheek. + dependency instance. Pull request [#1101](https://github.com/ruby/rubygems/pull/1101) by Josh Cheek. * Fixed warning of shadowed local variable in Gem::Specification. Pull request - [#1109](https://github.com/rubygems/rubygems/pull/1109) by Rohit Arondekar + [#1109](https://github.com/ruby/rubygems/pull/1109) by Rohit Arondekar * Gem::Requirement should always sort requirements before coercion to Hash. - Pull request [#1139](https://github.com/rubygems/rubygems/pull/1139) by Eito Katagiri. + Pull request [#1139](https://github.com/ruby/rubygems/pull/1139) by Eito Katagiri. * The `gem open` command should change the current working directory before - opening the editor. Pull request [#1142](https://github.com/rubygems/rubygems/pull/1142) by Alex Wood. + opening the editor. Pull request [#1142](https://github.com/ruby/rubygems/pull/1142) by Alex Wood. * Ensure quotes are stripped from the Windows launcher script used to install - gems. Pull request [#1115](https://github.com/rubygems/rubygems/pull/1115) by Youngjun Song. + gems. Pull request [#1115](https://github.com/ruby/rubygems/pull/1115) by Youngjun Song. * Fixed errors when writing to NFS to to 0444 files. Issue #1161 by Emmanuel Hadoux. -* Removed dead code in Gem::StreamUI. Pull request [#1117](https://github.com/rubygems/rubygems/pull/1117) by mediaslave24. -* Fixed typos. Pull request [#1096](https://github.com/rubygems/rubygems/pull/1096) by hakeda. -* Relaxed CMake dependency for RHEL 6 and CentOS 6. Pull request [#1124](https://github.com/rubygems/rubygems/pull/1124) by Vít +* Removed dead code in Gem::StreamUI. Pull request [#1117](https://github.com/ruby/rubygems/pull/1117) by mediaslave24. +* Fixed typos. Pull request [#1096](https://github.com/ruby/rubygems/pull/1096) by hakeda. +* Relaxed CMake dependency for RHEL 6 and CentOS 6. Pull request [#1124](https://github.com/ruby/rubygems/pull/1124) by Vít Ondruch. -* Relaxed Psych dependency. Pull request [#1128](https://github.com/rubygems/rubygems/pull/1128) by Vít Ondruch. +* Relaxed Psych dependency. Pull request [#1128](https://github.com/ruby/rubygems/pull/1128) by Vít Ondruch. ## 2.4.5 / 2014-12-03 ### Bug fixes: * Improved speed of requiring gems. (Around 25% for a 60 gem test). Pull - request [#1060](https://github.com/rubygems/rubygems/pull/1060) by unak. + request [#1060](https://github.com/ruby/rubygems/pull/1060) by unak. * RubyGems no longer attempts to look up gems remotely with the --local flag. - Pull request [#1084](https://github.com/rubygems/rubygems/pull/1084) by Jeremy Evans. + Pull request [#1084](https://github.com/ruby/rubygems/pull/1084) by Jeremy Evans. * Executable stubs use the correct gem version when RUBYGEMS_GEMDEPS is active. Issue #1072 by Michael Kaiser-Nyman. * Fixed handling of pinned gems in lockfiles with versions. Issue #1078 by @@ -3906,30 +3906,30 @@ Security fixes: * Fixed handling of platforms retrieved from the dependencies API. Issue #1058 and patch suggestion by tux-mind. * RubyGems now suggests a copy-pasteable `gem pristine` command when - extensions are missing. Pull request [#1057](https://github.com/rubygems/rubygems/pull/1057) by Shannon Skipper. -* Improved errors for long file names when packaging. Pull request [#1016](https://github.com/rubygems/rubygems/pull/1016) by + extensions are missing. Pull request [#1057](https://github.com/ruby/rubygems/pull/1057) by Shannon Skipper. +* Improved errors for long file names when packaging. Pull request [#1016](https://github.com/ruby/rubygems/pull/1016) by Piotrek Bator. -* `gem pristine` now skips gems cannot be found remotely. Pull request [#1064](https://github.com/rubygems/rubygems/pull/1064) +* `gem pristine` now skips gems cannot be found remotely. Pull request [#1064](https://github.com/ruby/rubygems/pull/1064) by Tuomas Kareinen. -* `gem pristine` now caches gems to the proper directory. Pull request [#1064](https://github.com/rubygems/rubygems/pull/1064) +* `gem pristine` now caches gems to the proper directory. Pull request [#1064](https://github.com/ruby/rubygems/pull/1064) by Tuomas Kareinen. -* `gem pristine` now skips bundled gems properly. Pull request [#1064](https://github.com/rubygems/rubygems/pull/1064) by +* `gem pristine` now skips bundled gems properly. Pull request [#1064](https://github.com/ruby/rubygems/pull/1064) by Tuomas Kareinen. -* Improved interoperability of Vagrant with RubyGems. Pull request [#1057](https://github.com/rubygems/rubygems/pull/1057) by +* Improved interoperability of Vagrant with RubyGems. Pull request [#1057](https://github.com/ruby/rubygems/pull/1057) by Vít Ondruch. * Renamed CONTRIBUTING to CONTRIBUTING.rdoc to allow markup. Pull request - [#1090](https://github.com/rubygems/rubygems/pull/1090) by Roberto Miranda. + [#1090](https://github.com/ruby/rubygems/pull/1090) by Roberto Miranda. * Switched from #partition to #reject as only one collection is used. Pull - request [#1074](https://github.com/rubygems/rubygems/pull/1074) by Tuomas Kareinen. + request [#1074](https://github.com/ruby/rubygems/pull/1074) by Tuomas Kareinen. * Fixed installation of gems on systems using memory-mapped files. Pull - request [#1038](https://github.com/rubygems/rubygems/pull/1038) by Justin Li. -* Fixed bug in Gem::Text#min3 where `a == b < c`. Pull request [#1026](https://github.com/rubygems/rubygems/pull/1026) by + request [#1038](https://github.com/ruby/rubygems/pull/1038) by Justin Li. +* Fixed bug in Gem::Text#min3 where `a == b < c`. Pull request [#1026](https://github.com/ruby/rubygems/pull/1026) by fortissimo1997. * Fixed uninitialized variable warning in BasicSpecification. Pull request - [#1019](https://github.com/rubygems/rubygems/pull/1019) by Piotr Szotkowski. + [#1019](https://github.com/ruby/rubygems/pull/1019) by Piotr Szotkowski. * Removed unneeded exception handling for cyclic dependencies. Pull request - [#1043](https://github.com/rubygems/rubygems/pull/1043) by Jens Wille. -* Fixed grouped expression warning. Pull request [#1081](https://github.com/rubygems/rubygems/pull/1081) by André Arko. + [#1043](https://github.com/ruby/rubygems/pull/1043) by Jens Wille. +* Fixed grouped expression warning. Pull request [#1081](https://github.com/ruby/rubygems/pull/1081) by André Arko. * Fixed handling of platforms when writing lockfiles. ## 2.4.4 / 2014-11-12 @@ -3943,8 +3943,8 @@ Security fixes: ### Bug fixes: -* Fix redefine MirrorCommand issue. Pull request [#1044](https://github.com/rubygems/rubygems/pull/1044) by @akr. -* Fix typo in platform= docs. Pull request [#1048](https://github.com/rubygems/rubygems/pull/1048) by @jasonrclark +* Fix redefine MirrorCommand issue. Pull request [#1044](https://github.com/ruby/rubygems/pull/1044) by @akr. +* Fix typo in platform= docs. Pull request [#1048](https://github.com/ruby/rubygems/pull/1048) by @jasonrclark * Add root SSL certificates for upcoming certificate change. Fixes #1050 by Protosac @@ -3961,16 +3961,16 @@ This release was sponsored by Ruby Central. * Lockfiles will no longer be truncated upon resolution errors. * Fixed messaging for `gem owner -a`. Issue #1004 by Aaron Patterson, Ryan Davis. -* Removed meaningless ensure. Pull request [#1003](https://github.com/rubygems/rubygems/pull/1003) by gogotanaka. -* Improved wording of --source option help. Pull request [#989](https://github.com/rubygems/rubygems/pull/989) by Jason Clark. +* Removed meaningless ensure. Pull request [#1003](https://github.com/ruby/rubygems/pull/1003) by gogotanaka. +* Improved wording of --source option help. Pull request [#989](https://github.com/ruby/rubygems/pull/989) by Jason Clark. * Empty build_info files are now ignored. Issue #903 by Adan Alvarado. * Gem::Installer ignores dependency checks when installing development dependencies. Issue #994 by Jens Willie. * `gem update` now continues after dependency errors. Issue #993 by aaronchi. * RubyGems no longer warns about semantic version dependencies for the 0.x - range. Issue #987 by Jeff Felchner, pull request [#1006](https://github.com/rubygems/rubygems/pull/1006) by Hsing-Hui Hsu. + range. Issue #987 by Jeff Felchner, pull request [#1006](https://github.com/ruby/rubygems/pull/1006) by Hsing-Hui Hsu. * Added minimal lock to allow multithread installation of gems. Issue #982 - and pull request [#1005](https://github.com/rubygems/rubygems/pull/1005) by Yorick Peterse + and pull request [#1005](https://github.com/ruby/rubygems/pull/1005) by Yorick Peterse * RubyGems now considers prerelease dependencies as it did in earlier versions when --prerelease is given. Issue #990 by Jeremy Tryba. * Updated capitalization in README. Issue #1010 by Ben Bodenmiller. @@ -3978,7 +3978,7 @@ This release was sponsored by Ruby Central. * Fixed windows stub script generation for Cygwin. Issue #1000 by Brett DiFrischia. * Allow gem bindir and ruby.exe to live in separate directories. Pull request - [#942](https://github.com/rubygems/rubygems/pull/942) by Ian Flynn. + [#942](https://github.com/ruby/rubygems/pull/942) by Ian Flynn. * Fixed handling of gemspec in gem dependencies files to match Bundler behavior. Issue #1020 by Michal Papis. * Fixed `gem update` when updating to prereleases. Issue #1028 by Santiago @@ -3998,10 +3998,10 @@ This release was sponsored by Ruby Central. ### Enhancements: * The contents command now supports a --show-install-dir option that shows - only the directory the gem is installed in. Feature request [#966](https://github.com/rubygems/rubygems/pull/966) by Akinori + only the directory the gem is installed in. Feature request [#966](https://github.com/ruby/rubygems/pull/966) by Akinori MUSHA. * Added a --build-root option to the install command for packagers. Pull - request [#965](https://github.com/rubygems/rubygems/pull/965) by Marcus Rückert. + request [#965](https://github.com/ruby/rubygems/pull/965) by Marcus Rückert. * Added vendor gem support to RubyGems. Package managers may now install gems in Gem.vendor_dir with the --vendor option to gem install. Issue #943 by Marcus Rückert. @@ -4020,34 +4020,34 @@ This release was sponsored by Ruby Central. Bug #941 by Michael Kaiser-Nyman. * Added open to list of builtin commands (`gem open` now works). Reported by Espen Antonsen. -* `gem open` now works with command-line editors. Pull request [#962](https://github.com/rubygems/rubygems/pull/962) by Tim +* `gem open` now works with command-line editors. Pull request [#962](https://github.com/ruby/rubygems/pull/962) by Tim Pope. -* `gem install -g` now respects `--conservative`. Pull request [#950](https://github.com/rubygems/rubygems/pull/950) by Jeremy +* `gem install -g` now respects `--conservative`. Pull request [#950](https://github.com/ruby/rubygems/pull/950) by Jeremy Evans. * RubyGems releases announcements now now include checksums. Bug #939 by Alexander E. Fischer. * RubyGems now expands ~ in $PATH when checking if installed executables will - be runnable. Pull request [#945](https://github.com/rubygems/rubygems/pull/945) by Alex Talker. + be runnable. Pull request [#945](https://github.com/ruby/rubygems/pull/945) by Alex Talker. * Fixed `gem install -g --explain`. Issue #947 by Luis Lavena. Patch by Hsing-Hui Hsu. -* RubyGems locks less during gem activation. Pull request [#951](https://github.com/rubygems/rubygems/pull/951) by Aaron +* RubyGems locks less during gem activation. Pull request [#951](https://github.com/ruby/rubygems/pull/951) by Aaron Patterson and Justin Searls, #969 by Jeremy Tryba. -* Kernel#gem is now thread-safe. Pull request [#967](https://github.com/rubygems/rubygems/pull/967) by Aaron Patterson. +* Kernel#gem is now thread-safe. Pull request [#967](https://github.com/ruby/rubygems/pull/967) by Aaron Patterson. * RubyGems now handles spaces in directory names for some parts of extension - building. Pull request [#949](https://github.com/rubygems/rubygems/pull/949) by Tristan Hill. + building. Pull request [#949](https://github.com/ruby/rubygems/pull/949) by Tristan Hill. * RubyGems no longer defines an empty Date class. Pull Request #948 by Benoit Daloze. * RubyGems respects --document options for `gem update` again. Bug 946 by jonforums. Patch by Hsing-Hui Hsu. * RubyGems generates documentation again with --ignore-dependencies. Bug #961 by Pulfer. -* RubyGems can install extensions across partitions now. Pull request [#970](https://github.com/rubygems/rubygems/pull/970) by +* RubyGems can install extensions across partitions now. Pull request [#970](https://github.com/ruby/rubygems/pull/970) by Michael Scherer. * `-s` is now short for `--source` which resolves an ambiguity with - --no-suggestions. Pull request [#955](https://github.com/rubygems/rubygems/pull/955) by Alexander Kahn. -* Added extra test for ~> for 0.0.X versions. Pull request [#958](https://github.com/rubygems/rubygems/pull/958) by Mark + --no-suggestions. Pull request [#955](https://github.com/ruby/rubygems/pull/955) by Alexander Kahn. +* Added extra test for ~> for 0.0.X versions. Pull request [#958](https://github.com/ruby/rubygems/pull/958) by Mark Lorenz. -* Fixed typo in gem updated help. Pull request [#952](https://github.com/rubygems/rubygems/pull/952) by Per Modin. +* Fixed typo in gem updated help. Pull request [#952](https://github.com/ruby/rubygems/pull/952) by Per Modin. * Clarified that the gem description should not be excessively long. Part of bug #956 by Renier Morales. * Hid documentation of outdated test_files related methods in Specification. @@ -4062,59 +4062,59 @@ This release was sponsored by Ruby Central. * Added the `open` command which allows you to inspect the source of a gem using your editor. - Issue #789 by Mike Perham. Pull request [#804](https://github.com/rubygems/rubygems/pull/804) by Vitali F. + Issue #789 by Mike Perham. Pull request [#804](https://github.com/ruby/rubygems/pull/804) by Vitali F. * The `update` command shows a summary of which gems were and were not updated. Issue #544 by Mark D. Blackwell. - Pull request [#777](https://github.com/rubygems/rubygems/pull/777) by Tejas Bubane. -* Improved "could not find 'gem'" error reporting. Pull request [#913](https://github.com/rubygems/rubygems/pull/913) by + Pull request [#777](https://github.com/ruby/rubygems/pull/777) by Tejas Bubane. +* Improved "could not find 'gem'" error reporting. Pull request [#913](https://github.com/ruby/rubygems/pull/913) by Richard Schneeman. * Gem.use_gemdeps now accepts an argument specifying the path of the gem dependencies file. When the file is not found an ArgumentError is raised. * Writing a .lock file for a gem dependencies file is now controlled by the - --[no-]lock option. Pull request [#774](https://github.com/rubygems/rubygems/pull/774) by Jeremy Evans. + --[no-]lock option. Pull request [#774](https://github.com/ruby/rubygems/pull/774) by Jeremy Evans. * Suggestion of alternate names and spelling corrections during install can be suppressed with the --no-suggestions option. Issue #867 by Jimmy Cuadra. -* Added mswin64 support. Pull request [#881](https://github.com/rubygems/rubygems/pull/881) by U. Nakamura. +* Added mswin64 support. Pull request [#881](https://github.com/ruby/rubygems/pull/881) by U. Nakamura. * A gem is installable from an IO again (as in RubyGems 1.8.x and older). - Pull request [#716](https://github.com/rubygems/rubygems/pull/716) by Xavier Shay. + Pull request [#716](https://github.com/ruby/rubygems/pull/716) by Xavier Shay. * RubyGems no longer attempts to build extensions during activation. Instead a warning is issued instructing you to run `gem pristine` which will build the extensions for the current platform. Issue #796 by dunric. * Added Gem::UserInteraction#verbose which prints when the --verbose option is - given. Pull request [#811](https://github.com/rubygems/rubygems/pull/811) by Aaron Patterson. + given. Pull request [#811](https://github.com/ruby/rubygems/pull/811) by Aaron Patterson. * RubyGems can now fetch gems from private repositories using S3. Pull - request [#856](https://github.com/rubygems/rubygems/pull/856) by Brian Palmer. + request [#856](https://github.com/ruby/rubygems/pull/856) by Brian Palmer. * Added Gem::ConflictError subclass of Gem::LoadError so you can distinguish - conflicts from other problems. Pull request [#841](https://github.com/rubygems/rubygems/pull/841) by Aaron Patterson. -* Cleaned up unneeded load_yaml bootstrapping in Rakefile. Pull request [#815](https://github.com/rubygems/rubygems/pull/815) + conflicts from other problems. Pull request [#841](https://github.com/ruby/rubygems/pull/841) by Aaron Patterson. +* Cleaned up unneeded load_yaml bootstrapping in Rakefile. Pull request [#815](https://github.com/ruby/rubygems/pull/815) by Zachary Scott. -* Improved performance of conflict resolution. Pull request [#842](https://github.com/rubygems/rubygems/pull/842) by Aaron +* Improved performance of conflict resolution. Pull request [#842](https://github.com/ruby/rubygems/pull/842) by Aaron Patterson. * Add documentation of "~> 0" to Gem::Version. Issue #896 by Aaron Suggs. -* Added CONTRIBUTING file. Pull request [#849](https://github.com/rubygems/rubygems/pull/849) by Mark Turner. +* Added CONTRIBUTING file. Pull request [#849](https://github.com/ruby/rubygems/pull/849) by Mark Turner. * Allow use of bindir in windows_stub_script in .bat - Pull request [#818](https://github.com/rubygems/rubygems/pull/818) by @unak and @nobu + Pull request [#818](https://github.com/ruby/rubygems/pull/818) by @unak and @nobu * Use native File::PATH_SEPARATOR and remove $ before gem env on - Gem::Dependency#to_specs. Pull request [#915](https://github.com/rubygems/rubygems/pull/915) by @parkr -* RubyGems recommends SPDX IDs for licenses now. Pull request [#917](https://github.com/rubygems/rubygems/pull/917) by + Gem::Dependency#to_specs. Pull request [#915](https://github.com/ruby/rubygems/pull/915) by @parkr +* RubyGems recommends SPDX IDs for licenses now. Pull request [#917](https://github.com/ruby/rubygems/pull/917) by Benjamin Fleischer. ### Bug fixes: * RubyGems now only fetches the latest specs to find misspellings which speeds - up gem suggestions. Pull request [#808](https://github.com/rubygems/rubygems/pull/808) by Aaron Patterson. + up gem suggestions. Pull request [#808](https://github.com/ruby/rubygems/pull/808) by Aaron Patterson. * The given .gem is installed again when multiple versions of the same gem exist in the current directory. Bug #875 by Prem Sichanugrist. * Local gems are preferred by name over remote gems again. Bug #834 by jonforums. -* RubyGems can install local prerelease gems again. Pull request [#866](https://github.com/rubygems/rubygems/pull/866) by +* RubyGems can install local prerelease gems again. Pull request [#866](https://github.com/ruby/rubygems/pull/866) by Aaron Patterson. Issue #813 by André Arko. * RubyGems installs development dependencies correctly again. Issue #893 by Jens Wille. * RubyGems only installs prerelease versions when they are requested again. Issue #853 by Seth Vargo, special thanks to Zachary Scott and Ben Moss. Issue #884 by Nathaniel Bibler. -* Fixed RubyGems list and search command help. Pull request [#905](https://github.com/rubygems/rubygems/pull/905) and #928 by +* Fixed RubyGems list and search command help. Pull request [#905](https://github.com/ruby/rubygems/pull/905) and #928 by Gabriel Gilder. * The list of gems to uninstall is always sorted now. Bug #918 by postmodern. * The update command only updates exactly matching gem names now. Bug #919 by @@ -4143,39 +4143,39 @@ This release was sponsored by Ruby Central. by Noah Luck Easterly. * The environment command now shows the system configuration directory where the all-users gemrc lives. Bug #827 by Ben Langfeld. -* Improved speed of conflict checking when activating gems. Pull request [#843](https://github.com/rubygems/rubygems/pull/843) +* Improved speed of conflict checking when activating gems. Pull request [#843](https://github.com/ruby/rubygems/pull/843) by Aaron Patterson. * Improved speed of levenshtein distance for gem suggestion misspellings. Pull requests #809, #812 by Aaron Patterson. -* Restored persistent connections. Pull request [#869](https://github.com/rubygems/rubygems/pull/869) by Aaron Patterson. -* Reduced requests when fetching gems with the bundler API. Pull request [#773](https://github.com/rubygems/rubygems/pull/773) +* Restored persistent connections. Pull request [#869](https://github.com/ruby/rubygems/pull/869) by Aaron Patterson. +* Reduced requests when fetching gems with the bundler API. Pull request [#773](https://github.com/ruby/rubygems/pull/773) by Charlie Somerville. * Reduced dependency prefetching to improve install speed. Pull requests #871, #872 by Matthew Draper. * RubyGems now avoids net/http auto-proxy detection. Issue #824 by HINOHARA Hiroshi. * Removed conversion of Gem::List (used for debugging installs) to unless - necessary. Pull request [#870](https://github.com/rubygems/rubygems/pull/870) by Aaron Patterson. + necessary. Pull request [#870](https://github.com/ruby/rubygems/pull/870) by Aaron Patterson. * RubyGems now prints release notes from the current release. Bug #814 by André Arko. * RubyGems allows installation of unsigned gems again with -P MediumSecurity and lower. Bug #859 by Justin S. Collins. -* Fixed typo in Jim Weirich's name. Ruby pull request [#577](https://github.com/rubygems/rubygems/pull/577) by Mo Khan. -* Fixed typo in Gem.datadir documentation. Pull request [#868](https://github.com/rubygems/rubygems/pull/868) by Patrick +* Fixed typo in Jim Weirich's name. Ruby pull request [#577](https://github.com/ruby/rubygems/pull/577) by Mo Khan. +* Fixed typo in Gem.datadir documentation. Pull request [#868](https://github.com/ruby/rubygems/pull/868) by Patrick Jones. -* Fixed File.exists? warnings. Pull request [#829](https://github.com/rubygems/rubygems/pull/829) by SHIBATA Hiroshi. +* Fixed File.exists? warnings. Pull request [#829](https://github.com/ruby/rubygems/pull/829) by SHIBATA Hiroshi. * Fixed show_release_notes test for LANG=C. Issue #862 by Luis Lavena. * Fixed Gem::Package from IO tests on windows. Patch from issue #861 by Luis Lavena. * Check for nil extensions as BasicSpecification does not initialize them. - Pull request [#882](https://github.com/rubygems/rubygems/pull/882) by André Arko. + Pull request [#882](https://github.com/ruby/rubygems/pull/882) by André Arko. * Fixed Gem::BasicSpecification#require_paths receives a String for - @require_paths. Pull request [#904](https://github.com/rubygems/rubygems/pull/904) by @danielpclark + @require_paths. Pull request [#904](https://github.com/ruby/rubygems/pull/904) by @danielpclark * Fixed circular require warnings. Bug #908 by Zachary Scott. * Gem::Specification#require_paths can no longer accidentally be an Array. Pull requests #904, #909 by Daniel P. Clark. * Don't build extensions if `build_dir/extensions` isn't writable. - Pull request [#912](https://github.com/rubygems/rubygems/pull/912) by @dunric + Pull request [#912](https://github.com/ruby/rubygems/pull/912) by @dunric * Gem::BasicSpecification#require_paths respects default_ext_dir_for now. Bug #852 by Vít Ondruch. @@ -4206,21 +4206,21 @@ This release was sponsored by Ruby Central. * Fixed ruby tests when BASERUBY is not set. Patch for #778 by Nobuyoshi Nakada. * Removed double requests in RemoteFetcher#cache_update_path to improve remote - install speed. Pull request [#772](https://github.com/rubygems/rubygems/pull/772) by Charlie Somerville. + install speed. Pull request [#772](https://github.com/ruby/rubygems/pull/772) by Charlie Somerville. * The mkmf.log is now placed next to gem_make.out when building extensions. * `gem install -g --local` no longer accesses the network. Bug #776 by Jeremy Evans. * RubyGems now correctly handles URL passwords with encoded characters. Pull - request [#781](https://github.com/rubygems/rubygems/pull/781) by Brian Fletcher. -* RubyGems now correctly escapes URL characters. Pull request [#788](https://github.com/rubygems/rubygems/pull/788) by Brian + request [#781](https://github.com/ruby/rubygems/pull/781) by Brian Fletcher. +* RubyGems now correctly escapes URL characters. Pull request [#788](https://github.com/ruby/rubygems/pull/788) by Brian Fletcher. * RubyGems can now unpack tar files where the type flag is not given. Pull - request [#790](https://github.com/rubygems/rubygems/pull/790) by Cody Russell. + request [#790](https://github.com/ruby/rubygems/pull/790) by Cody Russell. * Typo corrections. Pull request ruby/ruby#506 by windwiny. * RubyGems now uses both the default certificates and ssl_ca_cert instead of - one or the other. Pull request [#795](https://github.com/rubygems/rubygems/pull/795) by zebardy. + one or the other. Pull request [#795](https://github.com/ruby/rubygems/pull/795) by zebardy. * RubyGems can now use the bundler API against hosted gem servers in a - directory. Pull request [#801](https://github.com/rubygems/rubygems/pull/801) by Brian Fletcher. + directory. Pull request [#801](https://github.com/ruby/rubygems/pull/801) by Brian Fletcher. * RubyGems bin stubs now ignore non-versions. This allows RubyGems bin stubs to list file names like "_foo_". Issue #799 by Postmodern. * Restored behavior of Gem::Version::new when subclassed. Issue #805 by @@ -4233,12 +4233,12 @@ This release was sponsored by Ruby Central. * Platforms in the Gemfile.lock GEM section are now handled correctly. Bug #767 by Diego Viola. * RubyGems now displays which gem couldn't be uninstalled from the home - directory. Pull request [#757](https://github.com/rubygems/rubygems/pull/757) by Michal Papis. -* Removed unused method Gem::Resolver#find_conflict_state. Pull request [#759](https://github.com/rubygems/rubygems/pull/759) + directory. Pull request [#757](https://github.com/ruby/rubygems/pull/757) by Michal Papis. +* Removed unused method Gem::Resolver#find_conflict_state. Pull request [#759](https://github.com/ruby/rubygems/pull/759) by Smit Shah. * Fixed installing gems from local files without dependencies. Issue #760 by - Arash Mousavi, pull request [#764](https://github.com/rubygems/rubygems/pull/764) by Tim Moore. -* Removed TODO about syntax that works in Ruby 1.8.7. Pull request [#765](https://github.com/rubygems/rubygems/pull/765) by + Arash Mousavi, pull request [#764](https://github.com/ruby/rubygems/pull/764) by Tim Moore. +* Removed TODO about syntax that works in Ruby 1.8.7. Pull request [#765](https://github.com/ruby/rubygems/pull/765) by Benjamin Fleischer. * Switched Gem.ruby_api_version to use RbConfig::CONFIG['ruby_version'] which has the same value but is overridable by packagers through @@ -4252,7 +4252,7 @@ This release was sponsored by Ruby Central. * Gem.read_binary can read read-only files again. This caused file:// repositories to stop working. Bug #761 by John Anderson. * Fixed specification file sorting for Ruby 1.8.7 compatibility. Pull - request [#763](https://github.com/rubygems/rubygems/pull/763) by James Mead + request [#763](https://github.com/ruby/rubygems/pull/763) by James Mead ## 2.2.0 / 2013-12-26 @@ -4285,17 +4285,17 @@ RubyGems as it was prepared for the 2.2.0 release. * RubyGems checks the 'allowed_push_host' metadata value when pushing a gem to prevent an accidental push to a public repository (such as rubygems.org). If you have private gems you should set this value in your gem specification - metadata. Pull request [#603](https://github.com/rubygems/rubygems/pull/603) by Seamus Abshere. -* `gem list` now shows results for multiple arguments. Pull request [#604](https://github.com/rubygems/rubygems/pull/604) by + metadata. Pull request [#603](https://github.com/ruby/rubygems/pull/603) by Seamus Abshere. +* `gem list` now shows results for multiple arguments. Pull request [#604](https://github.com/ruby/rubygems/pull/604) by Zach Rabinovich. * `gem pristine --extensions` will restore only gems with extensions. Issue #619 by Postmodern. -* Gem::Specification#files is now sorted. Pull request [#612](https://github.com/rubygems/rubygems/pull/612) by Justin George. +* Gem::Specification#files is now sorted. Pull request [#612](https://github.com/ruby/rubygems/pull/612) by Justin George. * For `gem list` and friends, "LOCAL" and "REMOTE" headers are omitted if only local or remote gem information is requested with --quiet. Pull - request [#615](https://github.com/rubygems/rubygems/pull/615) by Michal Papis. + request [#615](https://github.com/ruby/rubygems/pull/615) by Michal Papis. * Added Gem::Specification#full_require_paths which is like require_paths, but - returns a fully-qualified results. Pull request [#632](https://github.com/rubygems/rubygems/pull/632) by Vít Ondruch. + returns a fully-qualified results. Pull request [#632](https://github.com/ruby/rubygems/pull/632) by Vít Ondruch. * RubyGems now looks for the https_proxy environment variable for https:// sources. RubyGems will fall back to http_proxy if there is no https_proxy. Issue #610 by mkristian. @@ -4313,7 +4313,7 @@ RubyGems as it was prepared for the 2.2.0 release. * When using `gem install -g`, RubyGems now detects the presence of an Isolate, Gemfile or gem.deps.rb file. * Added Gem::StubSpecification#stubbed? to help determine if a user should run - `gem pristine` to speed up gem loading. Pull request [#694](https://github.com/rubygems/rubygems/pull/694) and #701 by Jon + `gem pristine` to speed up gem loading. Pull request [#694](https://github.com/ruby/rubygems/pull/694) and #701 by Jon Leighton. * RubyGems now warns when a gem has a pessimistic version dependency that may be too strict. @@ -4321,9 +4321,9 @@ RubyGems as it was prepared for the 2.2.0 release. * RubyGems now raises an exception when a dependency for a gem is defined twice. * Marked the license specification attribute as recommended. Pull request - [#713](https://github.com/rubygems/rubygems/pull/713) by Benjamin Fleischer. + [#713](https://github.com/ruby/rubygems/pull/713) by Benjamin Fleischer. * RubyGems uses io/console instead of `stty` when available. Pull request - [#740](https://github.com/rubygems/rubygems/pull/740) by Nobuyoshi Nakada + [#740](https://github.com/ruby/rubygems/pull/740) by Nobuyoshi Nakada * Relaxed Gem.ruby tests for platforms that override where ruby lives. Pull Request #755 by strzibny. @@ -4331,14 +4331,14 @@ RubyGems as it was prepared for the 2.2.0 release. * RubyGems now returns an error status when any file given to `gem which` cannot be found. Ruby bug #9004 by Eugene Vilensky. -* Fixed command escaping when building rake extensions. Pull request [#721](https://github.com/rubygems/rubygems/pull/721) by +* Fixed command escaping when building rake extensions. Pull request [#721](https://github.com/ruby/rubygems/pull/721) by Dmitry Ratnikov. * Fixed uninstallation of gems when GEM_HOME is a relative directory. Issue #708 by Ryan Davis. * Default gems are now ignored by Gem::Validator#alien. Issue #717 by David Bahar. * Fixed typos in RubyGems. Pull requests #723, #725, #731 by Akira Matsuda, - pull request [#736](https://github.com/rubygems/rubygems/pull/736) by Leo Gallucci, pull request [#746](https://github.com/rubygems/rubygems/pull/746) by DV Suresh. + pull request [#736](https://github.com/ruby/rubygems/pull/736) by Leo Gallucci, pull request [#746](https://github.com/ruby/rubygems/pull/746) by DV Suresh. * RubyGems now holds exclusive locks on cached gem files to prevent incorrect updates. Pull Request #737 by Smit Shah * Improved speed of `gem install --ignore-dependencies`. Patch by Terence @@ -4400,11 +4400,11 @@ RubyGems as it was prepared for the 2.2.0 release. ### Bug fixes: -* `gem sources --list` now displays a list of sources. Pull request [#672](https://github.com/rubygems/rubygems/pull/672) by +* `gem sources --list` now displays a list of sources. Pull request [#672](https://github.com/ruby/rubygems/pull/672) by Nathan Marley. * RubyGems no longer alters Gem::Specification.dirs when installing. Pull Request #670 by Vít Ondruch -* Use RFC 2616-compatible time in HTTP headers. Pull request [#655](https://github.com/rubygems/rubygems/pull/655) by Larry +* Use RFC 2616-compatible time in HTTP headers. Pull request [#655](https://github.com/ruby/rubygems/pull/655) by Larry Marburger. * RubyGems now gives a more descriptive message for missing licenses on validation. Issue #656 by Markus Heiler. @@ -4420,9 +4420,9 @@ RubyGems as it was prepared for the 2.2.0 release. * Remove redundant built-in certificates not needed for https://rubygems.org Fixes #654 by Vít Ondruch. * Added test for missing certificates for https://s3.amazonaws.com or - https://rubygems.org. Pull request [#673](https://github.com/rubygems/rubygems/pull/673) by Hannes Georg. + https://rubygems.org. Pull request [#673](https://github.com/ruby/rubygems/pull/673) by Hannes Georg. * RubyGems now allows a Pathname for Kernel#require like the built-in - Kernel#require. Pull request [#663](https://github.com/rubygems/rubygems/pull/663) by Aaron Patterson. + Kernel#require. Pull request [#663](https://github.com/ruby/rubygems/pull/663) by Aaron Patterson. * Required rbconfig in Gem::ConfigFile for Ruby 1.9.1 compatibility. (Ruby 1.9.1 is no longer receiving security fixes, so please update to a newer version.) Issue #676 by Michal Papis. Issue wayneeseguin/rvm#2262 by @@ -4458,7 +4458,7 @@ Security fixes: ### Bug fixes: * Restore concurrent requires following the fix for ruby bug #8374. Pull - request [#637](https://github.com/rubygems/rubygems/pull/637) and issue #640 by Charles Nutter. + request [#637](https://github.com/ruby/rubygems/pull/637) and issue #640 by Charles Nutter. * Gems with extensions are now installed correctly when the --install-dir option is used. Issue #642 by Lin Jen-Shin. * Gem fetch now fetches the newest (not oldest) gem when --version is given. @@ -4506,7 +4506,7 @@ Security fixes: gemcutter API. Pull Request #462 and issue #461 by Hugo Lopes Tavares * Added --abort-on-dependent to `gem uninstall`. This will abort instead of asking to uninstall a gem that is depended upon by another gem. Pull - request [#549](https://github.com/rubygems/rubygems/pull/549) by Philip Arndt. + request [#549](https://github.com/ruby/rubygems/pull/549) by Philip Arndt. * RubyGems no longer alters Gem::Specification.dirs when installing. Based on Pull Request #452 by Vít Ondruch * RubyGems uses ENV['MAKE'] or ENV['make'] over rbconfig.rb's make if present. @@ -4518,21 +4518,21 @@ Security fixes: Klabnik. * RubyGems indicates when a .gem's content is corrupt while verifying. Bug #519 by William T Nelson. -* Refactored common installer setup. Pull request [#520](https://github.com/rubygems/rubygems/pull/520) by Gastón Ramos -* Moved activation tests to Gem::Specification. Pull request [#521](https://github.com/rubygems/rubygems/pull/521) by Gastón +* Refactored common installer setup. Pull request [#520](https://github.com/ruby/rubygems/pull/520) by Gastón Ramos +* Moved activation tests to Gem::Specification. Pull request [#521](https://github.com/ruby/rubygems/pull/521) by Gastón Ramos * When a --version option with a prerelease version is given RubyGems automatically enables prerelease versions but only the last version is used. If the first version is a prerelease version this is no longer sticky unless an explicit --[no-]prerelease was also given. Fixes part of #531. -* RubyGems now supports an SSL client certificate. Pull request [#550](https://github.com/rubygems/rubygems/pull/550) by +* RubyGems now supports an SSL client certificate. Pull request [#550](https://github.com/ruby/rubygems/pull/550) by Robert Kenny. -* RubyGems now suggests how to fix permission errors. Pull request [#553](https://github.com/rubygems/rubygems/pull/553) by +* RubyGems now suggests how to fix permission errors. Pull request [#553](https://github.com/ruby/rubygems/pull/553) by Odin Dutton. * Added support for installing a gem as default gems for alternate ruby - implementations. Pull request [#566](https://github.com/rubygems/rubygems/pull/566) by Charles Nutter. + implementations. Pull request [#566](https://github.com/ruby/rubygems/pull/566) by Charles Nutter. * Improved performance of Gem::Specification#load by caching the loaded - gemspec. Pull request [#569](https://github.com/rubygems/rubygems/pull/569) by Charlie Somerville. + gemspec. Pull request [#569](https://github.com/ruby/rubygems/pull/569) by Charlie Somerville. * RubyGems now warns when an unsigned gem is verified if -P was given during installation even if the security policy allows unsigned gems and warns when an untrusted certificate is seen even if the security policy allows @@ -4542,13 +4542,13 @@ Security fixes: --env-[no-]shebang. Issue #579 by Paul Annesley. * RubyGems can now run its tests without OpenSSL. Ruby Bug #8557 by nobu. * Improved performance by caching Gem::Version objects and avoiding - method_missing in Gem::Specification. Pull request [#447](https://github.com/rubygems/rubygems/pull/447) by Jon Leighton. -* Files in a .gem now preserve their modification times. Pull request [#582](https://github.com/rubygems/rubygems/pull/582) by + method_missing in Gem::Specification. Pull request [#447](https://github.com/ruby/rubygems/pull/447) by Jon Leighton. +* Files in a .gem now preserve their modification times. Pull request [#582](https://github.com/ruby/rubygems/pull/582) by Jesse Bowes * Improved speed of looking up dependencies in SpecFetcher through - Array#bsearch (when present). Pull request [#595](https://github.com/rubygems/rubygems/pull/595) by Andras Suller + Array#bsearch (when present). Pull request [#595](https://github.com/ruby/rubygems/pull/595) by Andras Suller * Added `--all` option to `gem uninstall` which removes all gems in GEM_HOME. - Pull request [#584](https://github.com/rubygems/rubygems/pull/584) by Shannon Skipper. + Pull request [#584](https://github.com/ruby/rubygems/pull/584) by Shannon Skipper. * Added Gem.find_latest_files which is equivalent to Gem.find_files but only returns matching files from the latest version of each gem. Issue #186 by Ryan Davis. @@ -4560,9 +4560,9 @@ Security fixes: * rubygems_plugin.rb files are now only loaded from the latest installed gem. * Fixed Gem.clear_paths when Security is defined at top-level. Pull request - [#625](https://github.com/rubygems/rubygems/pull/625) by elarkin + [#625](https://github.com/ruby/rubygems/pull/625) by elarkin * Fixed credential creation for `gem push` when `--host` is not given. Pull - request [#622](https://github.com/rubygems/rubygems/pull/622) by Arthur Nogueira Neves + request [#622](https://github.com/ruby/rubygems/pull/622) by Arthur Nogueira Neves ## 2.0.17 / 2015-06-08 @@ -4623,9 +4623,9 @@ Security fixes: * Remove redundant built-in certificates not needed for https://rubygems.org Fixes #654 by Vít Ondruch. * Added test for missing certificates for https://s3.amazonaws.com or - https://rubygems.org. Pull request [#673](https://github.com/rubygems/rubygems/pull/673) by Hannes Georg. + https://rubygems.org. Pull request [#673](https://github.com/ruby/rubygems/pull/673) by Hannes Georg. * RubyGems now allows a Pathname for Kernel#require like the built-in - Kernel#require. Pull request [#663](https://github.com/rubygems/rubygems/pull/663) by Aaron Patterson. + Kernel#require. Pull request [#663](https://github.com/ruby/rubygems/pull/663) by Aaron Patterson. * Required rbconfig in Gem::ConfigFile for Ruby 1.9.1 compatibility. (Ruby 1.9.1 is no longer receiving security fixes, so please update to a newer version.) Issue #676 by Michal Papis. Issue wayneeseguin/rvm#2262 by @@ -4647,7 +4647,7 @@ Security fixes: * Gem fetch now fetches the newest (not oldest) gem when --version is given. Issue #643 by Brian Shirai. * Fixed credential creation for `gem push` when `--host` is not given. Pull - request [#622](https://github.com/rubygems/rubygems/pull/622) by Arthur Nogueira Neves + request [#622](https://github.com/ruby/rubygems/pull/622) by Arthur Nogueira Neves ## 2.0.8 / 2013-09-09 @@ -4661,7 +4661,7 @@ Security fixes: ### Bug fixes: * Fixed Gem.clear_paths when Security is defined at top-level. Pull request - [#625](https://github.com/rubygems/rubygems/pull/625) by elarkin + [#625](https://github.com/ruby/rubygems/pull/625) by elarkin ## 2.0.7 / 2013-08-15 @@ -4670,7 +4670,7 @@ Security fixes: * Extensions may now be built in parallel (therefore gems may be installed in parallel). Bug #607 by Hemant Kumar. * Changed broken link to RubyGems Bookshelf to point to RubyGems guides. Ruby - pull request [#369](https://github.com/rubygems/rubygems/pull/369) by 謝致邦. + pull request [#369](https://github.com/ruby/rubygems/pull/369) by 謝致邦. * Fixed various test failures due to platform differences or poor tests. Patches by Yui Naruse and Koichi Sasada. * Fixed documentation for Kernel#require. @@ -4703,7 +4703,7 @@ Security fixes: * Fixed pushing gems with the default host. Bug #495 by Utkarsh Kukreti * Improved unhelpful error message from `gem owner --remove`. Bug #488 by Steve Klabnik -* Fixed typo in `gem spec` help. Pull request [#563](https://github.com/rubygems/rubygems/pull/563) by oooooooo +* Fixed typo in `gem spec` help. Pull request [#563](https://github.com/ruby/rubygems/pull/563) by oooooooo * Fixed creation of build_info with --install-dir. Bug #457 by Vít Ondruch. * RubyGems converts non-string dependency names to strings now. Bug #505 by Terence Lee @@ -4712,18 +4712,18 @@ Security fixes: every file from the gem. This improves the performance of gem installation on some systems. Pull Request #556 by Grzesiek Kolodziejczyk * Removed surprise search term anchoring in `gem search` to restore 1.8-like - search behavior while still defaulting to --remote. Pull request [#562](https://github.com/rubygems/rubygems/pull/562) by + search behavior while still defaulting to --remote. Pull request [#562](https://github.com/ruby/rubygems/pull/562) by Ben Bleything -* Fixed handling of DESTDIR when building extensions. Pull request [#573](https://github.com/rubygems/rubygems/pull/573) by +* Fixed handling of DESTDIR when building extensions. Pull request [#573](https://github.com/ruby/rubygems/pull/573) by Akinori MUSHA * Fixed documentation of `gem pristine` defaults (--all is not a default). - Pull request [#577](https://github.com/rubygems/rubygems/pull/577) by Shannon Skipper -* Fixed a windows extension-building test failure. Pull request [#575](https://github.com/rubygems/rubygems/pull/575) by + Pull request [#577](https://github.com/ruby/rubygems/pull/577) by Shannon Skipper +* Fixed a windows extension-building test failure. Pull request [#575](https://github.com/ruby/rubygems/pull/575) by Hiroshi Shirosaki * Fixed issue with `gem update` where it would attempt to use a Version instead of a Requirement to find the latest gem. Fixes #570 by Nick Cox. * RubyGems now ignores an empty but set RUBYGEMS_HOST environment variable. - Based on pull request [#558](https://github.com/rubygems/rubygems/pull/558) by Robin Dupret. + Based on pull request [#558](https://github.com/ruby/rubygems/pull/558) by Robin Dupret. * Removed duplicate creation of gem subdirectories in Gem::DependencyInstaller. Pull Request #456 by Vít Ondruch * RubyGems now works with Ruby built with `--with-ruby-version=''`. Pull @@ -4731,7 +4731,7 @@ Security fixes: * Fixed race condition when two threads require the same gem. Ruby bug report #8374 by Joel VanderWerf * Cleaned up siteconf between extension build and extension install. Pull - request [#587](https://github.com/rubygems/rubygems/pull/587) by Dominic Cleal + request [#587](https://github.com/ruby/rubygems/pull/587) by Dominic Cleal * Fix deprecation warnings when converting gemspecs to yaml. Ruby commit r41148 by Yui Naruse @@ -4749,7 +4749,7 @@ Security fixes: * Use the absolute path to the generated siteconf in case the extension changes directories to run extconf.rb (like memcached). Fixes #498 by Chris Morris. - * Fixed default gem key and cert locations. Pull request [#511](https://github.com/rubygems/rubygems/pull/511) by Samuel + * Fixed default gem key and cert locations. Pull request [#511](https://github.com/ruby/rubygems/pull/511) by Samuel Cochran. ## 2.0.2 / 2013-03-06 @@ -4772,7 +4772,7 @@ Security fixes: * "Done installing documentation" is no longer displayed when documentation generation is disabled. Fixes bug #469 by Jeff Sandberg * The existing executable check now respects --format-executable. Pull - request [#471](https://github.com/rubygems/rubygems/pull/471) by Jeremy Evans. + request [#471](https://github.com/ruby/rubygems/pull/471) by Jeremy Evans. * RubyGems no longer creates gem subdirectories when fetching gems. Fixes #482 by Loren Segal. * RubyGems does not require OpenSSL like RubyGems 1.8, but still prefers it. @@ -4843,7 +4843,7 @@ Changes since RubyGems 1.8.25 (including past pre-releases): Skipper. * Gem::DependencyInstaller now passes build_args down to the installer. Pull Request #412 by Sam Rawlins. - * Added a cmake builder. Pull request [#265](https://github.com/rubygems/rubygems/pull/265) by Allan Espinosa. + * Added a cmake builder. Pull request [#265](https://github.com/ruby/rubygems/pull/265) by Allan Espinosa. * Removed rubyforge page from gem list output * Added --only-executables option to `gem pristine`. Fixes #326 * Added -I flag for 'gem query' to exclude installed items @@ -4973,7 +4973,7 @@ Changes since RubyGems 2.0.0.rc.2: ## 2.0.0.preview2.2 / 2012-12-14 ### Enhancements: - * Added a cmake builder. Pull request [#265](https://github.com/rubygems/rubygems/pull/265) by Allan Espinosa. + * Added a cmake builder. Pull request [#265](https://github.com/ruby/rubygems/pull/265) by Allan Espinosa. * Removed rubyforge page from gem list output ### Bug fixes: @@ -5139,7 +5139,7 @@ $SAFE=1. There is no functional difference compared to Ruby 2.0.0.preview2 * Remove redundant built-in certificates not needed for https://rubygems.org Fixes #654 by Vít Ondruch. * Added test for missing certificates for https://s3.amazonaws.com or - https://rubygems.org. Pull request [#673](https://github.com/rubygems/rubygems/pull/673) by Hannes Georg. + https://rubygems.org. Pull request [#673](https://github.com/ruby/rubygems/pull/673) by Hannes Georg. ## 1.8.27 / 2013-09-24 @@ -5334,7 +5334,7 @@ Security fixes: RubyGems 1.8.10 contains a security fix that prevents malicious gems from executing code when their specification is loaded. See -https://github.com/rubygems/rubygems/pull/165 for details. +https://github.com/ruby/rubygems/pull/165 for details. ### Bug fixes: diff --git a/README.md b/README.md index 3451f98261c1..4e5235d0ac1e 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ creating a new gem, security practices and other resources at https://guides.rub Got a bug and you're not sure? You're sure you have a bug, but don't know what to do next? In any case, let us know about it! The best place for letting the RubyGems team know about bugs or problems you're having is -[on the RubyGems issues page at GitHub](https://github.com/rubygems/rubygems/issues). +[on the RubyGems issues page at GitHub](https://github.com/ruby/rubygems/issues). ### Bundler Compatibility @@ -114,4 +114,4 @@ If you'd like to contribute to RubyGems, that's awesome, and we <3 you. Check ou ### Code of Conduct -Everyone interacting in the RubyGems project’s codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [contributor code of conduct](https://github.com/rubygems/rubygems/blob/master/CODE_OF_CONDUCT.md). +Everyone interacting in the RubyGems project’s codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [contributor code of conduct](https://github.com/ruby/rubygems/blob/master/CODE_OF_CONDUCT.md). diff --git a/bundler/CHANGELOG.md b/bundler/CHANGELOG.md index 7ed29d012061..0363eaa5c3c7 100644 --- a/bundler/CHANGELOG.md +++ b/bundler/CHANGELOG.md @@ -4,2021 +4,2021 @@ ### Enhancements: - - Improve error message when the same source is specified through `gemspec` and `path` [#8460](https://github.com/rubygems/rubygems/pull/8460) - - Raise an error in frozen mode if some registry gems have empty checksums [#8888](https://github.com/rubygems/rubygems/pull/8888) - - Bump vendored thor to 1.4.0 [#8883](https://github.com/rubygems/rubygems/pull/8883) - - Delay default path and global cache changes to Bundler 5 [#8867](https://github.com/rubygems/rubygems/pull/8867) - - Fix spacing in bundle gem newgem.gemspec.tt [#8865](https://github.com/rubygems/rubygems/pull/8865) + - Improve error message when the same source is specified through `gemspec` and `path` [#8460](https://github.com/ruby/rubygems/pull/8460) + - Raise an error in frozen mode if some registry gems have empty checksums [#8888](https://github.com/ruby/rubygems/pull/8888) + - Bump vendored thor to 1.4.0 [#8883](https://github.com/ruby/rubygems/pull/8883) + - Delay default path and global cache changes to Bundler 5 [#8867](https://github.com/ruby/rubygems/pull/8867) + - Fix spacing in bundle gem newgem.gemspec.tt [#8865](https://github.com/ruby/rubygems/pull/8865) ### Bug fixes: - - Fix `bundle cache --frozen` and `bundle cache --no-prune` not printing a deprecation message [#8926](https://github.com/rubygems/rubygems/pull/8926) - - Fix local installation incorrectly forced if there's a `vendor/cache` directory and frozen mode is set [#8925](https://github.com/rubygems/rubygems/pull/8925) - - Fix `bundle lock --update ` with `--lockfile` flag updating all gems [#8922](https://github.com/rubygems/rubygems/pull/8922) - - Fix `bundle show --verbose` and recommend it as an alternative to `bundle show --outdated` [#8915](https://github.com/rubygems/rubygems/pull/8915) - - Fix `bundle cache --no-all` not printing a deprecation warning [#8912](https://github.com/rubygems/rubygems/pull/8912) - - Fix `bundle update foo` unable to update foo in an edge case [#8897](https://github.com/rubygems/rubygems/pull/8897) - - Fix Bundler printing more flags than actually passed in verbose mode [#8914](https://github.com/rubygems/rubygems/pull/8914) - - Fix bundler failing to install sorbet-static in truffleruby when there's no lockfile [#8872](https://github.com/rubygems/rubygems/pull/8872) + - Fix `bundle cache --frozen` and `bundle cache --no-prune` not printing a deprecation message [#8926](https://github.com/ruby/rubygems/pull/8926) + - Fix local installation incorrectly forced if there's a `vendor/cache` directory and frozen mode is set [#8925](https://github.com/ruby/rubygems/pull/8925) + - Fix `bundle lock --update ` with `--lockfile` flag updating all gems [#8922](https://github.com/ruby/rubygems/pull/8922) + - Fix `bundle show --verbose` and recommend it as an alternative to `bundle show --outdated` [#8915](https://github.com/ruby/rubygems/pull/8915) + - Fix `bundle cache --no-all` not printing a deprecation warning [#8912](https://github.com/ruby/rubygems/pull/8912) + - Fix `bundle update foo` unable to update foo in an edge case [#8897](https://github.com/ruby/rubygems/pull/8897) + - Fix Bundler printing more flags than actually passed in verbose mode [#8914](https://github.com/ruby/rubygems/pull/8914) + - Fix bundler failing to install sorbet-static in truffleruby when there's no lockfile [#8872](https://github.com/ruby/rubygems/pull/8872) ### Documentation: - - Improve documentation of `bundle doctor`, `bundle plugin`, and `bundle config` [#8919](https://github.com/rubygems/rubygems/pull/8919) - - Make sure all CLI flags and subcommands are documented [#8861](https://github.com/rubygems/rubygems/pull/8861) + - Improve documentation of `bundle doctor`, `bundle plugin`, and `bundle config` [#8919](https://github.com/ruby/rubygems/pull/8919) + - Make sure all CLI flags and subcommands are documented [#8861](https://github.com/ruby/rubygems/pull/8861) ## 2.7.1 (2025-07-21) ### Enhancements: - - Add some missing deprecation messages [#8844](https://github.com/rubygems/rubygems/pull/8844) + - Add some missing deprecation messages [#8844](https://github.com/ruby/rubygems/pull/8844) ### Bug fixes: - - Cancel deprecation of `--force` flag to `bundle install` and `bundle update` [#8843](https://github.com/rubygems/rubygems/pull/8843) + - Cancel deprecation of `--force` flag to `bundle install` and `bundle update` [#8843](https://github.com/ruby/rubygems/pull/8843) ### Documentation: - - Clarify documentation about new default gem installation directory in Bundler 4 [#8857](https://github.com/rubygems/rubygems/pull/8857) - - Use mailto link in Code of Conduct [#8849](https://github.com/rubygems/rubygems/pull/8849) - - Update Code of Conduct email to conduct@rubygems.org [#8848](https://github.com/rubygems/rubygems/pull/8848) - - Add missing link to `irb` repo in DEBUGGING.md [#8842](https://github.com/rubygems/rubygems/pull/8842) + - Clarify documentation about new default gem installation directory in Bundler 4 [#8857](https://github.com/ruby/rubygems/pull/8857) + - Use mailto link in Code of Conduct [#8849](https://github.com/ruby/rubygems/pull/8849) + - Update Code of Conduct email to conduct@rubygems.org [#8848](https://github.com/ruby/rubygems/pull/8848) + - Add missing link to `irb` repo in DEBUGGING.md [#8842](https://github.com/ruby/rubygems/pull/8842) ## 2.7.0 (2025-07-16) ### Breaking changes: - - Stop allowing calling `#gem` on random objects [#8819](https://github.com/rubygems/rubygems/pull/8819) - - Remove `path_relative_to_cwd` setting [#8815](https://github.com/rubygems/rubygems/pull/8815) - - Remove the `default_install_uses_path` and `auto_clean_without_path` settings [#8814](https://github.com/rubygems/rubygems/pull/8814) - - Remove `print_only_version_number` setting [#8799](https://github.com/rubygems/rubygems/pull/8799) - - Drop support for Ruby 3.1 [#8634](https://github.com/rubygems/rubygems/pull/8634) - - Raise an error if incompatible or merge if compatible when a gemspec development dep is duplicated in Gemfile [#8556](https://github.com/rubygems/rubygems/pull/8556) - - Remove MD5 digesting of compact index responses [#8530](https://github.com/rubygems/rubygems/pull/8530) - - Stop generating binstubs for Bundler itself [#8345](https://github.com/rubygems/rubygems/pull/8345) + - Stop allowing calling `#gem` on random objects [#8819](https://github.com/ruby/rubygems/pull/8819) + - Remove `path_relative_to_cwd` setting [#8815](https://github.com/ruby/rubygems/pull/8815) + - Remove the `default_install_uses_path` and `auto_clean_without_path` settings [#8814](https://github.com/ruby/rubygems/pull/8814) + - Remove `print_only_version_number` setting [#8799](https://github.com/ruby/rubygems/pull/8799) + - Drop support for Ruby 3.1 [#8634](https://github.com/ruby/rubygems/pull/8634) + - Raise an error if incompatible or merge if compatible when a gemspec development dep is duplicated in Gemfile [#8556](https://github.com/ruby/rubygems/pull/8556) + - Remove MD5 digesting of compact index responses [#8530](https://github.com/ruby/rubygems/pull/8530) + - Stop generating binstubs for Bundler itself [#8345](https://github.com/ruby/rubygems/pull/8345) ### Deprecations: - - Deprecate unused `Bundler::SpecSet` methods [#8777](https://github.com/rubygems/rubygems/pull/8777) - - Deprecate `x64-mingw32` in favour of `x64-mingw-ucrt` [#8733](https://github.com/rubygems/rubygems/pull/8733) - - Deprecate legacy windows platforms (`:mswin`, `:mingw`) in Gemfile DSL in favor of `:windows` [#8447](https://github.com/rubygems/rubygems/pull/8447) - - Deprecate `CurrentRuby#maglev?` and other related maglev methods [#8452](https://github.com/rubygems/rubygems/pull/8452) + - Deprecate unused `Bundler::SpecSet` methods [#8777](https://github.com/ruby/rubygems/pull/8777) + - Deprecate `x64-mingw32` in favour of `x64-mingw-ucrt` [#8733](https://github.com/ruby/rubygems/pull/8733) + - Deprecate legacy windows platforms (`:mswin`, `:mingw`) in Gemfile DSL in favor of `:windows` [#8447](https://github.com/ruby/rubygems/pull/8447) + - Deprecate `CurrentRuby#maglev?` and other related maglev methods [#8452](https://github.com/ruby/rubygems/pull/8452) ### Features: - - Allow simulating "Bundler 4 mode" more easily [#6472](https://github.com/rubygems/rubygems/pull/6472) + - Allow simulating "Bundler 4 mode" more easily [#6472](https://github.com/ruby/rubygems/pull/6472) ### Performance: - - Cache git sources with commit SHA refs [#8741](https://github.com/rubygems/rubygems/pull/8741) + - Cache git sources with commit SHA refs [#8741](https://github.com/ruby/rubygems/pull/8741) ### Enhancements: - - Load RubyGems extensions in the first place [#8835](https://github.com/rubygems/rubygems/pull/8835) - - Update gemspec based on provided github username when exists [#8790](https://github.com/rubygems/rubygems/pull/8790) - - Fail fast when connection errors happen [#8784](https://github.com/rubygems/rubygems/pull/8784) - - Introduce a `verbose` setting to enable verbose output for all commands [#8801](https://github.com/rubygems/rubygems/pull/8801) - - Introduce `gem.bundle` setting to run `bundle install` automatically after `bundle gem`, and make it the default [#8671](https://github.com/rubygems/rubygems/pull/8671) - - Handle `Errno::EADDRNOTAVAIL` errors gracefully [#8776](https://github.com/rubygems/rubygems/pull/8776) - - Use `persist-credentials: false` in workflow generated by `bundle gem` [#8779](https://github.com/rubygems/rubygems/pull/8779) - - Recognize JRuby loaded from a classloader, not just any JAR [#8567](https://github.com/rubygems/rubygems/pull/8567) - - Validate lockfile dependencies with bundle install [#8666](https://github.com/rubygems/rubygems/pull/8666) - - Ignore local specifications if they have incorrect dependencies [#8647](https://github.com/rubygems/rubygems/pull/8647) - - Move most of `Bundler::GemHelpers` to `Gem::Platform` [#8703](https://github.com/rubygems/rubygems/pull/8703) - - Improve `spec.files` in the `.gemspec` template [#8732](https://github.com/rubygems/rubygems/pull/8732) - -### Bug fixes: - - - Fix double `bundle gem` prompts [#8825](https://github.com/rubygems/rubygems/pull/8825) - - Fix date displayed in `bundle version` help text [#8806](https://github.com/rubygems/rubygems/pull/8806) - - Fix `bundle console` printing bug report template on `NameError` during require [#8804](https://github.com/rubygems/rubygems/pull/8804) - - Fix `Bundler.original_env['GEM_HOME']` when Bundler is trampolined [#8781](https://github.com/rubygems/rubygems/pull/8781) - - Fix rdoc issues when running `gem` commands in a `bundle exec` context [#8770](https://github.com/rubygems/rubygems/pull/8770) - - Never ignore gems from path sources during activation [#8766](https://github.com/rubygems/rubygems/pull/8766) - - Fix `bundle install` after pinning a git source with subgems [#8745](https://github.com/rubygems/rubygems/pull/8745) - - Let `bundle update --bundler` upgrade bundler even if restarts are disabled [#8729](https://github.com/rubygems/rubygems/pull/8729) + - Load RubyGems extensions in the first place [#8835](https://github.com/ruby/rubygems/pull/8835) + - Update gemspec based on provided github username when exists [#8790](https://github.com/ruby/rubygems/pull/8790) + - Fail fast when connection errors happen [#8784](https://github.com/ruby/rubygems/pull/8784) + - Introduce a `verbose` setting to enable verbose output for all commands [#8801](https://github.com/ruby/rubygems/pull/8801) + - Introduce `gem.bundle` setting to run `bundle install` automatically after `bundle gem`, and make it the default [#8671](https://github.com/ruby/rubygems/pull/8671) + - Handle `Errno::EADDRNOTAVAIL` errors gracefully [#8776](https://github.com/ruby/rubygems/pull/8776) + - Use `persist-credentials: false` in workflow generated by `bundle gem` [#8779](https://github.com/ruby/rubygems/pull/8779) + - Recognize JRuby loaded from a classloader, not just any JAR [#8567](https://github.com/ruby/rubygems/pull/8567) + - Validate lockfile dependencies with bundle install [#8666](https://github.com/ruby/rubygems/pull/8666) + - Ignore local specifications if they have incorrect dependencies [#8647](https://github.com/ruby/rubygems/pull/8647) + - Move most of `Bundler::GemHelpers` to `Gem::Platform` [#8703](https://github.com/ruby/rubygems/pull/8703) + - Improve `spec.files` in the `.gemspec` template [#8732](https://github.com/ruby/rubygems/pull/8732) + +### Bug fixes: + + - Fix double `bundle gem` prompts [#8825](https://github.com/ruby/rubygems/pull/8825) + - Fix date displayed in `bundle version` help text [#8806](https://github.com/ruby/rubygems/pull/8806) + - Fix `bundle console` printing bug report template on `NameError` during require [#8804](https://github.com/ruby/rubygems/pull/8804) + - Fix `Bundler.original_env['GEM_HOME']` when Bundler is trampolined [#8781](https://github.com/ruby/rubygems/pull/8781) + - Fix rdoc issues when running `gem` commands in a `bundle exec` context [#8770](https://github.com/ruby/rubygems/pull/8770) + - Never ignore gems from path sources during activation [#8766](https://github.com/ruby/rubygems/pull/8766) + - Fix `bundle install` after pinning a git source with subgems [#8745](https://github.com/ruby/rubygems/pull/8745) + - Let `bundle update --bundler` upgrade bundler even if restarts are disabled [#8729](https://github.com/ruby/rubygems/pull/8729) ### Documentation: - - Rewrite and complete UPGRADING document [#8817](https://github.com/rubygems/rubygems/pull/8817) - - Document that `global_gem_cache` also caches compiled extensions [#8823](https://github.com/rubygems/rubygems/pull/8823) - - Add `default_cli_command` documentation [#8816](https://github.com/rubygems/rubygems/pull/8816) - - Add a root CONTRIBUTING.md file [#8822](https://github.com/rubygems/rubygems/pull/8822) - - Add a SECURITY.md file [#8812](https://github.com/rubygems/rubygems/pull/8812) - - Update man pages for the `bundle doctor ssl` subcommand [#8803](https://github.com/rubygems/rubygems/pull/8803) - - Remove duplicate documentation for `--changelog` flag [#8756](https://github.com/rubygems/rubygems/pull/8756) - - Fix typos making some lists in documentation render incorrectly [#8759](https://github.com/rubygems/rubygems/pull/8759) - - Fix heading ranks in documentation [#8711](https://github.com/rubygems/rubygems/pull/8711) - - Clarify differences between `frozen` and `deployment` settings, and other bundle-config documentation improvements [#8715](https://github.com/rubygems/rubygems/pull/8715) + - Rewrite and complete UPGRADING document [#8817](https://github.com/ruby/rubygems/pull/8817) + - Document that `global_gem_cache` also caches compiled extensions [#8823](https://github.com/ruby/rubygems/pull/8823) + - Add `default_cli_command` documentation [#8816](https://github.com/ruby/rubygems/pull/8816) + - Add a root CONTRIBUTING.md file [#8822](https://github.com/ruby/rubygems/pull/8822) + - Add a SECURITY.md file [#8812](https://github.com/ruby/rubygems/pull/8812) + - Update man pages for the `bundle doctor ssl` subcommand [#8803](https://github.com/ruby/rubygems/pull/8803) + - Remove duplicate documentation for `--changelog` flag [#8756](https://github.com/ruby/rubygems/pull/8756) + - Fix typos making some lists in documentation render incorrectly [#8759](https://github.com/ruby/rubygems/pull/8759) + - Fix heading ranks in documentation [#8711](https://github.com/ruby/rubygems/pull/8711) + - Clarify differences between `frozen` and `deployment` settings, and other bundle-config documentation improvements [#8715](https://github.com/ruby/rubygems/pull/8715) ## 2.6.9 (2025-05-13) ### Enhancements: - - Fix doctor command parsing of otool output [#8665](https://github.com/rubygems/rubygems/pull/8665) - - Add SSL troubleshooting to `bundle doctor` [#8624](https://github.com/rubygems/rubygems/pull/8624) - - Let `bundle lock --normalize-platforms` remove invalid platforms [#8631](https://github.com/rubygems/rubygems/pull/8631) + - Fix doctor command parsing of otool output [#8665](https://github.com/ruby/rubygems/pull/8665) + - Add SSL troubleshooting to `bundle doctor` [#8624](https://github.com/ruby/rubygems/pull/8624) + - Let `bundle lock --normalize-platforms` remove invalid platforms [#8631](https://github.com/ruby/rubygems/pull/8631) ### Bug fixes: - - Fix `bundle lock` sometimes allowing invalid platforms into the lockfile [#8630](https://github.com/rubygems/rubygems/pull/8630) - - Fix false positive warning about insecure materialization in frozen mode [#8629](https://github.com/rubygems/rubygems/pull/8629) + - Fix `bundle lock` sometimes allowing invalid platforms into the lockfile [#8630](https://github.com/ruby/rubygems/pull/8630) + - Fix false positive warning about insecure materialization in frozen mode [#8629](https://github.com/ruby/rubygems/pull/8629) ## 2.6.8 (2025-04-13) ### Enhancements: - - Refine `bundle update --verbose` logs [#8627](https://github.com/rubygems/rubygems/pull/8627) - - Improve bug report instructions [#8607](https://github.com/rubygems/rubygems/pull/8607) + - Refine `bundle update --verbose` logs [#8627](https://github.com/ruby/rubygems/pull/8627) + - Improve bug report instructions [#8607](https://github.com/ruby/rubygems/pull/8607) ### Bug fixes: - - Fix `bundle update` crash in an edge case [#8626](https://github.com/rubygems/rubygems/pull/8626) - - Fix `bundle lock --normalize-platforms` regression [#8620](https://github.com/rubygems/rubygems/pull/8620) + - Fix `bundle update` crash in an edge case [#8626](https://github.com/ruby/rubygems/pull/8626) + - Fix `bundle lock --normalize-platforms` regression [#8620](https://github.com/ruby/rubygems/pull/8620) ## 2.6.7 (2025-04-03) ### Enhancements: - - Fix crash when server compact index API implementation only lists versions [#8594](https://github.com/rubygems/rubygems/pull/8594) - - Fix lockfile when a gem ends up accidentally under two different sources [#8579](https://github.com/rubygems/rubygems/pull/8579) - - Refuse to install and print an error in frozen mode if some entries are missing in CHECKSUMS lockfile section [#8563](https://github.com/rubygems/rubygems/pull/8563) - - Support git 2.49 [#8581](https://github.com/rubygems/rubygems/pull/8581) - - Improve wording of a few messages [#8570](https://github.com/rubygems/rubygems/pull/8570) + - Fix crash when server compact index API implementation only lists versions [#8594](https://github.com/ruby/rubygems/pull/8594) + - Fix lockfile when a gem ends up accidentally under two different sources [#8579](https://github.com/ruby/rubygems/pull/8579) + - Refuse to install and print an error in frozen mode if some entries are missing in CHECKSUMS lockfile section [#8563](https://github.com/ruby/rubygems/pull/8563) + - Support git 2.49 [#8581](https://github.com/ruby/rubygems/pull/8581) + - Improve wording of a few messages [#8570](https://github.com/ruby/rubygems/pull/8570) ### Bug fixes: - - Fix `bundle add` sometimes generating invalid lockfiles [#8586](https://github.com/rubygems/rubygems/pull/8586) + - Fix `bundle add` sometimes generating invalid lockfiles [#8586](https://github.com/ruby/rubygems/pull/8586) ### Performance: - - Implement pub_grub strategy interface [#8589](https://github.com/rubygems/rubygems/pull/8589) - - Update vendored pub_grub [#8571](https://github.com/rubygems/rubygems/pull/8571) + - Implement pub_grub strategy interface [#8589](https://github.com/ruby/rubygems/pull/8589) + - Update vendored pub_grub [#8571](https://github.com/ruby/rubygems/pull/8571) ## 2.6.6 (2025-03-13) ### Enhancements: - - Fix `ENAMETOOLONG` error when creating compact index cache [#5578](https://github.com/rubygems/rubygems/pull/5578) - - Use shorthand hash syntax for bundle add [#8547](https://github.com/rubygems/rubygems/pull/8547) - - Update vendored uri to 1.0.3 [#8534](https://github.com/rubygems/rubygems/pull/8534) - - Retry gracefully on blank partial response in compact index [#8524](https://github.com/rubygems/rubygems/pull/8524) - - Give a better error when trying to write the lock file on a read-only filesystem [#5920](https://github.com/rubygems/rubygems/pull/5920) - - Improve log messages when lockfile platforms are added [#8523](https://github.com/rubygems/rubygems/pull/8523) - - Allow noop `bundle install` to work on read-only or protected folders [#8519](https://github.com/rubygems/rubygems/pull/8519) + - Fix `ENAMETOOLONG` error when creating compact index cache [#5578](https://github.com/ruby/rubygems/pull/5578) + - Use shorthand hash syntax for bundle add [#8547](https://github.com/ruby/rubygems/pull/8547) + - Update vendored uri to 1.0.3 [#8534](https://github.com/ruby/rubygems/pull/8534) + - Retry gracefully on blank partial response in compact index [#8524](https://github.com/ruby/rubygems/pull/8524) + - Give a better error when trying to write the lock file on a read-only filesystem [#5920](https://github.com/ruby/rubygems/pull/5920) + - Improve log messages when lockfile platforms are added [#8523](https://github.com/ruby/rubygems/pull/8523) + - Allow noop `bundle install` to work on read-only or protected folders [#8519](https://github.com/ruby/rubygems/pull/8519) ### Bug fixes: - - Detect partial gem installs from a git source so that they are reinstalled on a successive run [#8539](https://github.com/rubygems/rubygems/pull/8539) - - Modify `bundle doctor` to not report issue when files aren't writable [#8520](https://github.com/rubygems/rubygems/pull/8520) + - Detect partial gem installs from a git source so that they are reinstalled on a successive run [#8539](https://github.com/ruby/rubygems/pull/8539) + - Modify `bundle doctor` to not report issue when files aren't writable [#8520](https://github.com/ruby/rubygems/pull/8520) ### Performance: - - Optimize resolution by removing an array allocation from `Candidate#<=>` [#8559](https://github.com/rubygems/rubygems/pull/8559) + - Optimize resolution by removing an array allocation from `Candidate#<=>` [#8559](https://github.com/ruby/rubygems/pull/8559) ### Documentation: - - Update docs for with/without consistency [#8555](https://github.com/rubygems/rubygems/pull/8555) - - Recommend non-deprecated methods in `bundle exec` documentation [#8537](https://github.com/rubygems/rubygems/pull/8537) - - Hint about default group when using `only` configuration option [#8536](https://github.com/rubygems/rubygems/pull/8536) + - Update docs for with/without consistency [#8555](https://github.com/ruby/rubygems/pull/8555) + - Recommend non-deprecated methods in `bundle exec` documentation [#8537](https://github.com/ruby/rubygems/pull/8537) + - Hint about default group when using `only` configuration option [#8536](https://github.com/ruby/rubygems/pull/8536) ## 2.6.5 (2025-02-20) ### Enhancements: - - Fix lockfile platforms inconveniently added on JRuby [#8494](https://github.com/rubygems/rubygems/pull/8494) + - Fix lockfile platforms inconveniently added on JRuby [#8494](https://github.com/ruby/rubygems/pull/8494) ### Bug fixes: - - Fix resolver issue due to ill-defined version ranges being created [#8503](https://github.com/rubygems/rubygems/pull/8503) - - Make sure empty gems are not reinstalled every time [#8502](https://github.com/rubygems/rubygems/pull/8502) + - Fix resolver issue due to ill-defined version ranges being created [#8503](https://github.com/ruby/rubygems/pull/8503) + - Make sure empty gems are not reinstalled every time [#8502](https://github.com/ruby/rubygems/pull/8502) ## 2.6.4 (2025-02-17) ### Enhancements: - - Make Bundler never instantiate development dependencies [#8486](https://github.com/rubygems/rubygems/pull/8486) - - Fix some invalid options to `gem` DSL not getting reported as invalid [#8480](https://github.com/rubygems/rubygems/pull/8480) - - Add `irb` to a Gemfile for a newly created gem [#8467](https://github.com/rubygems/rubygems/pull/8467) - - Auto-heal empty installation directory [#8457](https://github.com/rubygems/rubygems/pull/8457) - - Fix `bundle console` unnecessarily trying to load IRB twice [#8443](https://github.com/rubygems/rubygems/pull/8443) - - Add ruby_34 and ruby_35 as valid platform: [#8430](https://github.com/rubygems/rubygems/pull/8430) - - Consider gems under `platform: :windows` filter in Gemfile when running on Windows with ARM architecture [#8428](https://github.com/rubygems/rubygems/pull/8428) + - Make Bundler never instantiate development dependencies [#8486](https://github.com/ruby/rubygems/pull/8486) + - Fix some invalid options to `gem` DSL not getting reported as invalid [#8480](https://github.com/ruby/rubygems/pull/8480) + - Add `irb` to a Gemfile for a newly created gem [#8467](https://github.com/ruby/rubygems/pull/8467) + - Auto-heal empty installation directory [#8457](https://github.com/ruby/rubygems/pull/8457) + - Fix `bundle console` unnecessarily trying to load IRB twice [#8443](https://github.com/ruby/rubygems/pull/8443) + - Add ruby_34 and ruby_35 as valid platform: [#8430](https://github.com/ruby/rubygems/pull/8430) + - Consider gems under `platform: :windows` filter in Gemfile when running on Windows with ARM architecture [#8428](https://github.com/ruby/rubygems/pull/8428) ### Bug fixes: - - Fix regression when running `bundle update ` would sometimes downgrade a top level dependency [#8491](https://github.com/rubygems/rubygems/pull/8491) - - Fix dependency locking when Bundler finds incorrect lockfile dependencies [#8489](https://github.com/rubygems/rubygems/pull/8489) - - Raise error when lockfile is missing deps in frozen mode [#8483](https://github.com/rubygems/rubygems/pull/8483) - - Fix `bundle install --prefer-local` sometimes installing very old versions [#8484](https://github.com/rubygems/rubygems/pull/8484) - - Fix incorrect error message when running `bundle update` in frozen mode [#8481](https://github.com/rubygems/rubygems/pull/8481) - - Keep platform variants in `vendor/cache` even if incompatible with the current Ruby version [#8471](https://github.com/rubygems/rubygems/pull/8471) - - Fix `bundle console` printing bug report template incorrectly [#8436](https://github.com/rubygems/rubygems/pull/8436) - - Fix `--prefer-local` not respecting default gems [#8412](https://github.com/rubygems/rubygems/pull/8412) + - Fix regression when running `bundle update ` would sometimes downgrade a top level dependency [#8491](https://github.com/ruby/rubygems/pull/8491) + - Fix dependency locking when Bundler finds incorrect lockfile dependencies [#8489](https://github.com/ruby/rubygems/pull/8489) + - Raise error when lockfile is missing deps in frozen mode [#8483](https://github.com/ruby/rubygems/pull/8483) + - Fix `bundle install --prefer-local` sometimes installing very old versions [#8484](https://github.com/ruby/rubygems/pull/8484) + - Fix incorrect error message when running `bundle update` in frozen mode [#8481](https://github.com/ruby/rubygems/pull/8481) + - Keep platform variants in `vendor/cache` even if incompatible with the current Ruby version [#8471](https://github.com/ruby/rubygems/pull/8471) + - Fix `bundle console` printing bug report template incorrectly [#8436](https://github.com/ruby/rubygems/pull/8436) + - Fix `--prefer-local` not respecting default gems [#8412](https://github.com/ruby/rubygems/pull/8412) ### Performance: - - Improve resolution performance [#8458](https://github.com/rubygems/rubygems/pull/8458) + - Improve resolution performance [#8458](https://github.com/ruby/rubygems/pull/8458) ### Documentation: - - Fix more broken links [#8416](https://github.com/rubygems/rubygems/pull/8416) + - Fix more broken links [#8416](https://github.com/ruby/rubygems/pull/8416) ## 2.6.3 (2025-01-16) ### Enhancements: - - Don't fallback to evaluating YAML gemspecs as Ruby code [#8404](https://github.com/rubygems/rubygems/pull/8404) - - Print message when blocking on file locks [#8299](https://github.com/rubygems/rubygems/pull/8299) - - Add support for mise version manager file [#8356](https://github.com/rubygems/rubygems/pull/8356) - - Add Ruby 3.5 to Gemfile DSL platform values [#8365](https://github.com/rubygems/rubygems/pull/8365) + - Don't fallback to evaluating YAML gemspecs as Ruby code [#8404](https://github.com/ruby/rubygems/pull/8404) + - Print message when blocking on file locks [#8299](https://github.com/ruby/rubygems/pull/8299) + - Add support for mise version manager file [#8356](https://github.com/ruby/rubygems/pull/8356) + - Add Ruby 3.5 to Gemfile DSL platform values [#8365](https://github.com/ruby/rubygems/pull/8365) ### Bug fixes: - - Revert RubyGems plugins getting loaded on `Bundler.require` [#8410](https://github.com/rubygems/rubygems/pull/8410) - - Fix platform specific gems sometimes being removed from the lockfile [#8401](https://github.com/rubygems/rubygems/pull/8401) - - Serialize gemspec when caching git source [#8403](https://github.com/rubygems/rubygems/pull/8403) - - Fix crash on read-only filesystems in Ruby 3.4 [#8372](https://github.com/rubygems/rubygems/pull/8372) - - Fix `bundle outdated ` failing if not all gems are installed [#8361](https://github.com/rubygems/rubygems/pull/8361) - - Fix `bundle install` crash on Windows [#8362](https://github.com/rubygems/rubygems/pull/8362) + - Revert RubyGems plugins getting loaded on `Bundler.require` [#8410](https://github.com/ruby/rubygems/pull/8410) + - Fix platform specific gems sometimes being removed from the lockfile [#8401](https://github.com/ruby/rubygems/pull/8401) + - Serialize gemspec when caching git source [#8403](https://github.com/ruby/rubygems/pull/8403) + - Fix crash on read-only filesystems in Ruby 3.4 [#8372](https://github.com/ruby/rubygems/pull/8372) + - Fix `bundle outdated ` failing if not all gems are installed [#8361](https://github.com/ruby/rubygems/pull/8361) + - Fix `bundle install` crash on Windows [#8362](https://github.com/ruby/rubygems/pull/8362) ### Documentation: - - Fix broken links in the documents [#8389](https://github.com/rubygems/rubygems/pull/8389) + - Fix broken links in the documents [#8389](https://github.com/ruby/rubygems/pull/8389) ## 2.6.2 (2024-12-23) ### Bug fixes: - - Restart using `Process.argv0` only if `$PROGRAM_NAME` is not a script [#8343](https://github.com/rubygems/rubygems/pull/8343) + - Restart using `Process.argv0` only if `$PROGRAM_NAME` is not a script [#8343](https://github.com/ruby/rubygems/pull/8343) ### Documentation: - - Fix typo in `bundle lock` man page synopsis (`--add-checkums` → `--add-checksums`) [#8350](https://github.com/rubygems/rubygems/pull/8350) + - Fix typo in `bundle lock` man page synopsis (`--add-checkums` → `--add-checksums`) [#8350](https://github.com/ruby/rubygems/pull/8350) ## 2.6.1 (2024-12-17) ### Bug fixes: - - Fix missing `Gem::Uri.redact` on some Ruby 3.1 versions [#8337](https://github.com/rubygems/rubygems/pull/8337) - - Fix `bundle lock --add-checksums` when gems are already installed [#8326](https://github.com/rubygems/rubygems/pull/8326) + - Fix missing `Gem::Uri.redact` on some Ruby 3.1 versions [#8337](https://github.com/ruby/rubygems/pull/8337) + - Fix `bundle lock --add-checksums` when gems are already installed [#8326](https://github.com/ruby/rubygems/pull/8326) ## 2.6.0 (2024-12-16) ### Security: - - Fix gemfury credentials written to logs in verbose mode [#8283](https://github.com/rubygems/rubygems/pull/8283) - - Fix private registry credentials being written to logs [#8222](https://github.com/rubygems/rubygems/pull/8222) + - Fix gemfury credentials written to logs in verbose mode [#8283](https://github.com/ruby/rubygems/pull/8283) + - Fix private registry credentials being written to logs [#8222](https://github.com/ruby/rubygems/pull/8222) ### Breaking changes: - - Drop ruby 3.0 support [#8091](https://github.com/rubygems/rubygems/pull/8091) - - Remove client-side MD5 ETag transition from compact index client [#7677](https://github.com/rubygems/rubygems/pull/7677) + - Drop ruby 3.0 support [#8091](https://github.com/ruby/rubygems/pull/8091) + - Remove client-side MD5 ETag transition from compact index client [#7677](https://github.com/ruby/rubygems/pull/7677) ### Deprecations: - - Cancel `bundle console` deprecation [#8218](https://github.com/rubygems/rubygems/pull/8218) - - Warn when platform of installed gem differs from platform in the lockfile [#8029](https://github.com/rubygems/rubygems/pull/8029) - - Cancel deprecation of Gemfiles without a global source [#8213](https://github.com/rubygems/rubygems/pull/8213) + - Cancel `bundle console` deprecation [#8218](https://github.com/ruby/rubygems/pull/8218) + - Warn when platform of installed gem differs from platform in the lockfile [#8029](https://github.com/ruby/rubygems/pull/8029) + - Cancel deprecation of Gemfiles without a global source [#8213](https://github.com/ruby/rubygems/pull/8213) ### Features: - - Add a `lockfile_checksums` configuration to include checksums in fresh lockfiles [#8219](https://github.com/rubygems/rubygems/pull/8219) - - Add `bundle lock --add-checksums` to add checksums to an existing lockfile [#8214](https://github.com/rubygems/rubygems/pull/8214) + - Add a `lockfile_checksums` configuration to include checksums in fresh lockfiles [#8219](https://github.com/ruby/rubygems/pull/8219) + - Add `bundle lock --add-checksums` to add checksums to an existing lockfile [#8214](https://github.com/ruby/rubygems/pull/8214) ### Performance: - - Enable a couple of performance cops [#8261](https://github.com/rubygems/rubygems/pull/8261) - - Remove override of worker jobs for `bundle install --local` [#8248](https://github.com/rubygems/rubygems/pull/8248) + - Enable a couple of performance cops [#8261](https://github.com/ruby/rubygems/pull/8261) + - Remove override of worker jobs for `bundle install --local` [#8248](https://github.com/ruby/rubygems/pull/8248) ### Enhancements: - - Support `bundle exec ` when `Kernel.exec` is used under the hood [#8294](https://github.com/rubygems/rubygems/pull/8294) - - Improve working with different rubies using the same lockfile [#8251](https://github.com/rubygems/rubygems/pull/8251) - - Define a few `inspect` methods to help debugging [#8266](https://github.com/rubygems/rubygems/pull/8266) - - Include original error when openssl fails to load [#8232](https://github.com/rubygems/rubygems/pull/8232) - - Automatically fix lockfile when it's missing dependencies [#8103](https://github.com/rubygems/rubygems/pull/8103) - - Fix some JRuby warnings when using `bundler/setup` with Ruby's -w flag [#8205](https://github.com/rubygems/rubygems/pull/8205) - - Add a `--normalize-platforms` flag to `bundle lock` [#7896](https://github.com/rubygems/rubygems/pull/7896) - - Add plugin hooks for Bundler.require [#3439](https://github.com/rubygems/rubygems/pull/3439) + - Support `bundle exec ` when `Kernel.exec` is used under the hood [#8294](https://github.com/ruby/rubygems/pull/8294) + - Improve working with different rubies using the same lockfile [#8251](https://github.com/ruby/rubygems/pull/8251) + - Define a few `inspect` methods to help debugging [#8266](https://github.com/ruby/rubygems/pull/8266) + - Include original error when openssl fails to load [#8232](https://github.com/ruby/rubygems/pull/8232) + - Automatically fix lockfile when it's missing dependencies [#8103](https://github.com/ruby/rubygems/pull/8103) + - Fix some JRuby warnings when using `bundler/setup` with Ruby's -w flag [#8205](https://github.com/ruby/rubygems/pull/8205) + - Add a `--normalize-platforms` flag to `bundle lock` [#7896](https://github.com/ruby/rubygems/pull/7896) + - Add plugin hooks for Bundler.require [#3439](https://github.com/ruby/rubygems/pull/3439) ### Bug fixes: - - Fix restarting with locked version when `$PROGRAM_NAME` has been changed [#8320](https://github.com/rubygems/rubygems/pull/8320) - - Restore the previous cache format for git sources [#8296](https://github.com/rubygems/rubygems/pull/8296) - - Fix installs of subdependencies of unlocked dependencies to be conservative [#8281](https://github.com/rubygems/rubygems/pull/8281) - - Fix test task name on generated readme when using test-unit [#8291](https://github.com/rubygems/rubygems/pull/8291) - - Fix `bundle exec` executable detection on windows [#8276](https://github.com/rubygems/rubygems/pull/8276) - - Fix `bundle remove` sometimes not removing gems [#8278](https://github.com/rubygems/rubygems/pull/8278) - - Fix issue with git gems locking incorrect specs sometimes [#8269](https://github.com/rubygems/rubygems/pull/8269) + - Fix restarting with locked version when `$PROGRAM_NAME` has been changed [#8320](https://github.com/ruby/rubygems/pull/8320) + - Restore the previous cache format for git sources [#8296](https://github.com/ruby/rubygems/pull/8296) + - Fix installs of subdependencies of unlocked dependencies to be conservative [#8281](https://github.com/ruby/rubygems/pull/8281) + - Fix test task name on generated readme when using test-unit [#8291](https://github.com/ruby/rubygems/pull/8291) + - Fix `bundle exec` executable detection on windows [#8276](https://github.com/ruby/rubygems/pull/8276) + - Fix `bundle remove` sometimes not removing gems [#8278](https://github.com/ruby/rubygems/pull/8278) + - Fix issue with git gems locking incorrect specs sometimes [#8269](https://github.com/ruby/rubygems/pull/8269) ### Documentation: - - Normalize command flag documentation and make sure all flags are documented [#8313](https://github.com/rubygems/rubygems/pull/8313) - - Add missing man pages for `bundle env` and `bundle licenses` [#8315](https://github.com/rubygems/rubygems/pull/8315) - - Add man page for 'bundle issue' command [#8271](https://github.com/rubygems/rubygems/pull/8271) - - Add man page for 'bundle fund' command [#8258](https://github.com/rubygems/rubygems/pull/8258) - - Move pry-related contents to `debugging.md` [#8263](https://github.com/rubygems/rubygems/pull/8263) - - Add debugging instruction on Windows [#8236](https://github.com/rubygems/rubygems/pull/8236) - - Unify rubygems and bundler docs directory [#8159](https://github.com/rubygems/rubygems/pull/8159) + - Normalize command flag documentation and make sure all flags are documented [#8313](https://github.com/ruby/rubygems/pull/8313) + - Add missing man pages for `bundle env` and `bundle licenses` [#8315](https://github.com/ruby/rubygems/pull/8315) + - Add man page for 'bundle issue' command [#8271](https://github.com/ruby/rubygems/pull/8271) + - Add man page for 'bundle fund' command [#8258](https://github.com/ruby/rubygems/pull/8258) + - Move pry-related contents to `debugging.md` [#8263](https://github.com/ruby/rubygems/pull/8263) + - Add debugging instruction on Windows [#8236](https://github.com/ruby/rubygems/pull/8236) + - Unify rubygems and bundler docs directory [#8159](https://github.com/ruby/rubygems/pull/8159) ## 2.5.23 (2024-11-05) ### Enhancements: - - Add useful error message for plugin load [#7639](https://github.com/rubygems/rubygems/pull/7639) - - Indent github workflow steps for generated gems [#8193](https://github.com/rubygems/rubygems/pull/8193) - - Improve several permission errors [#8168](https://github.com/rubygems/rubygems/pull/8168) - - Add `bundle add` `--quiet` option [#8157](https://github.com/rubygems/rubygems/pull/8157) + - Add useful error message for plugin load [#7639](https://github.com/ruby/rubygems/pull/7639) + - Indent github workflow steps for generated gems [#8193](https://github.com/ruby/rubygems/pull/8193) + - Improve several permission errors [#8168](https://github.com/ruby/rubygems/pull/8168) + - Add `bundle add` `--quiet` option [#8157](https://github.com/ruby/rubygems/pull/8157) ### Bug fixes: - - Fix incompatible encodings error when paths with UTF-8 characters are involved [#8196](https://github.com/rubygems/rubygems/pull/8196) - - Update `--ext=rust` to support compiling the native extension from source [#7610](https://github.com/rubygems/rubygems/pull/7610) - - Print a proper error when there's a previous empty installation path with bad permissions [#8169](https://github.com/rubygems/rubygems/pull/8169) - - Fix running `bundler` (with a final `r`) in a `bundle exec` context [#8165](https://github.com/rubygems/rubygems/pull/8165) - - Handle two `gemspec` usages in same Gemfile with same dep and compatible requirements [#7999](https://github.com/rubygems/rubygems/pull/7999) - - Fix `bundle check` sometimes locking gems under the wrong source [#8148](https://github.com/rubygems/rubygems/pull/8148) + - Fix incompatible encodings error when paths with UTF-8 characters are involved [#8196](https://github.com/ruby/rubygems/pull/8196) + - Update `--ext=rust` to support compiling the native extension from source [#7610](https://github.com/ruby/rubygems/pull/7610) + - Print a proper error when there's a previous empty installation path with bad permissions [#8169](https://github.com/ruby/rubygems/pull/8169) + - Fix running `bundler` (with a final `r`) in a `bundle exec` context [#8165](https://github.com/ruby/rubygems/pull/8165) + - Handle two `gemspec` usages in same Gemfile with same dep and compatible requirements [#7999](https://github.com/ruby/rubygems/pull/7999) + - Fix `bundle check` sometimes locking gems under the wrong source [#8148](https://github.com/ruby/rubygems/pull/8148) ### Documentation: - - Remove confusing `bundle config` documentation [#8177](https://github.com/rubygems/rubygems/pull/8177) - - Rename bundler inline's `install` parameter and clarify docs [#8170](https://github.com/rubygems/rubygems/pull/8170) - - Clarify `bundle install --quiet` documentation [#8163](https://github.com/rubygems/rubygems/pull/8163) + - Remove confusing `bundle config` documentation [#8177](https://github.com/ruby/rubygems/pull/8177) + - Rename bundler inline's `install` parameter and clarify docs [#8170](https://github.com/ruby/rubygems/pull/8170) + - Clarify `bundle install --quiet` documentation [#8163](https://github.com/ruby/rubygems/pull/8163) ## 2.5.22 (2024-10-16) ### Enhancements: - - Update vendored `uri` and `net-http` [#8112](https://github.com/rubygems/rubygems/pull/8112) + - Update vendored `uri` and `net-http` [#8112](https://github.com/ruby/rubygems/pull/8112) ### Bug fixes: - - Fix bundler sometimes crashing because of trying to use a version of psych compiled for a different Ruby [#8104](https://github.com/rubygems/rubygems/pull/8104) + - Fix bundler sometimes crashing because of trying to use a version of psych compiled for a different Ruby [#8104](https://github.com/ruby/rubygems/pull/8104) ## 2.5.21 (2024-10-03) ### Bug fixes: - - Fix bug report template printed when changing a path source to a git source in frozen mode [#8079](https://github.com/rubygems/rubygems/pull/8079) - - Fix `stub.activated?` sometimes returning false after activation under bundler [#8073](https://github.com/rubygems/rubygems/pull/8073) - - Fix old cache format detection when application is not source controlled [#8076](https://github.com/rubygems/rubygems/pull/8076) - - Fix `bundler/inline` resetting ENV changes [#8059](https://github.com/rubygems/rubygems/pull/8059) + - Fix bug report template printed when changing a path source to a git source in frozen mode [#8079](https://github.com/ruby/rubygems/pull/8079) + - Fix `stub.activated?` sometimes returning false after activation under bundler [#8073](https://github.com/ruby/rubygems/pull/8073) + - Fix old cache format detection when application is not source controlled [#8076](https://github.com/ruby/rubygems/pull/8076) + - Fix `bundler/inline` resetting ENV changes [#8059](https://github.com/ruby/rubygems/pull/8059) ## 2.5.20 (2024-09-24) ### Enhancements: - - Don't try to auto-install dev versions of Bundler not available remotely [#8045](https://github.com/rubygems/rubygems/pull/8045) - - Don't try to install locked bundler when `--local` is passed [#8041](https://github.com/rubygems/rubygems/pull/8041) + - Don't try to auto-install dev versions of Bundler not available remotely [#8045](https://github.com/ruby/rubygems/pull/8045) + - Don't try to install locked bundler when `--local` is passed [#8041](https://github.com/ruby/rubygems/pull/8041) ### Bug fixes: - - Fix `bundler/inline` overwriting lockfiles [#8055](https://github.com/rubygems/rubygems/pull/8055) - - Ensure refs directory in cached git source [#8047](https://github.com/rubygems/rubygems/pull/8047) - - Fix `bundle outdated` with `--group` option [#8052](https://github.com/rubygems/rubygems/pull/8052) + - Fix `bundler/inline` overwriting lockfiles [#8055](https://github.com/ruby/rubygems/pull/8055) + - Ensure refs directory in cached git source [#8047](https://github.com/ruby/rubygems/pull/8047) + - Fix `bundle outdated` with `--group` option [#8052](https://github.com/ruby/rubygems/pull/8052) ## 2.5.19 (2024-09-18) ### Enhancements: - - Raise original errors when unexpected errors happen during Gemfile evaluation [#8003](https://github.com/rubygems/rubygems/pull/8003) - - Make an exe file executable when generating new gems [#8020](https://github.com/rubygems/rubygems/pull/8020) - - Gracefully handle gem activation conflicts in inline mode [#5535](https://github.com/rubygems/rubygems/pull/5535) - - Don't include hook templates in cached git source [#8013](https://github.com/rubygems/rubygems/pull/8013) - - Fix some errors about a previous installation folder that's unsafe to remove, when there's no need to remove it [#7985](https://github.com/rubygems/rubygems/pull/7985) - - Emit progress to stderr during `bundle outdated --parseable` [#7966](https://github.com/rubygems/rubygems/pull/7966) - - Reject unknown platforms when running `bundle lock --add-platform` [#7967](https://github.com/rubygems/rubygems/pull/7967) - - Emit progress to stderr when `--print` is passed to `bundle lock` [#7957](https://github.com/rubygems/rubygems/pull/7957) + - Raise original errors when unexpected errors happen during Gemfile evaluation [#8003](https://github.com/ruby/rubygems/pull/8003) + - Make an exe file executable when generating new gems [#8020](https://github.com/ruby/rubygems/pull/8020) + - Gracefully handle gem activation conflicts in inline mode [#5535](https://github.com/ruby/rubygems/pull/5535) + - Don't include hook templates in cached git source [#8013](https://github.com/ruby/rubygems/pull/8013) + - Fix some errors about a previous installation folder that's unsafe to remove, when there's no need to remove it [#7985](https://github.com/ruby/rubygems/pull/7985) + - Emit progress to stderr during `bundle outdated --parseable` [#7966](https://github.com/ruby/rubygems/pull/7966) + - Reject unknown platforms when running `bundle lock --add-platform` [#7967](https://github.com/ruby/rubygems/pull/7967) + - Emit progress to stderr when `--print` is passed to `bundle lock` [#7957](https://github.com/ruby/rubygems/pull/7957) ### Bug fixes: - - Fix `bundle install --local` hitting the network when default gems are included [#8027](https://github.com/rubygems/rubygems/pull/8027) - - Remove temporary `.lock` files unintentionally left around by gem installer [#8022](https://github.com/rubygems/rubygems/pull/8022) - - Fix `bundle exec rake install` failing when local gem has extensions [#7977](https://github.com/rubygems/rubygems/pull/7977) - - Load gemspecs in the context of its parent also when using local overrides [#7993](https://github.com/rubygems/rubygems/pull/7993) - - Fix `bundler/inline` failing in Ruby 3.2 due to conflicting `securerandom` versions [#7984](https://github.com/rubygems/rubygems/pull/7984) - - Don't blow up when explicit version is removed from some git sources [#7973](https://github.com/rubygems/rubygems/pull/7973) - - Fix `gem exec rails new project` failing on Ruby 3.2 [#7960](https://github.com/rubygems/rubygems/pull/7960) + - Fix `bundle install --local` hitting the network when default gems are included [#8027](https://github.com/ruby/rubygems/pull/8027) + - Remove temporary `.lock` files unintentionally left around by gem installer [#8022](https://github.com/ruby/rubygems/pull/8022) + - Fix `bundle exec rake install` failing when local gem has extensions [#7977](https://github.com/ruby/rubygems/pull/7977) + - Load gemspecs in the context of its parent also when using local overrides [#7993](https://github.com/ruby/rubygems/pull/7993) + - Fix `bundler/inline` failing in Ruby 3.2 due to conflicting `securerandom` versions [#7984](https://github.com/ruby/rubygems/pull/7984) + - Don't blow up when explicit version is removed from some git sources [#7973](https://github.com/ruby/rubygems/pull/7973) + - Fix `gem exec rails new project` failing on Ruby 3.2 [#7960](https://github.com/ruby/rubygems/pull/7960) ### Documentation: - - Improve `bundle add` man page [#5903](https://github.com/rubygems/rubygems/pull/5903) - - Add some documentation about backwards compatibility [#7964](https://github.com/rubygems/rubygems/pull/7964) + - Improve `bundle add` man page [#5903](https://github.com/ruby/rubygems/pull/5903) + - Add some documentation about backwards compatibility [#7964](https://github.com/ruby/rubygems/pull/7964) ## 2.5.18 (2024-08-26) ### Enhancements: - - Don't remove existing platform gems when PLATFORMS section is badly indented [#7916](https://github.com/rubygems/rubygems/pull/7916) + - Don't remove existing platform gems when PLATFORMS section is badly indented [#7916](https://github.com/ruby/rubygems/pull/7916) ### Bug fixes: - - Fix error message when Bundler refuses to install due to frozen being set without a lockfile [#7955](https://github.com/rubygems/rubygems/pull/7955) - - Fix several issues with the `--prefer-local` flag [#7951](https://github.com/rubygems/rubygems/pull/7951) - - Restore support for passing relative paths to `git:` sources [#7950](https://github.com/rubygems/rubygems/pull/7950) - - Regenerate previous git application caches that didn't include bare repos [#7926](https://github.com/rubygems/rubygems/pull/7926) - - Fix `bundle update ` failing to upgrade when versions present in two different sources [#7915](https://github.com/rubygems/rubygems/pull/7915) + - Fix error message when Bundler refuses to install due to frozen being set without a lockfile [#7955](https://github.com/ruby/rubygems/pull/7955) + - Fix several issues with the `--prefer-local` flag [#7951](https://github.com/ruby/rubygems/pull/7951) + - Restore support for passing relative paths to `git:` sources [#7950](https://github.com/ruby/rubygems/pull/7950) + - Regenerate previous git application caches that didn't include bare repos [#7926](https://github.com/ruby/rubygems/pull/7926) + - Fix `bundle update ` failing to upgrade when versions present in two different sources [#7915](https://github.com/ruby/rubygems/pull/7915) ### Documentation: - - Change new gem README template to have copyable code blocks [#7935](https://github.com/rubygems/rubygems/pull/7935) + - Change new gem README template to have copyable code blocks [#7935](https://github.com/ruby/rubygems/pull/7935) ## 2.5.17 (2024-08-01) ### Enhancements: - - Print better log message when current platform is not present in the lockfile [#7891](https://github.com/rubygems/rubygems/pull/7891) - - Explicitly encode `Gem::Dependency` to yaml [#7867](https://github.com/rubygems/rubygems/pull/7867) - - Enable lockfile checksums on future Bundler 3 when there's no previous lockfile [#7805](https://github.com/rubygems/rubygems/pull/7805) + - Print better log message when current platform is not present in the lockfile [#7891](https://github.com/ruby/rubygems/pull/7891) + - Explicitly encode `Gem::Dependency` to yaml [#7867](https://github.com/ruby/rubygems/pull/7867) + - Enable lockfile checksums on future Bundler 3 when there's no previous lockfile [#7805](https://github.com/ruby/rubygems/pull/7805) ### Bug fixes: - - Fix truffleruby removing gems from lockfile [#7795](https://github.com/rubygems/rubygems/pull/7795) - - Fix `bundle check` exit code when gem git source is not checked out [#7894](https://github.com/rubygems/rubygems/pull/7894) - - Generate gems.rb from Gemfile.tt template for `bundle-gem` [#7853](https://github.com/rubygems/rubygems/pull/7853) - - Fix git source cache being used as the install location [#4469](https://github.com/rubygems/rubygems/pull/4469) - - Fix `bundle exec gem uninstall` [#7886](https://github.com/rubygems/rubygems/pull/7886) + - Fix truffleruby removing gems from lockfile [#7795](https://github.com/ruby/rubygems/pull/7795) + - Fix `bundle check` exit code when gem git source is not checked out [#7894](https://github.com/ruby/rubygems/pull/7894) + - Generate gems.rb from Gemfile.tt template for `bundle-gem` [#7853](https://github.com/ruby/rubygems/pull/7853) + - Fix git source cache being used as the install location [#4469](https://github.com/ruby/rubygems/pull/4469) + - Fix `bundle exec gem uninstall` [#7886](https://github.com/ruby/rubygems/pull/7886) ## 2.5.16 (2024-07-18) ### Bug fixes: - - Fix platform removal regression when `platforms:` used in the Gemfile [#7864](https://github.com/rubygems/rubygems/pull/7864) - - Fix standalone script when default gems with extensions are used [#7870](https://github.com/rubygems/rubygems/pull/7870) - - Fix another case of `bundle lock --add-platform` doing nothing [#7848](https://github.com/rubygems/rubygems/pull/7848) - - Fix bad error messages when using `bundle add` with frozen mode set [#7845](https://github.com/rubygems/rubygems/pull/7845) - - Fix generic platform gems getting incorrectly removed from lockfile [#7833](https://github.com/rubygems/rubygems/pull/7833) + - Fix platform removal regression when `platforms:` used in the Gemfile [#7864](https://github.com/ruby/rubygems/pull/7864) + - Fix standalone script when default gems with extensions are used [#7870](https://github.com/ruby/rubygems/pull/7870) + - Fix another case of `bundle lock --add-platform` doing nothing [#7848](https://github.com/ruby/rubygems/pull/7848) + - Fix bad error messages when using `bundle add` with frozen mode set [#7845](https://github.com/ruby/rubygems/pull/7845) + - Fix generic platform gems getting incorrectly removed from lockfile [#7833](https://github.com/ruby/rubygems/pull/7833) ### Performance: - - Use `caller_locations` instead of splitting `caller` [#7708](https://github.com/rubygems/rubygems/pull/7708) + - Use `caller_locations` instead of splitting `caller` [#7708](https://github.com/ruby/rubygems/pull/7708) ## 2.5.15 (2024-07-09) ### Enhancements: - - Support `--no-test`, `--no-ci`, and `--no-linter` options [#7780](https://github.com/rubygems/rubygems/pull/7780) - - Allow bundle command in new gems with invalid metadata [#7707](https://github.com/rubygems/rubygems/pull/7707) + - Support `--no-test`, `--no-ci`, and `--no-linter` options [#7780](https://github.com/ruby/rubygems/pull/7780) + - Allow bundle command in new gems with invalid metadata [#7707](https://github.com/ruby/rubygems/pull/7707) ### Bug fixes: - - Protect creating RubyGems binstubs with a file lock [#7841](https://github.com/rubygems/rubygems/pull/7841) - - Only allow valid values for `--test`, `--ci`, and `--linter` options [#7801](https://github.com/rubygems/rubygems/pull/7801) - - Fix `bundle lock --add-platform ` doing nothing [#7803](https://github.com/rubygems/rubygems/pull/7803) - - Print a proper error when bin dir does not have writable permission bit [#7794](https://github.com/rubygems/rubygems/pull/7794) + - Protect creating RubyGems binstubs with a file lock [#7841](https://github.com/ruby/rubygems/pull/7841) + - Only allow valid values for `--test`, `--ci`, and `--linter` options [#7801](https://github.com/ruby/rubygems/pull/7801) + - Fix `bundle lock --add-platform ` doing nothing [#7803](https://github.com/ruby/rubygems/pull/7803) + - Print a proper error when bin dir does not have writable permission bit [#7794](https://github.com/ruby/rubygems/pull/7794) ### Documentation: - - Regenerate bundler docs for June 2024 [#7787](https://github.com/rubygems/rubygems/pull/7787) + - Regenerate bundler docs for June 2024 [#7787](https://github.com/ruby/rubygems/pull/7787) ## 2.5.14 (2024-06-21) ### Bug fixes: - - Fix credentials being re-added when re-resolving without a full unlock [#7767](https://github.com/rubygems/rubygems/pull/7767) - - Fix `bundle update ` edge case [#7770](https://github.com/rubygems/rubygems/pull/7770) - - Fix `bundle fund` when the gemfile contains optional groups [#7758](https://github.com/rubygems/rubygems/pull/7758) + - Fix credentials being re-added when re-resolving without a full unlock [#7767](https://github.com/ruby/rubygems/pull/7767) + - Fix `bundle update ` edge case [#7770](https://github.com/ruby/rubygems/pull/7770) + - Fix `bundle fund` when the gemfile contains optional groups [#7758](https://github.com/ruby/rubygems/pull/7758) ## 2.5.13 (2024-06-14) ### Bug fixes: - - Fix funding metadata not being printed in some situations [#7746](https://github.com/rubygems/rubygems/pull/7746) - - Make sure to not re-resolve when a not fully specific local platform is locked [#7751](https://github.com/rubygems/rubygems/pull/7751) - - Don't print bug report template when bin dir is not writable [#7748](https://github.com/rubygems/rubygems/pull/7748) + - Fix funding metadata not being printed in some situations [#7746](https://github.com/ruby/rubygems/pull/7746) + - Make sure to not re-resolve when a not fully specific local platform is locked [#7751](https://github.com/ruby/rubygems/pull/7751) + - Don't print bug report template when bin dir is not writable [#7748](https://github.com/ruby/rubygems/pull/7748) ## 2.5.12 (2024-06-13) ### Enhancements: - - Keep credentials in lockfile if they are already there [#7720](https://github.com/rubygems/rubygems/pull/7720) - - Auto switch to locked bundler version even when using binstubs [#7719](https://github.com/rubygems/rubygems/pull/7719) - - Don't validate local gemspecs twice unnecessarily [#7725](https://github.com/rubygems/rubygems/pull/7725) - - Improve default gem handling by treating default gems as any other gem [#7673](https://github.com/rubygems/rubygems/pull/7673) + - Keep credentials in lockfile if they are already there [#7720](https://github.com/ruby/rubygems/pull/7720) + - Auto switch to locked bundler version even when using binstubs [#7719](https://github.com/ruby/rubygems/pull/7719) + - Don't validate local gemspecs twice unnecessarily [#7725](https://github.com/ruby/rubygems/pull/7725) + - Improve default gem handling by treating default gems as any other gem [#7673](https://github.com/ruby/rubygems/pull/7673) ### Bug fixes: - - Fix slow and incorrect resolution when adding `sorbet` to a Gemfile and the lockfile only includes "RUBY" in the platforms section [#7731](https://github.com/rubygems/rubygems/pull/7731) - - Fix duplicated config keys generated when `fallback_timeout` uri option is used [#7704](https://github.com/rubygems/rubygems/pull/7704) - - Fix `bundle exec` no longer working in truffleruby after explicit `require` of `pathname` was removed [#7703](https://github.com/rubygems/rubygems/pull/7703) - - Don't let `bundle config` report a path without a Gemfile as "local app" [#7687](https://github.com/rubygems/rubygems/pull/7687) + - Fix slow and incorrect resolution when adding `sorbet` to a Gemfile and the lockfile only includes "RUBY" in the platforms section [#7731](https://github.com/ruby/rubygems/pull/7731) + - Fix duplicated config keys generated when `fallback_timeout` uri option is used [#7704](https://github.com/ruby/rubygems/pull/7704) + - Fix `bundle exec` no longer working in truffleruby after explicit `require` of `pathname` was removed [#7703](https://github.com/ruby/rubygems/pull/7703) + - Don't let `bundle config` report a path without a Gemfile as "local app" [#7687](https://github.com/ruby/rubygems/pull/7687) ### Documentation: - - Clarify BUNDLE_USER_CONFIG is a file [#7668](https://github.com/rubygems/rubygems/pull/7668) + - Clarify BUNDLE_USER_CONFIG is a file [#7668](https://github.com/ruby/rubygems/pull/7668) ## 2.5.11 (2024-05-28) ### Deprecations: - - Deprecate Bundler constants [#7653](https://github.com/rubygems/rubygems/pull/7653) + - Deprecate Bundler constants [#7653](https://github.com/ruby/rubygems/pull/7653) ### Enhancements: - - Bump `bundle gem` generated COC to Contributor Covenant 2.1 [#7692](https://github.com/rubygems/rubygems/pull/7692) - - Retry a full clone when git server does not support shallow capabilities [#7649](https://github.com/rubygems/rubygems/pull/7649) + - Bump `bundle gem` generated COC to Contributor Covenant 2.1 [#7692](https://github.com/ruby/rubygems/pull/7692) + - Retry a full clone when git server does not support shallow capabilities [#7649](https://github.com/ruby/rubygems/pull/7649) ### Bug fixes: - - Fix regression when caching gems from secondary sources [#7659](https://github.com/rubygems/rubygems/pull/7659) - - Fix error when Bundler installation is corrupted [#7642](https://github.com/rubygems/rubygems/pull/7642) - - Fix crash caused by RubyGems `require` gem activation logic running before Bundler can properly register its own monkeypatches [#7647](https://github.com/rubygems/rubygems/pull/7647) + - Fix regression when caching gems from secondary sources [#7659](https://github.com/ruby/rubygems/pull/7659) + - Fix error when Bundler installation is corrupted [#7642](https://github.com/ruby/rubygems/pull/7642) + - Fix crash caused by RubyGems `require` gem activation logic running before Bundler can properly register its own monkeypatches [#7647](https://github.com/ruby/rubygems/pull/7647) ### Performance: - - Update cache checksums to decrease string allocations [#7637](https://github.com/rubygems/rubygems/pull/7637) - - Fix performance regression in applications with a local cache [#7680](https://github.com/rubygems/rubygems/pull/7680) + - Update cache checksums to decrease string allocations [#7637](https://github.com/ruby/rubygems/pull/7637) + - Fix performance regression in applications with a local cache [#7680](https://github.com/ruby/rubygems/pull/7680) ### Documentation: - - Recommend `bin/rake` over `rake` in contributing docs [#7648](https://github.com/rubygems/rubygems/pull/7648) - - Monthly man update for May 2024 [#7640](https://github.com/rubygems/rubygems/pull/7640) - - Clarify Bundler support policy [#7633](https://github.com/rubygems/rubygems/pull/7633) + - Recommend `bin/rake` over `rake` in contributing docs [#7648](https://github.com/ruby/rubygems/pull/7648) + - Monthly man update for May 2024 [#7640](https://github.com/ruby/rubygems/pull/7640) + - Clarify Bundler support policy [#7633](https://github.com/ruby/rubygems/pull/7633) ## 2.5.10 (2024-05-03) ### Security: - - Never write credentials to lockfiles [#7560](https://github.com/rubygems/rubygems/pull/7560) + - Never write credentials to lockfiles [#7560](https://github.com/ruby/rubygems/pull/7560) ### Enhancements: - - Add auto_install support to require "bundler/setup" [#6561](https://github.com/rubygems/rubygems/pull/6561) - - Add `--glob` flag to `bundle add` [#7557](https://github.com/rubygems/rubygems/pull/7557) + - Add auto_install support to require "bundler/setup" [#6561](https://github.com/ruby/rubygems/pull/6561) + - Add `--glob` flag to `bundle add` [#7557](https://github.com/ruby/rubygems/pull/7557) ### Bug fixes: - - Make sure `bundle update ` can always update to the latest resolvable version of each requested gem [#7558](https://github.com/rubygems/rubygems/pull/7558) - - Show better error when installed gemspecs are unreadable [#7603](https://github.com/rubygems/rubygems/pull/7603) - - Fix `bundle update` not working on an out of sync lockfile [#7607](https://github.com/rubygems/rubygems/pull/7607) - - Don't upcase Windows ENV before backing it up [#7574](https://github.com/rubygems/rubygems/pull/7574) - - Properly resolve aliases when `bundle help` is run [#7601](https://github.com/rubygems/rubygems/pull/7601) - - Fix issue installing gems with linux-musl variant on non musl linux [#7583](https://github.com/rubygems/rubygems/pull/7583) + - Make sure `bundle update ` can always update to the latest resolvable version of each requested gem [#7558](https://github.com/ruby/rubygems/pull/7558) + - Show better error when installed gemspecs are unreadable [#7603](https://github.com/ruby/rubygems/pull/7603) + - Fix `bundle update` not working on an out of sync lockfile [#7607](https://github.com/ruby/rubygems/pull/7607) + - Don't upcase Windows ENV before backing it up [#7574](https://github.com/ruby/rubygems/pull/7574) + - Properly resolve aliases when `bundle help` is run [#7601](https://github.com/ruby/rubygems/pull/7601) + - Fix issue installing gems with linux-musl variant on non musl linux [#7583](https://github.com/ruby/rubygems/pull/7583) ### Documentation: - - Clarify `bundle check` behaviour in docs [#7613](https://github.com/rubygems/rubygems/pull/7613) + - Clarify `bundle check` behaviour in docs [#7613](https://github.com/ruby/rubygems/pull/7613) ## 2.5.9 (2024-04-12) ### Bug fixes: - - Fix installing plugins via relative paths [#7571](https://github.com/rubygems/rubygems/pull/7571) + - Fix installing plugins via relative paths [#7571](https://github.com/ruby/rubygems/pull/7571) ## 2.5.8 (2024-04-11) ### Enhancements: - - Allow installing plugins from path via CLI [#6960](https://github.com/rubygems/rubygems/pull/6960) - - Improve validation of `bundle plugin install` options [#7529](https://github.com/rubygems/rubygems/pull/7529) + - Allow installing plugins from path via CLI [#6960](https://github.com/ruby/rubygems/pull/6960) + - Improve validation of `bundle plugin install` options [#7529](https://github.com/ruby/rubygems/pull/7529) ### Bug fixes: - - Fix resolver error message when it runs out of versions due to `--strict --patch` filtering out everything [#7527](https://github.com/rubygems/rubygems/pull/7527) - - Fix incorrect `bundle update --bundler` message [#7516](https://github.com/rubygems/rubygems/pull/7516) + - Fix resolver error message when it runs out of versions due to `--strict --patch` filtering out everything [#7527](https://github.com/ruby/rubygems/pull/7527) + - Fix incorrect `bundle update --bundler` message [#7516](https://github.com/ruby/rubygems/pull/7516) ## 2.5.7 (2024-03-22) ### Deprecations: - - Deprecate `bundle plugin install --local-git=` [#7048](https://github.com/rubygems/rubygems/pull/7048) + - Deprecate `bundle plugin install --local-git=` [#7048](https://github.com/ruby/rubygems/pull/7048) ### Enhancements: - - Ignore commented out keys in config file [#7514](https://github.com/rubygems/rubygems/pull/7514) - - Fix exclusion of `.gemspec` file itself in `bundle gem` generated gemspec file [#7488](https://github.com/rubygems/rubygems/pull/7488) - - Remove redundant configs from `bundle gem` generated rubocop configuration [#7478](https://github.com/rubygems/rubygems/pull/7478) - - Add `gitlab:` git source shorthand [#7449](https://github.com/rubygems/rubygems/pull/7449) - - Use full path for `instance_eval` in `Bundler::DSL#eval_gemfile` [#7471](https://github.com/rubygems/rubygems/pull/7471) + - Ignore commented out keys in config file [#7514](https://github.com/ruby/rubygems/pull/7514) + - Fix exclusion of `.gemspec` file itself in `bundle gem` generated gemspec file [#7488](https://github.com/ruby/rubygems/pull/7488) + - Remove redundant configs from `bundle gem` generated rubocop configuration [#7478](https://github.com/ruby/rubygems/pull/7478) + - Add `gitlab:` git source shorthand [#7449](https://github.com/ruby/rubygems/pull/7449) + - Use full path for `instance_eval` in `Bundler::DSL#eval_gemfile` [#7471](https://github.com/ruby/rubygems/pull/7471) ### Documentation: - - Use https instead of http in documentation links [#7481](https://github.com/rubygems/rubygems/pull/7481) + - Use https instead of http in documentation links [#7481](https://github.com/ruby/rubygems/pull/7481) ## 2.5.6 (2024-02-06) ### Deprecations: - - Refactor lockfile generation and deprecate `Definition#lock` with explicit lockfile [#7047](https://github.com/rubygems/rubygems/pull/7047) + - Refactor lockfile generation and deprecate `Definition#lock` with explicit lockfile [#7047](https://github.com/ruby/rubygems/pull/7047) ### Enhancements: - - Bump `required_ruby_version` to be used in `bundle gem` template [#7430](https://github.com/rubygems/rubygems/pull/7430) + - Bump `required_ruby_version` to be used in `bundle gem` template [#7430](https://github.com/ruby/rubygems/pull/7430) ### Bug fixes: - - Fix musl platform not being added to the lockfile [#7441](https://github.com/rubygems/rubygems/pull/7441) - - Let `Bundler.with_original_env` properly restore env variables originally empty [#7383](https://github.com/rubygems/rubygems/pull/7383) + - Fix musl platform not being added to the lockfile [#7441](https://github.com/ruby/rubygems/pull/7441) + - Let `Bundler.with_original_env` properly restore env variables originally empty [#7383](https://github.com/ruby/rubygems/pull/7383) ## 2.5.5 (2024-01-18) ### Bug fixes: - - Fix development dependency not being added if introduced by two gemspecs [#7358](https://github.com/rubygems/rubygems/pull/7358) - - Fix ETag quoting regression in If-None-Match header of compact index request [#7352](https://github.com/rubygems/rubygems/pull/7352) + - Fix development dependency not being added if introduced by two gemspecs [#7358](https://github.com/ruby/rubygems/pull/7358) + - Fix ETag quoting regression in If-None-Match header of compact index request [#7352](https://github.com/ruby/rubygems/pull/7352) ### Documentation: - - Refer to underscores as underscores [#7364](https://github.com/rubygems/rubygems/pull/7364) + - Refer to underscores as underscores [#7364](https://github.com/ruby/rubygems/pull/7364) ## 2.5.4 (2024-01-04) ### Bug fixes: - - Fix resolution when different platform specific gems have different dependencies [#7324](https://github.com/rubygems/rubygems/pull/7324) + - Fix resolution when different platform specific gems have different dependencies [#7324](https://github.com/ruby/rubygems/pull/7324) ## 2.5.3 (2023-12-22) ### Bug fixes: - - Fix incorrect error when Gemfile overrides a gemspec development dependency [#7319](https://github.com/rubygems/rubygems/pull/7319) + - Fix incorrect error when Gemfile overrides a gemspec development dependency [#7319](https://github.com/ruby/rubygems/pull/7319) ## 2.5.2 (2023-12-21) ### Enhancements: - - Avoid vendored thor gem polluting the global namespace [#7305](https://github.com/rubygems/rubygems/pull/7305) + - Avoid vendored thor gem polluting the global namespace [#7305](https://github.com/ruby/rubygems/pull/7305) ### Bug fixes: - - Fix `bundle update --bundler` when latest version does not support current ruby [#7310](https://github.com/rubygems/rubygems/pull/7310) - - Fix incorrect lockfiles being generated in some situations [#7307](https://github.com/rubygems/rubygems/pull/7307) - - Fix incorrect re-resolve messages [#7306](https://github.com/rubygems/rubygems/pull/7306) + - Fix `bundle update --bundler` when latest version does not support current ruby [#7310](https://github.com/ruby/rubygems/pull/7310) + - Fix incorrect lockfiles being generated in some situations [#7307](https://github.com/ruby/rubygems/pull/7307) + - Fix incorrect re-resolve messages [#7306](https://github.com/ruby/rubygems/pull/7306) ## 2.5.1 (2023-12-15) ### Bug fixes: - - Fix `ruby` Gemfile DSL with `file:` parameter no longer working [#7288](https://github.com/rubygems/rubygems/pull/7288) + - Fix `ruby` Gemfile DSL with `file:` parameter no longer working [#7288](https://github.com/ruby/rubygems/pull/7288) ### Performance: - - Save array allocation for every dependency in Gemfile [#7270](https://github.com/rubygems/rubygems/pull/7270) + - Save array allocation for every dependency in Gemfile [#7270](https://github.com/ruby/rubygems/pull/7270) ## 2.5.0 (2023-12-15) ### Breaking changes: - - Drop ruby 2.6 and 2.7 support [#7116](https://github.com/rubygems/rubygems/pull/7116) - - The `:mswin`, `:mswin64`, `:mingw`, and `:x64_mingw` Gemfile `platform` values are soft-deprecated and aliased to `:windows` [#6391](https://github.com/rubygems/rubygems/pull/6391) + - Drop ruby 2.6 and 2.7 support [#7116](https://github.com/ruby/rubygems/pull/7116) + - The `:mswin`, `:mswin64`, `:mingw`, and `:x64_mingw` Gemfile `platform` values are soft-deprecated and aliased to `:windows` [#6391](https://github.com/ruby/rubygems/pull/6391) ### Features: - - Leverage ruby feature to warn when requiring default gems not included in the bundle that will be turned into bundled gems in the future [#6831](https://github.com/rubygems/rubygems/pull/6831) - - Introduce `bundle config set version` feature to choose the version of Bundler that should be used and potentially disable using the `lockfile` version by setting it to `system` [#6817](https://github.com/rubygems/rubygems/pull/6817) + - Leverage ruby feature to warn when requiring default gems not included in the bundle that will be turned into bundled gems in the future [#6831](https://github.com/ruby/rubygems/pull/6831) + - Introduce `bundle config set version` feature to choose the version of Bundler that should be used and potentially disable using the `lockfile` version by setting it to `system` [#6817](https://github.com/ruby/rubygems/pull/6817) ### Performance: - - Use match? when regexp match data is unused [#7263](https://github.com/rubygems/rubygems/pull/7263) - - Avoid some allocations when evaluating `ruby` Gemfile DSL [#7251](https://github.com/rubygems/rubygems/pull/7251) - - Reduce array allocations when loading definition [#7199](https://github.com/rubygems/rubygems/pull/7199) - - Avoid re-compiling static regexp in a loop [#7198](https://github.com/rubygems/rubygems/pull/7198) - - Reduce allocations when installing gems with bundler [#6977](https://github.com/rubygems/rubygems/pull/6977) - - Use a shared connection pool for fetching gems [#7079](https://github.com/rubygems/rubygems/pull/7079) - - Reduce allocations when parsing compact index [#6971](https://github.com/rubygems/rubygems/pull/6971) + - Use match? when regexp match data is unused [#7263](https://github.com/ruby/rubygems/pull/7263) + - Avoid some allocations when evaluating `ruby` Gemfile DSL [#7251](https://github.com/ruby/rubygems/pull/7251) + - Reduce array allocations when loading definition [#7199](https://github.com/ruby/rubygems/pull/7199) + - Avoid re-compiling static regexp in a loop [#7198](https://github.com/ruby/rubygems/pull/7198) + - Reduce allocations when installing gems with bundler [#6977](https://github.com/ruby/rubygems/pull/6977) + - Use a shared connection pool for fetching gems [#7079](https://github.com/ruby/rubygems/pull/7079) + - Reduce allocations when parsing compact index [#6971](https://github.com/ruby/rubygems/pull/6971) ### Enhancements: - - Add 3.4 as a supported ruby version in Gemfile DSL [#7264](https://github.com/rubygems/rubygems/pull/7264) - - Improve install advice when some gems are not found [#7265](https://github.com/rubygems/rubygems/pull/7265) - - Vendor `net-http`, `net-protocol`, `resolv`, and `timeout` to reduce conflicts between Gemfile gems and internal dependencies [#6793](https://github.com/rubygems/rubygems/pull/6793) - - Allow `bundle pristine` to run in parallel [#6927](https://github.com/rubygems/rubygems/pull/6927) - - Make `bundle lock` always touch the lockfile in non-frozen mode [#7220](https://github.com/rubygems/rubygems/pull/7220) - - Use `Minitest::TestTask` in a template file for `minitest` [#7234](https://github.com/rubygems/rubygems/pull/7234) - - Add missing services to CI detection and make it consistent between RubyGems and Bundler [#7205](https://github.com/rubygems/rubygems/pull/7205) - - Allow auto-install to install missing git gems [#7197](https://github.com/rubygems/rubygems/pull/7197) - - Stop remembering cli flags like `--jobs` or `--retry` in configuration [#7191](https://github.com/rubygems/rubygems/pull/7191) - - Simplify remembered flags deprecation message [#7189](https://github.com/rubygems/rubygems/pull/7189) - - Make sure to `require "rubygems"` explicitly [#7139](https://github.com/rubygems/rubygems/pull/7139) - - Handle development dependencies duplicated in gemspec vs Gemfile [#6014](https://github.com/rubygems/rubygems/pull/6014) - - Make lockfiles generated on macOS include a lock for Linux by default [#5700](https://github.com/rubygems/rubygems/pull/5700) - - Only add a dummy bundler spec to the metadata source when necessary [#4443](https://github.com/rubygems/rubygems/pull/4443) + - Add 3.4 as a supported ruby version in Gemfile DSL [#7264](https://github.com/ruby/rubygems/pull/7264) + - Improve install advice when some gems are not found [#7265](https://github.com/ruby/rubygems/pull/7265) + - Vendor `net-http`, `net-protocol`, `resolv`, and `timeout` to reduce conflicts between Gemfile gems and internal dependencies [#6793](https://github.com/ruby/rubygems/pull/6793) + - Allow `bundle pristine` to run in parallel [#6927](https://github.com/ruby/rubygems/pull/6927) + - Make `bundle lock` always touch the lockfile in non-frozen mode [#7220](https://github.com/ruby/rubygems/pull/7220) + - Use `Minitest::TestTask` in a template file for `minitest` [#7234](https://github.com/ruby/rubygems/pull/7234) + - Add missing services to CI detection and make it consistent between RubyGems and Bundler [#7205](https://github.com/ruby/rubygems/pull/7205) + - Allow auto-install to install missing git gems [#7197](https://github.com/ruby/rubygems/pull/7197) + - Stop remembering cli flags like `--jobs` or `--retry` in configuration [#7191](https://github.com/ruby/rubygems/pull/7191) + - Simplify remembered flags deprecation message [#7189](https://github.com/ruby/rubygems/pull/7189) + - Make sure to `require "rubygems"` explicitly [#7139](https://github.com/ruby/rubygems/pull/7139) + - Handle development dependencies duplicated in gemspec vs Gemfile [#6014](https://github.com/ruby/rubygems/pull/6014) + - Make lockfiles generated on macOS include a lock for Linux by default [#5700](https://github.com/ruby/rubygems/pull/5700) + - Only add a dummy bundler spec to the metadata source when necessary [#4443](https://github.com/ruby/rubygems/pull/4443) ### Bug fixes: - - Resolve `ruby file: ".ruby-version"` relative to containing Gemfile [#7250](https://github.com/rubygems/rubygems/pull/7250) - - Implement opaque ETag in Compact Index to avoid falling back to old index in servers with different etag implementations [#7122](https://github.com/rubygems/rubygems/pull/7122) - - Fix `bundle install --system` deprecation advice [#7190](https://github.com/rubygems/rubygems/pull/7190) - - Fix invalid platform removal missing adjacent platforms [#7170](https://github.com/rubygems/rubygems/pull/7170) + - Resolve `ruby file: ".ruby-version"` relative to containing Gemfile [#7250](https://github.com/ruby/rubygems/pull/7250) + - Implement opaque ETag in Compact Index to avoid falling back to old index in servers with different etag implementations [#7122](https://github.com/ruby/rubygems/pull/7122) + - Fix `bundle install --system` deprecation advice [#7190](https://github.com/ruby/rubygems/pull/7190) + - Fix invalid platform removal missing adjacent platforms [#7170](https://github.com/ruby/rubygems/pull/7170) ### Documentation: - - Add missing --prefer-local to Synopsis in bundle-install.1.ronn [#7194](https://github.com/rubygems/rubygems/pull/7194) - - Update GitHub organization of Standard Ruby in `bundle gem` output and generated configuration [#6818](https://github.com/rubygems/rubygems/pull/6818) - - Replace "prior to" with "immediately after" in `bundle gem` generated README file [#6338](https://github.com/rubygems/rubygems/pull/6338) + - Add missing --prefer-local to Synopsis in bundle-install.1.ronn [#7194](https://github.com/ruby/rubygems/pull/7194) + - Update GitHub organization of Standard Ruby in `bundle gem` output and generated configuration [#6818](https://github.com/ruby/rubygems/pull/6818) + - Replace "prior to" with "immediately after" in `bundle gem` generated README file [#6338](https://github.com/ruby/rubygems/pull/6338) ## 2.4.22 (2023-11-09) ### Enhancements: - - Add Bundler::Plugin.loaded? helper [#6964](https://github.com/rubygems/rubygems/pull/6964) - - Give better error when previous installation folder is insecure to remove [#7030](https://github.com/rubygems/rubygems/pull/7030) - - Set file path when eval-ing local specification in EndpointSpecification [#7106](https://github.com/rubygems/rubygems/pull/7106) - - Git ignore the proper files for the CI service selected for `bundle gem` [#7101](https://github.com/rubygems/rubygems/pull/7101) - - Update vendored thor to v1.3.0 [#7078](https://github.com/rubygems/rubygems/pull/7078) - - Restore using old way of passing Ruby version to resolver [#7066](https://github.com/rubygems/rubygems/pull/7066) - - Bump vendored net-http-persistent to 4.0.2 [#6787](https://github.com/rubygems/rubygems/pull/6787) + - Add Bundler::Plugin.loaded? helper [#6964](https://github.com/ruby/rubygems/pull/6964) + - Give better error when previous installation folder is insecure to remove [#7030](https://github.com/ruby/rubygems/pull/7030) + - Set file path when eval-ing local specification in EndpointSpecification [#7106](https://github.com/ruby/rubygems/pull/7106) + - Git ignore the proper files for the CI service selected for `bundle gem` [#7101](https://github.com/ruby/rubygems/pull/7101) + - Update vendored thor to v1.3.0 [#7078](https://github.com/ruby/rubygems/pull/7078) + - Restore using old way of passing Ruby version to resolver [#7066](https://github.com/ruby/rubygems/pull/7066) + - Bump vendored net-http-persistent to 4.0.2 [#6787](https://github.com/ruby/rubygems/pull/6787) ### Bug fixes: - - Fix regression when installing native extensions on universal rubies [#7077](https://github.com/rubygems/rubygems/pull/7077) - - Only remove bundler plugin gem when it's inside the cache [#7001](https://github.com/rubygems/rubygems/pull/7001) - - Don't show bug report template when GEM_HOME has no writable bit [#7113](https://github.com/rubygems/rubygems/pull/7113) - - Fix regression in old git versions [#7114](https://github.com/rubygems/rubygems/pull/7114) - - Handle empty array at built-in YAML serializer [#7099](https://github.com/rubygems/rubygems/pull/7099) - - Fix force_ruby_platform: when the lockfile only locks the ruby platform [#6936](https://github.com/rubygems/rubygems/pull/6936) + - Fix regression when installing native extensions on universal rubies [#7077](https://github.com/ruby/rubygems/pull/7077) + - Only remove bundler plugin gem when it's inside the cache [#7001](https://github.com/ruby/rubygems/pull/7001) + - Don't show bug report template when GEM_HOME has no writable bit [#7113](https://github.com/ruby/rubygems/pull/7113) + - Fix regression in old git versions [#7114](https://github.com/ruby/rubygems/pull/7114) + - Handle empty array at built-in YAML serializer [#7099](https://github.com/ruby/rubygems/pull/7099) + - Fix force_ruby_platform: when the lockfile only locks the ruby platform [#6936](https://github.com/ruby/rubygems/pull/6936) ## 2.4.21 (2023-10-17) ### Enhancements: - - Avoid duplicates -rbundler/setup in RUBYOPT with Ruby preview [#7002](https://github.com/rubygems/rubygems/pull/7002) - - Prevent gem activation in standalone mode [#6925](https://github.com/rubygems/rubygems/pull/6925) - - Support Ruby's preview version format (Ex: 3.3.0-preview2) in Gemfile [#7016](https://github.com/rubygems/rubygems/pull/7016) - - Fix `bundle install` when older revisions of git source [#6980](https://github.com/rubygems/rubygems/pull/6980) - - Remove usage of Dir.chdir that only execute a subprocess [#6930](https://github.com/rubygems/rubygems/pull/6930) + - Avoid duplicates -rbundler/setup in RUBYOPT with Ruby preview [#7002](https://github.com/ruby/rubygems/pull/7002) + - Prevent gem activation in standalone mode [#6925](https://github.com/ruby/rubygems/pull/6925) + - Support Ruby's preview version format (Ex: 3.3.0-preview2) in Gemfile [#7016](https://github.com/ruby/rubygems/pull/7016) + - Fix `bundle install` when older revisions of git source [#6980](https://github.com/ruby/rubygems/pull/6980) + - Remove usage of Dir.chdir that only execute a subprocess [#6930](https://github.com/ruby/rubygems/pull/6930) ### Bug fixes: - - Don't delete the release version from pre-release string more than once [#7054](https://github.com/rubygems/rubygems/pull/7054) - - Make the `lock` command not be affected by the `frozen` setting [#7034](https://github.com/rubygems/rubygems/pull/7034) - - Raise an error when adding a gem incompatible with some locked platform [#7035](https://github.com/rubygems/rubygems/pull/7035) - - Re-resolve when lockfile is invalid [#7020](https://github.com/rubygems/rubygems/pull/7020) - - Don't re-resolve with prereleases if unlocked gem has no prereleases [#7021](https://github.com/rubygems/rubygems/pull/7021) - - Include gemspec in ExtensionTask for native gem tasks [#7015](https://github.com/rubygems/rubygems/pull/7015) - - Avoid error reporting relative path when validating frozen [#5128](https://github.com/rubygems/rubygems/pull/5128) - - Fix `bundle lock --minor --update ` edge case [#6992](https://github.com/rubygems/rubygems/pull/6992) - - Stop bundler eagerly loading all specs with exts [#6945](https://github.com/rubygems/rubygems/pull/6945) + - Don't delete the release version from pre-release string more than once [#7054](https://github.com/ruby/rubygems/pull/7054) + - Make the `lock` command not be affected by the `frozen` setting [#7034](https://github.com/ruby/rubygems/pull/7034) + - Raise an error when adding a gem incompatible with some locked platform [#7035](https://github.com/ruby/rubygems/pull/7035) + - Re-resolve when lockfile is invalid [#7020](https://github.com/ruby/rubygems/pull/7020) + - Don't re-resolve with prereleases if unlocked gem has no prereleases [#7021](https://github.com/ruby/rubygems/pull/7021) + - Include gemspec in ExtensionTask for native gem tasks [#7015](https://github.com/ruby/rubygems/pull/7015) + - Avoid error reporting relative path when validating frozen [#5128](https://github.com/ruby/rubygems/pull/5128) + - Fix `bundle lock --minor --update ` edge case [#6992](https://github.com/ruby/rubygems/pull/6992) + - Stop bundler eagerly loading all specs with exts [#6945](https://github.com/ruby/rubygems/pull/6945) ### Performance: - - Reduce allocations when parsing lockfile [#6976](https://github.com/rubygems/rubygems/pull/6976) - - Stop allocating the same settings keys repeatedly [#6963](https://github.com/rubygems/rubygems/pull/6963) + - Reduce allocations when parsing lockfile [#6976](https://github.com/ruby/rubygems/pull/6976) + - Stop allocating the same settings keys repeatedly [#6963](https://github.com/ruby/rubygems/pull/6963) ### Documentation: - - Improve formatting and global source information in `bundle plugin` man page [#7045](https://github.com/rubygems/rubygems/pull/7045) - - Update man page of `bundle exec` to reflect default true of flag `--keep-file-descriptors` [#7033](https://github.com/rubygems/rubygems/pull/7033) + - Improve formatting and global source information in `bundle plugin` man page [#7045](https://github.com/ruby/rubygems/pull/7045) + - Update man page of `bundle exec` to reflect default true of flag `--keep-file-descriptors` [#7033](https://github.com/ruby/rubygems/pull/7033) ## 2.4.20 (2023-09-27) ### Enhancements: - - Bump actions/checkout to v4 in bundler gem template [#6966](https://github.com/rubygems/rubygems/pull/6966) - - Add support for the `ruby-3.2.2` format in the `ruby file:` Gemfile directive, and explicitly test the `3.2.2@gemset` format as rejected [#6954](https://github.com/rubygems/rubygems/pull/6954) - - Support `ruby file: ".tool-versions"` in Gemfile [#6898](https://github.com/rubygems/rubygems/pull/6898) - - Unify LockfileParser loading of SPECS section [#6933](https://github.com/rubygems/rubygems/pull/6933) - - Only check circular deps when dependency api is available, not on full index sources [#6919](https://github.com/rubygems/rubygems/pull/6919) + - Bump actions/checkout to v4 in bundler gem template [#6966](https://github.com/ruby/rubygems/pull/6966) + - Add support for the `ruby-3.2.2` format in the `ruby file:` Gemfile directive, and explicitly test the `3.2.2@gemset` format as rejected [#6954](https://github.com/ruby/rubygems/pull/6954) + - Support `ruby file: ".tool-versions"` in Gemfile [#6898](https://github.com/ruby/rubygems/pull/6898) + - Unify LockfileParser loading of SPECS section [#6933](https://github.com/ruby/rubygems/pull/6933) + - Only check circular deps when dependency api is available, not on full index sources [#6919](https://github.com/ruby/rubygems/pull/6919) ### Bug fixes: - - Allow standalone mode to work on a Windows edge case [#6989](https://github.com/rubygems/rubygems/pull/6989) - - Fix `bundle outdated` crashing when both `ref` and `branch` specified for a git gem in Gemfile [#6959](https://github.com/rubygems/rubygems/pull/6959) - - Fix `bundle update --redownload` [#6924](https://github.com/rubygems/rubygems/pull/6924) - - Fixed malformed bundler version in lockfile making Bundler crash [#6920](https://github.com/rubygems/rubygems/pull/6920) - - Fix standalone install crashing when using legacy gemfiles with multiple global sources [#6918](https://github.com/rubygems/rubygems/pull/6918) - - Resolve ruby version file relative to bundle root [#6892](https://github.com/rubygems/rubygems/pull/6892) + - Allow standalone mode to work on a Windows edge case [#6989](https://github.com/ruby/rubygems/pull/6989) + - Fix `bundle outdated` crashing when both `ref` and `branch` specified for a git gem in Gemfile [#6959](https://github.com/ruby/rubygems/pull/6959) + - Fix `bundle update --redownload` [#6924](https://github.com/ruby/rubygems/pull/6924) + - Fixed malformed bundler version in lockfile making Bundler crash [#6920](https://github.com/ruby/rubygems/pull/6920) + - Fix standalone install crashing when using legacy gemfiles with multiple global sources [#6918](https://github.com/ruby/rubygems/pull/6918) + - Resolve ruby version file relative to bundle root [#6892](https://github.com/ruby/rubygems/pull/6892) ### Performance: - - Lazily construct fetcher debug messages [#6973](https://github.com/rubygems/rubygems/pull/6973) - - Avoid allocating empty hashes in Index [#6962](https://github.com/rubygems/rubygems/pull/6962) - - Improve `Bundler::Index` efficiency by removing unnecessary creation and dups [#6931](https://github.com/rubygems/rubygems/pull/6931) - - (Further) Improve Bundler::Settings#[] performance and memory usage [#6923](https://github.com/rubygems/rubygems/pull/6923) - - Don't use full indexes unnecessarily on legacy Gemfiles [#6916](https://github.com/rubygems/rubygems/pull/6916) - - Improve memory usage in Bundler::Settings, and thus improve boot time [#6884](https://github.com/rubygems/rubygems/pull/6884) + - Lazily construct fetcher debug messages [#6973](https://github.com/ruby/rubygems/pull/6973) + - Avoid allocating empty hashes in Index [#6962](https://github.com/ruby/rubygems/pull/6962) + - Improve `Bundler::Index` efficiency by removing unnecessary creation and dups [#6931](https://github.com/ruby/rubygems/pull/6931) + - (Further) Improve Bundler::Settings#[] performance and memory usage [#6923](https://github.com/ruby/rubygems/pull/6923) + - Don't use full indexes unnecessarily on legacy Gemfiles [#6916](https://github.com/ruby/rubygems/pull/6916) + - Improve memory usage in Bundler::Settings, and thus improve boot time [#6884](https://github.com/ruby/rubygems/pull/6884) ## 2.4.19 (2023-08-17) ### Enhancements: - - Add `file` option to `ruby` method in Gemfile [#6876](https://github.com/rubygems/rubygems/pull/6876) - - Show better error when PAT can't authenticate to a private server [#6871](https://github.com/rubygems/rubygems/pull/6871) - - Don't fallback to old dependency API when bad credentials are configured [#6869](https://github.com/rubygems/rubygems/pull/6869) + - Add `file` option to `ruby` method in Gemfile [#6876](https://github.com/ruby/rubygems/pull/6876) + - Show better error when PAT can't authenticate to a private server [#6871](https://github.com/ruby/rubygems/pull/6871) + - Don't fallback to old dependency API when bad credentials are configured [#6869](https://github.com/ruby/rubygems/pull/6869) ### Bug fixes: - - Fix git source conservativeness [#6850](https://github.com/rubygems/rubygems/pull/6850) + - Fix git source conservativeness [#6850](https://github.com/ruby/rubygems/pull/6850) ### Documentation: - - Clarify that `bundle info` takes a gem name [#6875](https://github.com/rubygems/rubygems/pull/6875) + - Clarify that `bundle info` takes a gem name [#6875](https://github.com/ruby/rubygems/pull/6875) ## 2.4.18 (2023-08-02) ### Security: - - Merge URI-0.12.2 for Bundler [#6779](https://github.com/rubygems/rubygems/pull/6779) + - Merge URI-0.12.2 for Bundler [#6779](https://github.com/ruby/rubygems/pull/6779) ### Enhancements: - - Update Magnus version in Rust extension gem template [#6843](https://github.com/rubygems/rubygems/pull/6843) + - Update Magnus version in Rust extension gem template [#6843](https://github.com/ruby/rubygems/pull/6843) ### Documentation: - - Update bundle-outdated(1) man to use table output [#6833](https://github.com/rubygems/rubygems/pull/6833) + - Update bundle-outdated(1) man to use table output [#6833](https://github.com/ruby/rubygems/pull/6833) ## 2.4.17 (2023-07-14) ### Enhancements: - - Avoid printing "Using ..." messages when version has not changed [#6804](https://github.com/rubygems/rubygems/pull/6804) + - Avoid printing "Using ..." messages when version has not changed [#6804](https://github.com/ruby/rubygems/pull/6804) ### Bug fixes: - - Fix `bundler/setup` unintendedly writing to the filesystem [#6814](https://github.com/rubygems/rubygems/pull/6814) + - Fix `bundler/setup` unintendedly writing to the filesystem [#6814](https://github.com/ruby/rubygems/pull/6814) ## 2.4.16 (2023-07-10) ### Bug fixes: - - Exclude Bundler from missing locked dependencies check [#6792](https://github.com/rubygems/rubygems/pull/6792) - - Fix another incorrect removal of "ruby" platform from lockfile when changing path sources [#6784](https://github.com/rubygems/rubygems/pull/6784) - - Fix git source lockfile instability [#6786](https://github.com/rubygems/rubygems/pull/6786) + - Exclude Bundler from missing locked dependencies check [#6792](https://github.com/ruby/rubygems/pull/6792) + - Fix another incorrect removal of "ruby" platform from lockfile when changing path sources [#6784](https://github.com/ruby/rubygems/pull/6784) + - Fix git source lockfile instability [#6786](https://github.com/ruby/rubygems/pull/6786) ### Documentation: - - `gemfile.5`: Code format the default glob to escape Markdown [#6790](https://github.com/rubygems/rubygems/pull/6790) + - `gemfile.5`: Code format the default glob to escape Markdown [#6790](https://github.com/ruby/rubygems/pull/6790) ## 2.4.15 (2023-06-29) ### Enhancements: - - Improve edge case error message [#6733](https://github.com/rubygems/rubygems/pull/6733) + - Improve edge case error message [#6733](https://github.com/ruby/rubygems/pull/6733) ### Bug fixes: - - Fix `bundle lock --update --bundler` [#6213](https://github.com/rubygems/rubygems/pull/6213) + - Fix `bundle lock --update --bundler` [#6213](https://github.com/ruby/rubygems/pull/6213) ## 2.4.14 (2023-06-12) ### Enhancements: - - Stop publishing Gemfile in default gem template [#6723](https://github.com/rubygems/rubygems/pull/6723) - - Avoid infinite loops when hitting resolution bugs [#6722](https://github.com/rubygems/rubygems/pull/6722) - - Make `LockfileParser` usable with just a lockfile [#6694](https://github.com/rubygems/rubygems/pull/6694) - - Always rely on `$LOAD_PATH` when jumping from `exe/` to `lib/` [#6702](https://github.com/rubygems/rubygems/pull/6702) - - Make `frozen` setting take precedence over `deployment` setting [#6685](https://github.com/rubygems/rubygems/pull/6685) - - Show an error when trying to update bundler in frozen mode [#6684](https://github.com/rubygems/rubygems/pull/6684) + - Stop publishing Gemfile in default gem template [#6723](https://github.com/ruby/rubygems/pull/6723) + - Avoid infinite loops when hitting resolution bugs [#6722](https://github.com/ruby/rubygems/pull/6722) + - Make `LockfileParser` usable with just a lockfile [#6694](https://github.com/ruby/rubygems/pull/6694) + - Always rely on `$LOAD_PATH` when jumping from `exe/` to `lib/` [#6702](https://github.com/ruby/rubygems/pull/6702) + - Make `frozen` setting take precedence over `deployment` setting [#6685](https://github.com/ruby/rubygems/pull/6685) + - Show an error when trying to update bundler in frozen mode [#6684](https://github.com/ruby/rubygems/pull/6684) ### Bug fixes: - - Fix `deployment` vs `path` precedence [#6703](https://github.com/rubygems/rubygems/pull/6703) - - Fix inline mode with multiple sources [#6699](https://github.com/rubygems/rubygems/pull/6699) + - Fix `deployment` vs `path` precedence [#6703](https://github.com/ruby/rubygems/pull/6703) + - Fix inline mode with multiple sources [#6699](https://github.com/ruby/rubygems/pull/6699) ## 2.4.13 (2023-05-09) ### Bug fixes: - - Fix unexpected fallbacks to full index by adding FalseClass and Time to the SafeMarshal list [#6655](https://github.com/rubygems/rubygems/pull/6655) + - Fix unexpected fallbacks to full index by adding FalseClass and Time to the SafeMarshal list [#6655](https://github.com/ruby/rubygems/pull/6655) ### Documentation: - - Fix broken hyperlinks in bundle cache documentation [#6606](https://github.com/rubygems/rubygems/pull/6606) + - Fix broken hyperlinks in bundle cache documentation [#6606](https://github.com/ruby/rubygems/pull/6606) ## 2.4.12 (2023-04-11) ### Enhancements: - - Remove reference to `pry` gem from generated `bin/console` file [#6515](https://github.com/rubygems/rubygems/pull/6515) + - Remove reference to `pry` gem from generated `bin/console` file [#6515](https://github.com/ruby/rubygems/pull/6515) ## 2.4.11 (2023-04-10) ### Security: - - Use URI-0.12.1 (safe against CVE-2023-28755 ReDoS vulnerability) [#6558](https://github.com/rubygems/rubygems/pull/6558) + - Use URI-0.12.1 (safe against CVE-2023-28755 ReDoS vulnerability) [#6558](https://github.com/ruby/rubygems/pull/6558) ### Enhancements: - - Remove one fallback to full indexes on big gemfiles [#6578](https://github.com/rubygems/rubygems/pull/6578) - - Generate native gems with `-fvisibility=hidden` [#6541](https://github.com/rubygems/rubygems/pull/6541) + - Remove one fallback to full indexes on big gemfiles [#6578](https://github.com/ruby/rubygems/pull/6578) + - Generate native gems with `-fvisibility=hidden` [#6541](https://github.com/ruby/rubygems/pull/6541) ### Bug fixes: - - Fix resolver hangs when dealing with an incomplete lockfile [#6552](https://github.com/rubygems/rubygems/pull/6552) - - Fix prereleases not being considered by gem version promoter when there's no lockfile [#6537](https://github.com/rubygems/rubygems/pull/6537) + - Fix resolver hangs when dealing with an incomplete lockfile [#6552](https://github.com/ruby/rubygems/pull/6552) + - Fix prereleases not being considered by gem version promoter when there's no lockfile [#6537](https://github.com/ruby/rubygems/pull/6537) ## 2.4.10 (2023-03-27) ### Bug fixes: - - Fix some unnecessary top level dependency downgrades [#6535](https://github.com/rubygems/rubygems/pull/6535) - - Fix incorrect ruby platform removal from lockfile when adding Gemfile dependencies [#6540](https://github.com/rubygems/rubygems/pull/6540) - - Fix installing plugins in frozen mode [#6543](https://github.com/rubygems/rubygems/pull/6543) - - Restore "enumerability" of `SpecSet` [#6532](https://github.com/rubygems/rubygems/pull/6532) + - Fix some unnecessary top level dependency downgrades [#6535](https://github.com/ruby/rubygems/pull/6535) + - Fix incorrect ruby platform removal from lockfile when adding Gemfile dependencies [#6540](https://github.com/ruby/rubygems/pull/6540) + - Fix installing plugins in frozen mode [#6543](https://github.com/ruby/rubygems/pull/6543) + - Restore "enumerability" of `SpecSet` [#6532](https://github.com/ruby/rubygems/pull/6532) ## 2.4.9 (2023-03-20) ### Security: - - Don't recommend `--full-index` on errors [#6493](https://github.com/rubygems/rubygems/pull/6493) + - Don't recommend `--full-index` on errors [#6493](https://github.com/ruby/rubygems/pull/6493) ### Enhancements: - - Fix duplicated specs in some error messages [#6475](https://github.com/rubygems/rubygems/pull/6475) - - When running `bundle lock --update `, checkout locked revision of unrelated git sources directly [#6459](https://github.com/rubygems/rubygems/pull/6459) - - Avoid expiring git sources when unnecessary [#6458](https://github.com/rubygems/rubygems/pull/6458) - - Use `RbSys::ExtensionTask` when creating new rust gems [#6352](https://github.com/rubygems/rubygems/pull/6352) - - Don't ignore pre-releases when there's only one candidate [#6441](https://github.com/rubygems/rubygems/pull/6441) + - Fix duplicated specs in some error messages [#6475](https://github.com/ruby/rubygems/pull/6475) + - When running `bundle lock --update `, checkout locked revision of unrelated git sources directly [#6459](https://github.com/ruby/rubygems/pull/6459) + - Avoid expiring git sources when unnecessary [#6458](https://github.com/ruby/rubygems/pull/6458) + - Use `RbSys::ExtensionTask` when creating new rust gems [#6352](https://github.com/ruby/rubygems/pull/6352) + - Don't ignore pre-releases when there's only one candidate [#6441](https://github.com/ruby/rubygems/pull/6441) ### Bug fixes: - - Fix incorrect removal of ruby platform when auto-healing corrupted lockfiles [#6495](https://github.com/rubygems/rubygems/pull/6495) - - Don't consider platform specific candidates when `force_ruby_platform` set [#6442](https://github.com/rubygems/rubygems/pull/6442) - - Better deal with circular dependencies [#6330](https://github.com/rubygems/rubygems/pull/6330) + - Fix incorrect removal of ruby platform when auto-healing corrupted lockfiles [#6495](https://github.com/ruby/rubygems/pull/6495) + - Don't consider platform specific candidates when `force_ruby_platform` set [#6442](https://github.com/ruby/rubygems/pull/6442) + - Better deal with circular dependencies [#6330](https://github.com/ruby/rubygems/pull/6330) ### Documentation: - - Add debugging docs [#6387](https://github.com/rubygems/rubygems/pull/6387) - - Document our current release policy [#6450](https://github.com/rubygems/rubygems/pull/6450) + - Add debugging docs [#6387](https://github.com/ruby/rubygems/pull/6387) + - Document our current release policy [#6450](https://github.com/ruby/rubygems/pull/6450) ## 2.4.8 (2023-03-08) ### Security: - - Safe load all marshaled data [#6384](https://github.com/rubygems/rubygems/pull/6384) + - Safe load all marshaled data [#6384](https://github.com/ruby/rubygems/pull/6384) ### Enhancements: - - Better suggestion when `bundler/setup` fails due to missing gems and Gemfile is not the default [#6428](https://github.com/rubygems/rubygems/pull/6428) - - Simplify the gem package file filter in the gemspec template [#6344](https://github.com/rubygems/rubygems/pull/6344) - - Auto-heal corrupted `Gemfile.lock` with no specs [#6423](https://github.com/rubygems/rubygems/pull/6423) - - Auto-heal on corrupted lockfile with missing deps [#6400](https://github.com/rubygems/rubygems/pull/6400) - - Give a better message when Gemfile branch does not exist [#6383](https://github.com/rubygems/rubygems/pull/6383) + - Better suggestion when `bundler/setup` fails due to missing gems and Gemfile is not the default [#6428](https://github.com/ruby/rubygems/pull/6428) + - Simplify the gem package file filter in the gemspec template [#6344](https://github.com/ruby/rubygems/pull/6344) + - Auto-heal corrupted `Gemfile.lock` with no specs [#6423](https://github.com/ruby/rubygems/pull/6423) + - Auto-heal on corrupted lockfile with missing deps [#6400](https://github.com/ruby/rubygems/pull/6400) + - Give a better message when Gemfile branch does not exist [#6383](https://github.com/ruby/rubygems/pull/6383) ### Bug fixes: - - Respect --no-install option for git: sources [#6088](https://github.com/rubygems/rubygems/pull/6088) - - Fix `gems.rb` lockfile for bundler version lookup in template [#6413](https://github.com/rubygems/rubygems/pull/6413) + - Respect --no-install option for git: sources [#6088](https://github.com/ruby/rubygems/pull/6088) + - Fix `gems.rb` lockfile for bundler version lookup in template [#6413](https://github.com/ruby/rubygems/pull/6413) ### Documentation: - - Switch supporting explanations to all Ruby Central [#6419](https://github.com/rubygems/rubygems/pull/6419) + - Switch supporting explanations to all Ruby Central [#6419](https://github.com/ruby/rubygems/pull/6419) ## 2.4.7 (2023-02-15) ### Enhancements: - - Add `--gemfile` flag to `bundle init` to configure gemfile name to generate [#6046](https://github.com/rubygems/rubygems/pull/6046) - - Improve solve failure explanations by using better wording [#6366](https://github.com/rubygems/rubygems/pull/6366) - - Restore better error message when locked ref does not exist [#6356](https://github.com/rubygems/rubygems/pull/6356) - - Avoid crashing when installing from a corrupted lockfile [#6355](https://github.com/rubygems/rubygems/pull/6355) - - Improve wording of unmet dependencies warning [#6357](https://github.com/rubygems/rubygems/pull/6357) - - Add Ruby 3.2 and 3.3 platforms to Gemfile DSL [#6346](https://github.com/rubygems/rubygems/pull/6346) + - Add `--gemfile` flag to `bundle init` to configure gemfile name to generate [#6046](https://github.com/ruby/rubygems/pull/6046) + - Improve solve failure explanations by using better wording [#6366](https://github.com/ruby/rubygems/pull/6366) + - Restore better error message when locked ref does not exist [#6356](https://github.com/ruby/rubygems/pull/6356) + - Avoid crashing when installing from a corrupted lockfile [#6355](https://github.com/ruby/rubygems/pull/6355) + - Improve wording of unmet dependencies warning [#6357](https://github.com/ruby/rubygems/pull/6357) + - Add Ruby 3.2 and 3.3 platforms to Gemfile DSL [#6346](https://github.com/ruby/rubygems/pull/6346) ### Bug fixes: - - Fix crash in pub grub involving empty ranges [#6365](https://github.com/rubygems/rubygems/pull/6365) - - Make gemspec file generated by `bundle gem` properly exclude itself from packaged gem [#6339](https://github.com/rubygems/rubygems/pull/6339) - - Preserve relative path sources in standalone setup [#6327](https://github.com/rubygems/rubygems/pull/6327) + - Fix crash in pub grub involving empty ranges [#6365](https://github.com/ruby/rubygems/pull/6365) + - Make gemspec file generated by `bundle gem` properly exclude itself from packaged gem [#6339](https://github.com/ruby/rubygems/pull/6339) + - Preserve relative path sources in standalone setup [#6327](https://github.com/ruby/rubygems/pull/6327) ## 2.4.6 (2023-01-31) ### Enhancements: - - Don't warn on `bundle binstubs --standalone --all` [#6312](https://github.com/rubygems/rubygems/pull/6312) + - Don't warn on `bundle binstubs --standalone --all` [#6312](https://github.com/ruby/rubygems/pull/6312) ### Bug fixes: - - Don't undo require decorations made by other gems [#6308](https://github.com/rubygems/rubygems/pull/6308) - - Fix `bundler/inline` not properly installing gems with extensions when used more than once [#6306](https://github.com/rubygems/rubygems/pull/6306) - - Fix `bundler/inline` not skipping installation when gems already there, when used more than once [#6305](https://github.com/rubygems/rubygems/pull/6305) + - Don't undo require decorations made by other gems [#6308](https://github.com/ruby/rubygems/pull/6308) + - Fix `bundler/inline` not properly installing gems with extensions when used more than once [#6306](https://github.com/ruby/rubygems/pull/6306) + - Fix `bundler/inline` not skipping installation when gems already there, when used more than once [#6305](https://github.com/ruby/rubygems/pull/6305) ## 2.4.5 (2023-01-21) ### Bug fixes: - - Fix `bundler/inline` not resolving properly if gems not preinstalled [#6282](https://github.com/rubygems/rubygems/pull/6282) - - Fix packages for external platforms being introduced in lockfile when Bundler retries resolution [#6285](https://github.com/rubygems/rubygems/pull/6285) + - Fix `bundler/inline` not resolving properly if gems not preinstalled [#6282](https://github.com/ruby/rubygems/pull/6282) + - Fix packages for external platforms being introduced in lockfile when Bundler retries resolution [#6285](https://github.com/ruby/rubygems/pull/6285) ### Documentation: - - Update bundle-exec man page to not use deprecated `Bundler.with_clean_env` [#6284](https://github.com/rubygems/rubygems/pull/6284) + - Update bundle-exec man page to not use deprecated `Bundler.with_clean_env` [#6284](https://github.com/ruby/rubygems/pull/6284) ## 2.4.4 (2023-01-16) ### Bug fixes: - - Fix platform specific gems removed from the lockfile [#6266](https://github.com/rubygems/rubygems/pull/6266) - - Properly handle incompatibilities on platform specific gems [#6270](https://github.com/rubygems/rubygems/pull/6270) - - Optimistically exclude prereleases from initial resolution [#6246](https://github.com/rubygems/rubygems/pull/6246) - - Fix another case of not properly falling back to ruby variant when materializing [#6261](https://github.com/rubygems/rubygems/pull/6261) - - Skip setting `BUNDLER_SETUP` on Ruby 2.6 [#6252](https://github.com/rubygems/rubygems/pull/6252) - - Let resolver deal with legacy gems with equivalent version and different dependencies [#6219](https://github.com/rubygems/rubygems/pull/6219) + - Fix platform specific gems removed from the lockfile [#6266](https://github.com/ruby/rubygems/pull/6266) + - Properly handle incompatibilities on platform specific gems [#6270](https://github.com/ruby/rubygems/pull/6270) + - Optimistically exclude prereleases from initial resolution [#6246](https://github.com/ruby/rubygems/pull/6246) + - Fix another case of not properly falling back to ruby variant when materializing [#6261](https://github.com/ruby/rubygems/pull/6261) + - Skip setting `BUNDLER_SETUP` on Ruby 2.6 [#6252](https://github.com/ruby/rubygems/pull/6252) + - Let resolver deal with legacy gems with equivalent version and different dependencies [#6219](https://github.com/ruby/rubygems/pull/6219) ## 2.4.3 (2023-01-06) ### Enhancements: - - Enhance `bundle open` command to allow opening subdir/file of gem [#6146](https://github.com/rubygems/rubygems/pull/6146) + - Enhance `bundle open` command to allow opening subdir/file of gem [#6146](https://github.com/ruby/rubygems/pull/6146) ### Bug fixes: - - Fix pointing GitHub sources to PRs [#6241](https://github.com/rubygems/rubygems/pull/6241) - - Fix version ranges incorrectly handling platforms [#6240](https://github.com/rubygems/rubygems/pull/6240) - - Cleanup unnecessary gems when removing lockfile platforms [#6234](https://github.com/rubygems/rubygems/pull/6234) - - When auto-removing RUBY platform don't add specific platform if not needed [#6233](https://github.com/rubygems/rubygems/pull/6233) - - Fallback to selecting installable candidates if possible when materializing specs [#6225](https://github.com/rubygems/rubygems/pull/6225) + - Fix pointing GitHub sources to PRs [#6241](https://github.com/ruby/rubygems/pull/6241) + - Fix version ranges incorrectly handling platforms [#6240](https://github.com/ruby/rubygems/pull/6240) + - Cleanup unnecessary gems when removing lockfile platforms [#6234](https://github.com/ruby/rubygems/pull/6234) + - When auto-removing RUBY platform don't add specific platform if not needed [#6233](https://github.com/ruby/rubygems/pull/6233) + - Fallback to selecting installable candidates if possible when materializing specs [#6225](https://github.com/ruby/rubygems/pull/6225) ### Documentation: - - Fix several typos [#6224](https://github.com/rubygems/rubygems/pull/6224) + - Fix several typos [#6224](https://github.com/ruby/rubygems/pull/6224) ## 2.4.2 (2023-01-01) ### Performance: - - Speed up resolution by properly merging incompatibility ranges [#6215](https://github.com/rubygems/rubygems/pull/6215) + - Speed up resolution by properly merging incompatibility ranges [#6215](https://github.com/ruby/rubygems/pull/6215) ### Documentation: - - Remove stray word in `bundle config` man page [#6220](https://github.com/rubygems/rubygems/pull/6220) + - Remove stray word in `bundle config` man page [#6220](https://github.com/ruby/rubygems/pull/6220) ## 2.4.1 (2022-12-24) ### Enhancements: - - Allow Bundler to run on old RubyGems + Ruby 2.7 without warnings [#6187](https://github.com/rubygems/rubygems/pull/6187) + - Allow Bundler to run on old RubyGems + Ruby 2.7 without warnings [#6187](https://github.com/ruby/rubygems/pull/6187) ### Bug fixes: - - Fix dependencies scoped to other platforms making resolver fail [#6189](https://github.com/rubygems/rubygems/pull/6189) - - Restore annotated git tag support [#6186](https://github.com/rubygems/rubygems/pull/6186) + - Fix dependencies scoped to other platforms making resolver fail [#6189](https://github.com/ruby/rubygems/pull/6189) + - Restore annotated git tag support [#6186](https://github.com/ruby/rubygems/pull/6186) ## 2.4.0 (2022-12-24) ### Security: - - In README generated by `bundle gem`, do not fill rubygems.org install commands with the gem name automatically [#6093](https://github.com/rubygems/rubygems/pull/6093) - - Use safe Marshal deserialization for dependency API response [#6141](https://github.com/rubygems/rubygems/pull/6141) + - In README generated by `bundle gem`, do not fill rubygems.org install commands with the gem name automatically [#6093](https://github.com/ruby/rubygems/pull/6093) + - Use safe Marshal deserialization for dependency API response [#6141](https://github.com/ruby/rubygems/pull/6141) ### Breaking changes: - - Remove Travis CI from gem skeleton [#6150](https://github.com/rubygems/rubygems/pull/6150) - - Drop support for Ruby 2.3, 2.4, 2.5 and RubyGems 2.5, 2.6, 2.7 [#6107](https://github.com/rubygems/rubygems/pull/6107) - - Completely remove "auto-sudo" feature [#5888](https://github.com/rubygems/rubygems/pull/5888) + - Remove Travis CI from gem skeleton [#6150](https://github.com/ruby/rubygems/pull/6150) + - Drop support for Ruby 2.3, 2.4, 2.5 and RubyGems 2.5, 2.6, 2.7 [#6107](https://github.com/ruby/rubygems/pull/6107) + - Completely remove "auto-sudo" feature [#5888](https://github.com/ruby/rubygems/pull/5888) ### Deprecations: - - Turn `--ext` option of `bundle gem` into string. Deprecate usage without explicit value [#6144](https://github.com/rubygems/rubygems/pull/6144) + - Turn `--ext` option of `bundle gem` into string. Deprecate usage without explicit value [#6144](https://github.com/ruby/rubygems/pull/6144) ### Features: - - Add `--ext=rust` support to `bundle gem` for creating simple gems with Rust extensions [#6149](https://github.com/rubygems/rubygems/pull/6149) - - Migrate our resolver engine to PubGrub [#5960](https://github.com/rubygems/rubygems/pull/5960) + - Add `--ext=rust` support to `bundle gem` for creating simple gems with Rust extensions [#6149](https://github.com/ruby/rubygems/pull/6149) + - Migrate our resolver engine to PubGrub [#5960](https://github.com/ruby/rubygems/pull/5960) ### Performance: - - Make cloning git repos faster [#4475](https://github.com/rubygems/rubygems/pull/4475) + - Make cloning git repos faster [#4475](https://github.com/ruby/rubygems/pull/4475) ### Enhancements: - - Add `bundle lock --update --bundler` [#6134](https://github.com/rubygems/rubygems/pull/6134) - - Support for pre flag in `bundle update`/`bundle lock` [#5258](https://github.com/rubygems/rubygems/pull/5258) - - Improve error message when changing Gemfile to a mistyped git ref [#6130](https://github.com/rubygems/rubygems/pull/6130) - - Remove special handling of some `LoadError` and `NoMethodError` [#6115](https://github.com/rubygems/rubygems/pull/6115) + - Add `bundle lock --update --bundler` [#6134](https://github.com/ruby/rubygems/pull/6134) + - Support for pre flag in `bundle update`/`bundle lock` [#5258](https://github.com/ruby/rubygems/pull/5258) + - Improve error message when changing Gemfile to a mistyped git ref [#6130](https://github.com/ruby/rubygems/pull/6130) + - Remove special handling of some `LoadError` and `NoMethodError` [#6115](https://github.com/ruby/rubygems/pull/6115) ### Bug fixes: - - Don't unlock dependencies of a gemspec when its version changes [#6184](https://github.com/rubygems/rubygems/pull/6184) - - Fix platform specific version for libv8-node and other allowlisted gems not being chosen in Truffleruby [#6169](https://github.com/rubygems/rubygems/pull/6169) - - Fix `bundle outdated` with both `--groups` and `--parseable` flags [#6148](https://github.com/rubygems/rubygems/pull/6148) - - Auto-heal lockfile when it's missing specs [#6132](https://github.com/rubygems/rubygems/pull/6132) - - Fix unintentional downgrades when gemspec DSL is used [#6131](https://github.com/rubygems/rubygems/pull/6131) - - Fix display of previous gem version when previously downloaded already [#6110](https://github.com/rubygems/rubygems/pull/6110) - - Fix hang when a lockfile gem does not resolve on the current platform [#6070](https://github.com/rubygems/rubygems/pull/6070) + - Don't unlock dependencies of a gemspec when its version changes [#6184](https://github.com/ruby/rubygems/pull/6184) + - Fix platform specific version for libv8-node and other allowlisted gems not being chosen in Truffleruby [#6169](https://github.com/ruby/rubygems/pull/6169) + - Fix `bundle outdated` with both `--groups` and `--parseable` flags [#6148](https://github.com/ruby/rubygems/pull/6148) + - Auto-heal lockfile when it's missing specs [#6132](https://github.com/ruby/rubygems/pull/6132) + - Fix unintentional downgrades when gemspec DSL is used [#6131](https://github.com/ruby/rubygems/pull/6131) + - Fix display of previous gem version when previously downloaded already [#6110](https://github.com/ruby/rubygems/pull/6110) + - Fix hang when a lockfile gem does not resolve on the current platform [#6070](https://github.com/ruby/rubygems/pull/6070) ### Documentation: - - Improve Bundler setup docs for development [#6154](https://github.com/rubygems/rubygems/pull/6154) - - Fx link in bundle-platform man page [#6071](https://github.com/rubygems/rubygems/pull/6071) + - Improve Bundler setup docs for development [#6154](https://github.com/ruby/rubygems/pull/6154) + - Fx link in bundle-platform man page [#6071](https://github.com/ruby/rubygems/pull/6071) ## 2.3.26 (2022-11-16) ### Enhancements: - - Map 'universal' to the real arch in Bundler for prebuilt gem selection [#5978](https://github.com/rubygems/rubygems/pull/5978) + - Map 'universal' to the real arch in Bundler for prebuilt gem selection [#5978](https://github.com/ruby/rubygems/pull/5978) ### Documentation: - - Fix '--force' option documentation of 'bundle clean' [#6050](https://github.com/rubygems/rubygems/pull/6050) + - Fix '--force' option documentation of 'bundle clean' [#6050](https://github.com/ruby/rubygems/pull/6050) ## 2.3.25 (2022-11-02) ### Bug fixes: - - Properly sort specs when materializing [#6015](https://github.com/rubygems/rubygems/pull/6015) - - Fix bad unfreeze recommendation [#6013](https://github.com/rubygems/rubygems/pull/6013) + - Properly sort specs when materializing [#6015](https://github.com/ruby/rubygems/pull/6015) + - Fix bad unfreeze recommendation [#6013](https://github.com/ruby/rubygems/pull/6013) ### Documentation: - - Bring docs for gemfile(5) manpage up to date [#6007](https://github.com/rubygems/rubygems/pull/6007) - - Fix `github` DSL docs to mention they use https protocol over git under the hood [#5993](https://github.com/rubygems/rubygems/pull/5993) + - Bring docs for gemfile(5) manpage up to date [#6007](https://github.com/ruby/rubygems/pull/6007) + - Fix `github` DSL docs to mention they use https protocol over git under the hood [#5993](https://github.com/ruby/rubygems/pull/5993) ## 2.3.24 (2022-10-17) ### Enhancements: - - Only add extra resolver spec group for Ruby platform when needed [#5698](https://github.com/rubygems/rubygems/pull/5698) - - Fix little UI issue when bundler shows duplicated gems in a list [#5965](https://github.com/rubygems/rubygems/pull/5965) + - Only add extra resolver spec group for Ruby platform when needed [#5698](https://github.com/ruby/rubygems/pull/5698) + - Fix little UI issue when bundler shows duplicated gems in a list [#5965](https://github.com/ruby/rubygems/pull/5965) ### Bug fixes: - - Fix incorrect materialization on Windows [#5975](https://github.com/rubygems/rubygems/pull/5975) + - Fix incorrect materialization on Windows [#5975](https://github.com/ruby/rubygems/pull/5975) ## 2.3.23 (2022-10-05) ### Enhancements: - - Update GitLab CI template with new one [#5944](https://github.com/rubygems/rubygems/pull/5944) + - Update GitLab CI template with new one [#5944](https://github.com/ruby/rubygems/pull/5944) ### Bug fixes: - - Fix `bundle init` not respecting umask in generated gem's Gemfile [#5947](https://github.com/rubygems/rubygems/pull/5947) + - Fix `bundle init` not respecting umask in generated gem's Gemfile [#5947](https://github.com/ruby/rubygems/pull/5947) ### Performance: - - Further speed up Bundler by not sorting specs unnecessarily [#5868](https://github.com/rubygems/rubygems/pull/5868) + - Further speed up Bundler by not sorting specs unnecessarily [#5868](https://github.com/ruby/rubygems/pull/5868) ### Documentation: - - Update Bundler new feature instructions [#5912](https://github.com/rubygems/rubygems/pull/5912) + - Update Bundler new feature instructions [#5912](https://github.com/ruby/rubygems/pull/5912) ## 2.3.22 (2022-09-07) ### Enhancements: - - Use a more accurate source code uri in gemspec [#5896](https://github.com/rubygems/rubygems/pull/5896) - - Support `--path` option in `bundle add` [#5897](https://github.com/rubygems/rubygems/pull/5897) - - Improve lockfile dependency unlocking [#5881](https://github.com/rubygems/rubygems/pull/5881) - - Add platform alias `:windows` to Gemfile DSL [#5650](https://github.com/rubygems/rubygems/pull/5650) - - Make `#to_lock` consistent between `Gem::Dependency` and `Bundler::Dependency` [#5872](https://github.com/rubygems/rubygems/pull/5872) - - Support marshaled index specifications with `nil` required ruby version [#5824](https://github.com/rubygems/rubygems/pull/5824) + - Use a more accurate source code uri in gemspec [#5896](https://github.com/ruby/rubygems/pull/5896) + - Support `--path` option in `bundle add` [#5897](https://github.com/ruby/rubygems/pull/5897) + - Improve lockfile dependency unlocking [#5881](https://github.com/ruby/rubygems/pull/5881) + - Add platform alias `:windows` to Gemfile DSL [#5650](https://github.com/ruby/rubygems/pull/5650) + - Make `#to_lock` consistent between `Gem::Dependency` and `Bundler::Dependency` [#5872](https://github.com/ruby/rubygems/pull/5872) + - Support marshaled index specifications with `nil` required ruby version [#5824](https://github.com/ruby/rubygems/pull/5824) ### Bug fixes: - - Fix resolution hanging on musl platforms [#5875](https://github.com/rubygems/rubygems/pull/5875) - - Fix another regression affecting the sorbet family of gems [#5874](https://github.com/rubygems/rubygems/pull/5874) + - Fix resolution hanging on musl platforms [#5875](https://github.com/ruby/rubygems/pull/5875) + - Fix another regression affecting the sorbet family of gems [#5874](https://github.com/ruby/rubygems/pull/5874) ### Documentation: - - Introduce bundle-console(1) man [#5901](https://github.com/rubygems/rubygems/pull/5901) - - Introduce bundle-version(1) man [#5895](https://github.com/rubygems/rubygems/pull/5895) - - Introduce bundle-help(1) man [#5886](https://github.com/rubygems/rubygems/pull/5886) + - Introduce bundle-console(1) man [#5901](https://github.com/ruby/rubygems/pull/5901) + - Introduce bundle-version(1) man [#5895](https://github.com/ruby/rubygems/pull/5895) + - Introduce bundle-help(1) man [#5886](https://github.com/ruby/rubygems/pull/5886) ## 2.3.21 (2022-08-24) ### Enhancements: - - Backport non gnu libc linux support from RubyGems [#4488](https://github.com/rubygems/rubygems/pull/4488) - - Improve `Bundler.rm_rf` error message [#5861](https://github.com/rubygems/rubygems/pull/5861) - - Disallow both `--branch` and `--ref` at the same time in bundle-plugin [#5855](https://github.com/rubygems/rubygems/pull/5855) - - Restore previous performance of private RubyGems servers [#5826](https://github.com/rubygems/rubygems/pull/5826) + - Backport non gnu libc linux support from RubyGems [#4488](https://github.com/ruby/rubygems/pull/4488) + - Improve `Bundler.rm_rf` error message [#5861](https://github.com/ruby/rubygems/pull/5861) + - Disallow both `--branch` and `--ref` at the same time in bundle-plugin [#5855](https://github.com/ruby/rubygems/pull/5855) + - Restore previous performance of private RubyGems servers [#5826](https://github.com/ruby/rubygems/pull/5826) ### Bug fixes: - - Fix conservative update downgrading top level gems [#5847](https://github.com/rubygems/rubygems/pull/5847) - - Fix edge case where `bundler/inline` unintentionally skips install [#5848](https://github.com/rubygems/rubygems/pull/5848) - - Fix `bundle platform` crash when there's a lockfile with no Ruby locked [#5850](https://github.com/rubygems/rubygems/pull/5850) - - Fix crash when incomplete locked specifications are found in transitive dependencies [#5840](https://github.com/rubygems/rubygems/pull/5840) - - Fix Ruby platform incorrectly removed on `bundle update` [#5832](https://github.com/rubygems/rubygems/pull/5832) + - Fix conservative update downgrading top level gems [#5847](https://github.com/ruby/rubygems/pull/5847) + - Fix edge case where `bundler/inline` unintentionally skips install [#5848](https://github.com/ruby/rubygems/pull/5848) + - Fix `bundle platform` crash when there's a lockfile with no Ruby locked [#5850](https://github.com/ruby/rubygems/pull/5850) + - Fix crash when incomplete locked specifications are found in transitive dependencies [#5840](https://github.com/ruby/rubygems/pull/5840) + - Fix Ruby platform incorrectly removed on `bundle update` [#5832](https://github.com/ruby/rubygems/pull/5832) ### Documentation: - - Explain cancelled CLI deprecations clearly [#5864](https://github.com/rubygems/rubygems/pull/5864) - - Improve `bundle config` command synopsis [#5854](https://github.com/rubygems/rubygems/pull/5854) - - Introduce bundle-plugin(1) man [#5853](https://github.com/rubygems/rubygems/pull/5853) + - Explain cancelled CLI deprecations clearly [#5864](https://github.com/ruby/rubygems/pull/5864) + - Improve `bundle config` command synopsis [#5854](https://github.com/ruby/rubygems/pull/5854) + - Introduce bundle-plugin(1) man [#5853](https://github.com/ruby/rubygems/pull/5853) ## 2.3.20 (2022-08-10) ### Enhancements: - - Consistently ignore patchlevel when reporting `bundle platform --ruby` [#5793](https://github.com/rubygems/rubygems/pull/5793) - - Make `--standalone` play nice with `--local` [#5762](https://github.com/rubygems/rubygems/pull/5762) - - Implement `bundle install --prefer-local` [#5761](https://github.com/rubygems/rubygems/pull/5761) + - Consistently ignore patchlevel when reporting `bundle platform --ruby` [#5793](https://github.com/ruby/rubygems/pull/5793) + - Make `--standalone` play nice with `--local` [#5762](https://github.com/ruby/rubygems/pull/5762) + - Implement `bundle install --prefer-local` [#5761](https://github.com/ruby/rubygems/pull/5761) ### Bug fixes: - - Fix regression where yanked gems are now unintentionally updated when other gems are unlocked [#5812](https://github.com/rubygems/rubygems/pull/5812) - - Automatically remove "ruby" from lockfile if incomplete [#5807](https://github.com/rubygems/rubygems/pull/5807) - - Fix `bundle outdated --strict` showing too many outdated gems [#5798](https://github.com/rubygems/rubygems/pull/5798) - - Don't discard candidates matching Ruby metadata [#5784](https://github.com/rubygems/rubygems/pull/5784) - - Fix `bundle outdated` crash in debug mode [#5796](https://github.com/rubygems/rubygems/pull/5796) - - Fix `ruby` DSL requirement matching for head and prerelease rubies [#5766](https://github.com/rubygems/rubygems/pull/5766) + - Fix regression where yanked gems are now unintentionally updated when other gems are unlocked [#5812](https://github.com/ruby/rubygems/pull/5812) + - Automatically remove "ruby" from lockfile if incomplete [#5807](https://github.com/ruby/rubygems/pull/5807) + - Fix `bundle outdated --strict` showing too many outdated gems [#5798](https://github.com/ruby/rubygems/pull/5798) + - Don't discard candidates matching Ruby metadata [#5784](https://github.com/ruby/rubygems/pull/5784) + - Fix `bundle outdated` crash in debug mode [#5796](https://github.com/ruby/rubygems/pull/5796) + - Fix `ruby` DSL requirement matching for head and prerelease rubies [#5766](https://github.com/ruby/rubygems/pull/5766) ### Documentation: - - Update Bundler support policies to match what we do these days [#5813](https://github.com/rubygems/rubygems/pull/5813) - - Fix arguments for bundle-config(1) docs [#5804](https://github.com/rubygems/rubygems/pull/5804) - - Improve `bundle platform` man page [#5788](https://github.com/rubygems/rubygems/pull/5788) - - Remove `bundle cache` from deprecated commands list, and consistently link to `bundle cache` in man pages [#5783](https://github.com/rubygems/rubygems/pull/5783) - - Add package/pack aliases to man pages for cache [#5785](https://github.com/rubygems/rubygems/pull/5785) - - Add deprecation notice of bundle console [#5775](https://github.com/rubygems/rubygems/pull/5775) + - Update Bundler support policies to match what we do these days [#5813](https://github.com/ruby/rubygems/pull/5813) + - Fix arguments for bundle-config(1) docs [#5804](https://github.com/ruby/rubygems/pull/5804) + - Improve `bundle platform` man page [#5788](https://github.com/ruby/rubygems/pull/5788) + - Remove `bundle cache` from deprecated commands list, and consistently link to `bundle cache` in man pages [#5783](https://github.com/ruby/rubygems/pull/5783) + - Add package/pack aliases to man pages for cache [#5785](https://github.com/ruby/rubygems/pull/5785) + - Add deprecation notice of bundle console [#5775](https://github.com/ruby/rubygems/pull/5775) ## 2.3.19 (2022-07-27) ### Enhancements: - - Add `Bundler.settings[:only]` to install gems of the specified groups [#5759](https://github.com/rubygems/rubygems/pull/5759) - - Add `ignore_funding_requests` config flag [#5767](https://github.com/rubygems/rubygems/pull/5767) - - Prevent random crash when autoloading `Pathname` [#5769](https://github.com/rubygems/rubygems/pull/5769) - - Don't corrupt lockfile when user moves a gem that's already in the lockfile to an incorrect source by mistake [#5070](https://github.com/rubygems/rubygems/pull/5070) - - Reconcile error/warning message for multiple global sources with documentation [#5741](https://github.com/rubygems/rubygems/pull/5741) - - Improve error message when gems cannot be found to include the source for each gem [#5729](https://github.com/rubygems/rubygems/pull/5729) + - Add `Bundler.settings[:only]` to install gems of the specified groups [#5759](https://github.com/ruby/rubygems/pull/5759) + - Add `ignore_funding_requests` config flag [#5767](https://github.com/ruby/rubygems/pull/5767) + - Prevent random crash when autoloading `Pathname` [#5769](https://github.com/ruby/rubygems/pull/5769) + - Don't corrupt lockfile when user moves a gem that's already in the lockfile to an incorrect source by mistake [#5070](https://github.com/ruby/rubygems/pull/5070) + - Reconcile error/warning message for multiple global sources with documentation [#5741](https://github.com/ruby/rubygems/pull/5741) + - Improve error message when gems cannot be found to include the source for each gem [#5729](https://github.com/ruby/rubygems/pull/5729) ### Bug fixes: - - Fix yet another TruffleRuby platform selection regression [#5746](https://github.com/rubygems/rubygems/pull/5746) - - Show a proper error if extension dir is not writable [#5726](https://github.com/rubygems/rubygems/pull/5726) + - Fix yet another TruffleRuby platform selection regression [#5746](https://github.com/ruby/rubygems/pull/5746) + - Show a proper error if extension dir is not writable [#5726](https://github.com/ruby/rubygems/pull/5726) ### Performance: - - Lazily check incomplete lockfile to improve performance [#5546](https://github.com/rubygems/rubygems/pull/5546) + - Lazily check incomplete lockfile to improve performance [#5546](https://github.com/ruby/rubygems/pull/5546) ### Documentation: - - Add deprecation notice of bundle inject [#5776](https://github.com/rubygems/rubygems/pull/5776) - - Add deprecation notice of `bundle viz` to man pages [#5765](https://github.com/rubygems/rubygems/pull/5765) - - Update command example in `bundle exec` man page [#5754](https://github.com/rubygems/rubygems/pull/5754) - - Remove bundle show from obsolete commands [#5753](https://github.com/rubygems/rubygems/pull/5753) - - Improve global source(s) documentation [#5732](https://github.com/rubygems/rubygems/pull/5732) - - Use https protocol for URLs for config mirror in bundler man [#5722](https://github.com/rubygems/rubygems/pull/5722) + - Add deprecation notice of bundle inject [#5776](https://github.com/ruby/rubygems/pull/5776) + - Add deprecation notice of `bundle viz` to man pages [#5765](https://github.com/ruby/rubygems/pull/5765) + - Update command example in `bundle exec` man page [#5754](https://github.com/ruby/rubygems/pull/5754) + - Remove bundle show from obsolete commands [#5753](https://github.com/ruby/rubygems/pull/5753) + - Improve global source(s) documentation [#5732](https://github.com/ruby/rubygems/pull/5732) + - Use https protocol for URLs for config mirror in bundler man [#5722](https://github.com/ruby/rubygems/pull/5722) ## 2.3.18 (2022-07-14) ### Enhancements: - - Extend `gem` DSL with a `force_ruby_platform` option [#4049](https://github.com/rubygems/rubygems/pull/4049) + - Extend `gem` DSL with a `force_ruby_platform` option [#4049](https://github.com/ruby/rubygems/pull/4049) ### Bug fixes: - - Fix misleading error if compact index cannot be copied [#5709](https://github.com/rubygems/rubygems/pull/5709) - - Fix TruffleRuby no longer able to install lockfiles generated with other implementations [#5711](https://github.com/rubygems/rubygems/pull/5711) - - Fix TruffleRuby no longer installing lockfiles using "ruby" platform correctly [#5694](https://github.com/rubygems/rubygems/pull/5694) - - Fix crash when updating vendor cache of default gems [#5679](https://github.com/rubygems/rubygems/pull/5679) + - Fix misleading error if compact index cannot be copied [#5709](https://github.com/ruby/rubygems/pull/5709) + - Fix TruffleRuby no longer able to install lockfiles generated with other implementations [#5711](https://github.com/ruby/rubygems/pull/5711) + - Fix TruffleRuby no longer installing lockfiles using "ruby" platform correctly [#5694](https://github.com/ruby/rubygems/pull/5694) + - Fix crash when updating vendor cache of default gems [#5679](https://github.com/ruby/rubygems/pull/5679) ### Performance: - - Speed up `bundler/setup` by using the raw `Gemfile.lock` information without extra processing whenever possible [#5695](https://github.com/rubygems/rubygems/pull/5695) + - Speed up `bundler/setup` by using the raw `Gemfile.lock` information without extra processing whenever possible [#5695](https://github.com/ruby/rubygems/pull/5695) ### Documentation: - - Use modern style hashes in Gemfile DSL docs [#5674](https://github.com/rubygems/rubygems/pull/5674) + - Use modern style hashes in Gemfile DSL docs [#5674](https://github.com/ruby/rubygems/pull/5674) ## 2.3.17 (2022-06-29) ### Enhancements: - - Add support for platform `:x64_mingw` to correctly lookup "x64-mingw-ucrt" [#5649](https://github.com/rubygems/rubygems/pull/5649) - - Fix some errors being printed twice in `--verbose` mode [#5654](https://github.com/rubygems/rubygems/pull/5654) - - Fix extension paths in generated standalone script [#5632](https://github.com/rubygems/rubygems/pull/5632) + - Add support for platform `:x64_mingw` to correctly lookup "x64-mingw-ucrt" [#5649](https://github.com/ruby/rubygems/pull/5649) + - Fix some errors being printed twice in `--verbose` mode [#5654](https://github.com/ruby/rubygems/pull/5654) + - Fix extension paths in generated standalone script [#5632](https://github.com/ruby/rubygems/pull/5632) ### Bug fixes: - - Raise if ruby platform is forced and there are no ruby variants [#5495](https://github.com/rubygems/rubygems/pull/5495) - - Fix `bundle package --no-install` no longer skipping install [#5639](https://github.com/rubygems/rubygems/pull/5639) + - Raise if ruby platform is forced and there are no ruby variants [#5495](https://github.com/ruby/rubygems/pull/5495) + - Fix `bundle package --no-install` no longer skipping install [#5639](https://github.com/ruby/rubygems/pull/5639) ### Performance: - - Improve performance of `Bundler::SpecSet#for` by using hash lookup of handled deps [#5537](https://github.com/rubygems/rubygems/pull/5537) + - Improve performance of `Bundler::SpecSet#for` by using hash lookup of handled deps [#5537](https://github.com/ruby/rubygems/pull/5537) ### Documentation: - - Fix formatting issue in `bundle add` man page [#5642](https://github.com/rubygems/rubygems/pull/5642) + - Fix formatting issue in `bundle add` man page [#5642](https://github.com/ruby/rubygems/pull/5642) ## 2.3.16 (2022-06-15) ### Performance: - - Improve performance of installing gems from gem server sources [#5614](https://github.com/rubygems/rubygems/pull/5614) + - Improve performance of installing gems from gem server sources [#5614](https://github.com/ruby/rubygems/pull/5614) ## 2.3.15 (2022-06-01) ### Enhancements: - - Show better error when previous installation fails to be removed [#5564](https://github.com/rubygems/rubygems/pull/5564) - - Show exception cause in bug report template [#5563](https://github.com/rubygems/rubygems/pull/5563) + - Show better error when previous installation fails to be removed [#5564](https://github.com/ruby/rubygems/pull/5564) + - Show exception cause in bug report template [#5563](https://github.com/ruby/rubygems/pull/5563) ### Bug fixes: - - Fix `bundle remove` by invalidating cached `Bundle.definition` [#5443](https://github.com/rubygems/rubygems/pull/5443) - - Fix generated standalone script when it includes default gems [#5586](https://github.com/rubygems/rubygems/pull/5586) - - Skip duplicated dependency warning for gemspec dev deps [#5587](https://github.com/rubygems/rubygems/pull/5587) - - Give better conflict resolution advice [#5581](https://github.com/rubygems/rubygems/pull/5581) - - Fix crash when commenting out a mirror in configuration [#5576](https://github.com/rubygems/rubygems/pull/5576) - - Fix crash when installing gems with symlinks [#5570](https://github.com/rubygems/rubygems/pull/5570) - - Ignore `Errno::EROFS` errors when creating `bundler.lock` [#5580](https://github.com/rubygems/rubygems/pull/5580) - - Ignore `Errno::EPERM` errors when creating `bundler.lock` [#5579](https://github.com/rubygems/rubygems/pull/5579) - - Fix crash when printing resolution conflicts on metadata requirements [#5562](https://github.com/rubygems/rubygems/pull/5562) + - Fix `bundle remove` by invalidating cached `Bundle.definition` [#5443](https://github.com/ruby/rubygems/pull/5443) + - Fix generated standalone script when it includes default gems [#5586](https://github.com/ruby/rubygems/pull/5586) + - Skip duplicated dependency warning for gemspec dev deps [#5587](https://github.com/ruby/rubygems/pull/5587) + - Give better conflict resolution advice [#5581](https://github.com/ruby/rubygems/pull/5581) + - Fix crash when commenting out a mirror in configuration [#5576](https://github.com/ruby/rubygems/pull/5576) + - Fix crash when installing gems with symlinks [#5570](https://github.com/ruby/rubygems/pull/5570) + - Ignore `Errno::EROFS` errors when creating `bundler.lock` [#5580](https://github.com/ruby/rubygems/pull/5580) + - Ignore `Errno::EPERM` errors when creating `bundler.lock` [#5579](https://github.com/ruby/rubygems/pull/5579) + - Fix crash when printing resolution conflicts on metadata requirements [#5562](https://github.com/ruby/rubygems/pull/5562) ## 2.3.14 (2022-05-18) ### Bug fixes: - - Fix confusing inline mode install output [#5530](https://github.com/rubygems/rubygems/pull/5530) - - Fix error message when locked version of a gem does not support running Ruby [#5525](https://github.com/rubygems/rubygems/pull/5525) + - Fix confusing inline mode install output [#5530](https://github.com/ruby/rubygems/pull/5530) + - Fix error message when locked version of a gem does not support running Ruby [#5525](https://github.com/ruby/rubygems/pull/5525) ### Performance: - - Improve `bundler/setup` performance again by not deduplicating intermediate results [#5533](https://github.com/rubygems/rubygems/pull/5533) + - Improve `bundler/setup` performance again by not deduplicating intermediate results [#5533](https://github.com/ruby/rubygems/pull/5533) ### Documentation: - - Fix typo in documentation [#5514](https://github.com/rubygems/rubygems/pull/5514) - - Update man page for `require` option in `bundle add` command [#5513](https://github.com/rubygems/rubygems/pull/5513) + - Fix typo in documentation [#5514](https://github.com/ruby/rubygems/pull/5514) + - Update man page for `require` option in `bundle add` command [#5513](https://github.com/ruby/rubygems/pull/5513) ## 2.3.13 (2022-05-04) ### Bug fixes: - - Fix missing required rubygems version when using old APIs [#5496](https://github.com/rubygems/rubygems/pull/5496) - - Fix crash when gem used twice in Gemfile under different platforms [#5187](https://github.com/rubygems/rubygems/pull/5187) + - Fix missing required rubygems version when using old APIs [#5496](https://github.com/ruby/rubygems/pull/5496) + - Fix crash when gem used twice in Gemfile under different platforms [#5187](https://github.com/ruby/rubygems/pull/5187) ### Performance: - - Speed up `bundler/setup` time [#5503](https://github.com/rubygems/rubygems/pull/5503) + - Speed up `bundler/setup` time [#5503](https://github.com/ruby/rubygems/pull/5503) ## 2.3.12 (2022-04-20) ### Enhancements: - - Improve Ruby version resolution conflicts [#5474](https://github.com/rubygems/rubygems/pull/5474) - - Stop considering `RUBY_PATCHLEVEL` for resolution [#5472](https://github.com/rubygems/rubygems/pull/5472) - - Add modern rubies as valid platform values in Gemfile DSL [#5469](https://github.com/rubygems/rubygems/pull/5469) + - Improve Ruby version resolution conflicts [#5474](https://github.com/ruby/rubygems/pull/5474) + - Stop considering `RUBY_PATCHLEVEL` for resolution [#5472](https://github.com/ruby/rubygems/pull/5472) + - Add modern rubies as valid platform values in Gemfile DSL [#5469](https://github.com/ruby/rubygems/pull/5469) ## 2.3.11 (2022-04-07) ### Enhancements: - - Bump actions/checkout to 3 in bundler gem template [#5445](https://github.com/rubygems/rubygems/pull/5445) - - Prefer `__dir__` to `__FILE__` [#5444](https://github.com/rubygems/rubygems/pull/5444) + - Bump actions/checkout to 3 in bundler gem template [#5445](https://github.com/ruby/rubygems/pull/5445) + - Prefer `__dir__` to `__FILE__` [#5444](https://github.com/ruby/rubygems/pull/5444) ### Documentation: - - Update bundler documentation to reflect bundle config scope changes [#5441](https://github.com/rubygems/rubygems/pull/5441) + - Update bundler documentation to reflect bundle config scope changes [#5441](https://github.com/ruby/rubygems/pull/5441) ## 2.3.10 (2022-03-23) ### Enhancements: - - More helpful reporting of marshal loading issues [#5416](https://github.com/rubygems/rubygems/pull/5416) - - Report Github Actions CI provider within user agent string [#5400](https://github.com/rubygems/rubygems/pull/5400) - - Remove extra closing bracket in version warning [#5397](https://github.com/rubygems/rubygems/pull/5397) + - More helpful reporting of marshal loading issues [#5416](https://github.com/ruby/rubygems/pull/5416) + - Report Github Actions CI provider within user agent string [#5400](https://github.com/ruby/rubygems/pull/5400) + - Remove extra closing bracket in version warning [#5397](https://github.com/ruby/rubygems/pull/5397) ## 2.3.9 (2022-03-09) ### Enhancements: - - Add newline to validate_platforms! message when platform is missing [#5353](https://github.com/rubygems/rubygems/pull/5353) - - Suggest quicker `bundle add` for installation in `README.md` generated by `bundle gem` [#5337](https://github.com/rubygems/rubygems/pull/5337) - - Make `--strict` flag of `update` and `outdated` commands consistent [#5379](https://github.com/rubygems/rubygems/pull/5379) + - Add newline to validate_platforms! message when platform is missing [#5353](https://github.com/ruby/rubygems/pull/5353) + - Suggest quicker `bundle add` for installation in `README.md` generated by `bundle gem` [#5337](https://github.com/ruby/rubygems/pull/5337) + - Make `--strict` flag of `update` and `outdated` commands consistent [#5379](https://github.com/ruby/rubygems/pull/5379) ### Bug fixes: - - Fix regression when activating gem executables caused by Bundler monkey patches to RubyGems [#5386](https://github.com/rubygems/rubygems/pull/5386) + - Fix regression when activating gem executables caused by Bundler monkey patches to RubyGems [#5386](https://github.com/ruby/rubygems/pull/5386) ## 2.3.8 (2022-02-23) ### Bug fixes: - - Fix corrupted lockfile when running `bundle check` and having to re-resolve locally [#5344](https://github.com/rubygems/rubygems/pull/5344) - - Fix typo in multiple gemfiles warning [#5342](https://github.com/rubygems/rubygems/pull/5342) + - Fix corrupted lockfile when running `bundle check` and having to re-resolve locally [#5344](https://github.com/ruby/rubygems/pull/5344) + - Fix typo in multiple gemfiles warning [#5342](https://github.com/ruby/rubygems/pull/5342) ### Documentation: - - Add clarification for bundle-config "with" option [#5346](https://github.com/rubygems/rubygems/pull/5346) + - Add clarification for bundle-config "with" option [#5346](https://github.com/ruby/rubygems/pull/5346) ## 2.3.7 (2022-02-09) ### Enhancements: - - Don't activate `yaml` gem from Bundler [#5277](https://github.com/rubygems/rubygems/pull/5277) - - Add Reverse Dependencies section to info command [#3966](https://github.com/rubygems/rubygems/pull/3966) + - Don't activate `yaml` gem from Bundler [#5277](https://github.com/ruby/rubygems/pull/5277) + - Add Reverse Dependencies section to info command [#3966](https://github.com/ruby/rubygems/pull/3966) ### Bug fixes: - - Don't silently persist `BUNDLE_WITH` and `BUNDLE_WITHOUT` envs locally [#5335](https://github.com/rubygems/rubygems/pull/5335) - - Fix `bundle config` inside an application saving configuration globally [#4152](https://github.com/rubygems/rubygems/pull/4152) + - Don't silently persist `BUNDLE_WITH` and `BUNDLE_WITHOUT` envs locally [#5335](https://github.com/ruby/rubygems/pull/5335) + - Fix `bundle config` inside an application saving configuration globally [#4152](https://github.com/ruby/rubygems/pull/4152) ## 2.3.6 (2022-01-26) ### Enhancements: - - Use `Gem::Platform.local` instead of `RUBY_PLATFORM` when displaying local platform [#5306](https://github.com/rubygems/rubygems/pull/5306) - - Lock standard.yml to the required ruby version [#5284](https://github.com/rubygems/rubygems/pull/5284) - - Use `Fiddle` in `bundle doctor` to check for dynamic library presence [#5173](https://github.com/rubygems/rubygems/pull/5173) + - Use `Gem::Platform.local` instead of `RUBY_PLATFORM` when displaying local platform [#5306](https://github.com/ruby/rubygems/pull/5306) + - Lock standard.yml to the required ruby version [#5284](https://github.com/ruby/rubygems/pull/5284) + - Use `Fiddle` in `bundle doctor` to check for dynamic library presence [#5173](https://github.com/ruby/rubygems/pull/5173) ### Bug fixes: - - Fix edge case where gems were incorrectly removed from the lockfile [#5302](https://github.com/rubygems/rubygems/pull/5302) - - Fix `force_ruby_platform` ignored when lockfile includes current specific platform [#5304](https://github.com/rubygems/rubygems/pull/5304) - - Create minitest file to underscored path in "bundle gem" command with dashed gem name [#5273](https://github.com/rubygems/rubygems/pull/5273) - - Fix regression with old marshaled specs having null `required_rubygems_version` [#5291](https://github.com/rubygems/rubygems/pull/5291) + - Fix edge case where gems were incorrectly removed from the lockfile [#5302](https://github.com/ruby/rubygems/pull/5302) + - Fix `force_ruby_platform` ignored when lockfile includes current specific platform [#5304](https://github.com/ruby/rubygems/pull/5304) + - Create minitest file to underscored path in "bundle gem" command with dashed gem name [#5273](https://github.com/ruby/rubygems/pull/5273) + - Fix regression with old marshaled specs having null `required_rubygems_version` [#5291](https://github.com/ruby/rubygems/pull/5291) ## 2.3.5 (2022-01-12) ### Enhancements: - - Make `bundle update --bundler` actually lock to the latest bundler version (even if not yet installed) [#5182](https://github.com/rubygems/rubygems/pull/5182) - - Use thor-1.2.1 [#5260](https://github.com/rubygems/rubygems/pull/5260) - - Exclude bin directory for newgem template [#5259](https://github.com/rubygems/rubygems/pull/5259) + - Make `bundle update --bundler` actually lock to the latest bundler version (even if not yet installed) [#5182](https://github.com/ruby/rubygems/pull/5182) + - Use thor-1.2.1 [#5260](https://github.com/ruby/rubygems/pull/5260) + - Exclude bin directory for newgem template [#5259](https://github.com/ruby/rubygems/pull/5259) ### Bug fixes: - - Fix metadata requirements being bypassed when custom gem servers are used [#5256](https://github.com/rubygems/rubygems/pull/5256) - - Fix `rake build:checksum` writing checksum of package path, not package contents [#5250](https://github.com/rubygems/rubygems/pull/5250) + - Fix metadata requirements being bypassed when custom gem servers are used [#5256](https://github.com/ruby/rubygems/pull/5256) + - Fix `rake build:checksum` writing checksum of package path, not package contents [#5250](https://github.com/ruby/rubygems/pull/5250) ## 2.3.4 (2021-12-29) ### Enhancements: - - Improve error message when `BUNDLED WITH` version does not exist [#5205](https://github.com/rubygems/rubygems/pull/5205) + - Improve error message when `BUNDLED WITH` version does not exist [#5205](https://github.com/ruby/rubygems/pull/5205) ### Bug fixes: - - Fix `bundle update --bundler` no longer updating lockfile [#5224](https://github.com/rubygems/rubygems/pull/5224) + - Fix `bundle update --bundler` no longer updating lockfile [#5224](https://github.com/ruby/rubygems/pull/5224) ## 2.3.3 (2021-12-24) ### Bug fixes: - - Fix locked bundler not installed to the right path when `deployment` is set [#5217](https://github.com/rubygems/rubygems/pull/5217) + - Fix locked bundler not installed to the right path when `deployment` is set [#5217](https://github.com/ruby/rubygems/pull/5217) ## 2.3.2 (2021-12-23) ### Enhancements: - - Remove unnecessary lockfile upgrade warning [#5209](https://github.com/rubygems/rubygems/pull/5209) + - Remove unnecessary lockfile upgrade warning [#5209](https://github.com/ruby/rubygems/pull/5209) ## 2.3.1 (2021-12-22) ### Enhancements: - - Vendor latest `thor` with fixes for latest `did_you_mean` deprecations [#5202](https://github.com/rubygems/rubygems/pull/5202) - - Avoid unnecessary `shellwords` require on newer rubygems [#5195](https://github.com/rubygems/rubygems/pull/5195) - - Re-exec prepending command with `Gem.ruby` if `$PROGRAM_NAME` is not executable [#5193](https://github.com/rubygems/rubygems/pull/5193) + - Vendor latest `thor` with fixes for latest `did_you_mean` deprecations [#5202](https://github.com/ruby/rubygems/pull/5202) + - Avoid unnecessary `shellwords` require on newer rubygems [#5195](https://github.com/ruby/rubygems/pull/5195) + - Re-exec prepending command with `Gem.ruby` if `$PROGRAM_NAME` is not executable [#5193](https://github.com/ruby/rubygems/pull/5193) ## 2.3.0 (2021-12-21) ### Features: - - Change `bundle install` with a lockfile to respect the `BUNDLED WITH` bundler version [#4076](https://github.com/rubygems/rubygems/pull/4076) + - Change `bundle install` with a lockfile to respect the `BUNDLED WITH` bundler version [#4076](https://github.com/ruby/rubygems/pull/4076) ### Enhancements: - - Cancel deprecation of custom git sources [#5147](https://github.com/rubygems/rubygems/pull/5147) - - Print warning when running Bundler on potentially problematic RubyGems & Ruby combinations [#5177](https://github.com/rubygems/rubygems/pull/5177) - - Error tracing should be printed to stderr [#5179](https://github.com/rubygems/rubygems/pull/5179) - - Add `github` and `ref` options to `bundle add` [#5159](https://github.com/rubygems/rubygems/pull/5159) - - Add require parameter to `bundle add` [#5021](https://github.com/rubygems/rubygems/pull/5021) - - Enable parallel installation on Windows by default [#4822](https://github.com/rubygems/rubygems/pull/4822) - - More logging when compact index is not used and we fallback to other APIs [#4546](https://github.com/rubygems/rubygems/pull/4546) - - `bundle gem` generated MiniTest file and class now start with 'test' [#3893](https://github.com/rubygems/rubygems/pull/3893) - - Add `Bundler::Definition.no_lock` accessor for skipping lockfile creation/update [#3401](https://github.com/rubygems/rubygems/pull/3401) + - Cancel deprecation of custom git sources [#5147](https://github.com/ruby/rubygems/pull/5147) + - Print warning when running Bundler on potentially problematic RubyGems & Ruby combinations [#5177](https://github.com/ruby/rubygems/pull/5177) + - Error tracing should be printed to stderr [#5179](https://github.com/ruby/rubygems/pull/5179) + - Add `github` and `ref` options to `bundle add` [#5159](https://github.com/ruby/rubygems/pull/5159) + - Add require parameter to `bundle add` [#5021](https://github.com/ruby/rubygems/pull/5021) + - Enable parallel installation on Windows by default [#4822](https://github.com/ruby/rubygems/pull/4822) + - More logging when compact index is not used and we fallback to other APIs [#4546](https://github.com/ruby/rubygems/pull/4546) + - `bundle gem` generated MiniTest file and class now start with 'test' [#3893](https://github.com/ruby/rubygems/pull/3893) + - Add `Bundler::Definition.no_lock` accessor for skipping lockfile creation/update [#3401](https://github.com/ruby/rubygems/pull/3401) ### Bug fixes: - - Fix crash when when no platform specific matches exist and show a proper error [#5168](https://github.com/rubygems/rubygems/pull/5168) - - Ignore dependencies not actually locked from frozen check [#5152](https://github.com/rubygems/rubygems/pull/5152) - - Fix `bundle cache --all-platforms` on Windows [#4552](https://github.com/rubygems/rubygems/pull/4552) + - Fix crash when when no platform specific matches exist and show a proper error [#5168](https://github.com/ruby/rubygems/pull/5168) + - Ignore dependencies not actually locked from frozen check [#5152](https://github.com/ruby/rubygems/pull/5152) + - Fix `bundle cache --all-platforms` on Windows [#4552](https://github.com/ruby/rubygems/pull/4552) ### Documentation: - - Fix gemspec template typo [#4545](https://github.com/rubygems/rubygems/pull/4545) + - Fix gemspec template typo [#4545](https://github.com/ruby/rubygems/pull/4545) ## 2.2.33 (2021-12-07) ### Security fixes: - - Pass "--" to git commands to separate positional and optional args [#5142](https://github.com/rubygems/rubygems/pull/5142) + - Pass "--" to git commands to separate positional and optional args [#5142](https://github.com/ruby/rubygems/pull/5142) ### Enhancements: - - Accept pull request URLs as github source [#5126](https://github.com/rubygems/rubygems/pull/5126) - - Add `--version` parameter to `bundle info` command [#5137](https://github.com/rubygems/rubygems/pull/5137) - - Let original `Errno::EACCES` error be raised in compact index updater [#5110](https://github.com/rubygems/rubygems/pull/5110) - - Improve gemfile-lockfile source equivalence errors [#5120](https://github.com/rubygems/rubygems/pull/5120) - - Avoid float-to-string loss of characters in GitHub Actions configuration labels in new gem template [#5089](https://github.com/rubygems/rubygems/pull/5089) - - Add an initial rbs template to `bundle gem` skeleton [#5041](https://github.com/rubygems/rubygems/pull/5041) - - Avoid shared libraries not getting environment passed right after argv in memory when `bundle exec` is used [#4815](https://github.com/rubygems/rubygems/pull/4815) + - Accept pull request URLs as github source [#5126](https://github.com/ruby/rubygems/pull/5126) + - Add `--version` parameter to `bundle info` command [#5137](https://github.com/ruby/rubygems/pull/5137) + - Let original `Errno::EACCES` error be raised in compact index updater [#5110](https://github.com/ruby/rubygems/pull/5110) + - Improve gemfile-lockfile source equivalence errors [#5120](https://github.com/ruby/rubygems/pull/5120) + - Avoid float-to-string loss of characters in GitHub Actions configuration labels in new gem template [#5089](https://github.com/ruby/rubygems/pull/5089) + - Add an initial rbs template to `bundle gem` skeleton [#5041](https://github.com/ruby/rubygems/pull/5041) + - Avoid shared libraries not getting environment passed right after argv in memory when `bundle exec` is used [#4815](https://github.com/ruby/rubygems/pull/4815) ### Bug fixes: - - Don't cleanup paths from gems already activated from `$LOAD_PATH` [#5111](https://github.com/rubygems/rubygems/pull/5111) - - Fix handling prereleases of 0 versions, like 0.0.0.dev or 0.0.0.SNAPSHOT [#5116](https://github.com/rubygems/rubygems/pull/5116) - - Fix escape of filenames in `bundle doctor` [#5102](https://github.com/rubygems/rubygems/pull/5102) - - Don't unlock dependencies when running `bundle install` after changing global source [#5090](https://github.com/rubygems/rubygems/pull/5090) - - Fix missing locked specs when depended on another platform [#5092](https://github.com/rubygems/rubygems/pull/5092) - - Fix `bundle info` sometimes claiming that bundler has been deleted [#5097](https://github.com/rubygems/rubygems/pull/5097) + - Don't cleanup paths from gems already activated from `$LOAD_PATH` [#5111](https://github.com/ruby/rubygems/pull/5111) + - Fix handling prereleases of 0 versions, like 0.0.0.dev or 0.0.0.SNAPSHOT [#5116](https://github.com/ruby/rubygems/pull/5116) + - Fix escape of filenames in `bundle doctor` [#5102](https://github.com/ruby/rubygems/pull/5102) + - Don't unlock dependencies when running `bundle install` after changing global source [#5090](https://github.com/ruby/rubygems/pull/5090) + - Fix missing locked specs when depended on another platform [#5092](https://github.com/ruby/rubygems/pull/5092) + - Fix `bundle info` sometimes claiming that bundler has been deleted [#5097](https://github.com/ruby/rubygems/pull/5097) ### Documentation: - - Ignore to generate the documentation from vendored libraries [#5118](https://github.com/rubygems/rubygems/pull/5118) + - Ignore to generate the documentation from vendored libraries [#5118](https://github.com/ruby/rubygems/pull/5118) ## 2.2.32 (2021-11-23) ### Enhancements: - - Clarify `bundle viz` deprecation [#5083](https://github.com/rubygems/rubygems/pull/5083) - - Unlock dependencies that no longer match lockfile [#5068](https://github.com/rubygems/rubygems/pull/5068) - - Use `shellsplit` instead of array of strings for git push [#5062](https://github.com/rubygems/rubygems/pull/5062) - - Re-enable `default_ignores` option for standard [#5003](https://github.com/rubygems/rubygems/pull/5003) + - Clarify `bundle viz` deprecation [#5083](https://github.com/ruby/rubygems/pull/5083) + - Unlock dependencies that no longer match lockfile [#5068](https://github.com/ruby/rubygems/pull/5068) + - Use `shellsplit` instead of array of strings for git push [#5062](https://github.com/ruby/rubygems/pull/5062) + - Re-enable `default_ignores` option for standard [#5003](https://github.com/ruby/rubygems/pull/5003) ### Bug fixes: - - Fix downgrading dependencies by changing the `Gemfile` and running `bundle update` [#5078](https://github.com/rubygems/rubygems/pull/5078) + - Fix downgrading dependencies by changing the `Gemfile` and running `bundle update` [#5078](https://github.com/ruby/rubygems/pull/5078) ## 2.2.31 (2021-11-08) ### Enhancements: - - Link to working `bundler-graph` plugin in `bundle viz` deprecation message [#5061](https://github.com/rubygems/rubygems/pull/5061) - - Memoize materialized specs when requiring `bundler/setup` [#5033](https://github.com/rubygems/rubygems/pull/5033) - - Allow custom LicenseRef [#5013](https://github.com/rubygems/rubygems/pull/5013) - - Better error when installing a lockfile with git sources and git is not installed [#5036](https://github.com/rubygems/rubygems/pull/5036) - - Only delete cached gem when it's corrupted [#5031](https://github.com/rubygems/rubygems/pull/5031) - - Support gemified `tsort` [#5032](https://github.com/rubygems/rubygems/pull/5032) - - Add standard option alongside rubocop to `bundle gem` [#4411](https://github.com/rubygems/rubygems/pull/4411) + - Link to working `bundler-graph` plugin in `bundle viz` deprecation message [#5061](https://github.com/ruby/rubygems/pull/5061) + - Memoize materialized specs when requiring `bundler/setup` [#5033](https://github.com/ruby/rubygems/pull/5033) + - Allow custom LicenseRef [#5013](https://github.com/ruby/rubygems/pull/5013) + - Better error when installing a lockfile with git sources and git is not installed [#5036](https://github.com/ruby/rubygems/pull/5036) + - Only delete cached gem when it's corrupted [#5031](https://github.com/ruby/rubygems/pull/5031) + - Support gemified `tsort` [#5032](https://github.com/ruby/rubygems/pull/5032) + - Add standard option alongside rubocop to `bundle gem` [#4411](https://github.com/ruby/rubygems/pull/4411) ### Bug fixes: - - Fix system man pages no longer working after bundler overrides `MANPATH` [#5039](https://github.com/rubygems/rubygems/pull/5039) - - Don't warn when a lockfile is locked to a dev version [#5018](https://github.com/rubygems/rubygems/pull/5018) + - Fix system man pages no longer working after bundler overrides `MANPATH` [#5039](https://github.com/ruby/rubygems/pull/5039) + - Don't warn when a lockfile is locked to a dev version [#5018](https://github.com/ruby/rubygems/pull/5018) ## 2.2.30 (2021-10-26) ### Enhancements: - - Add a custom SHA1 digest implementation to no longer depend on the digest gem before we know which version to activate [#4989](https://github.com/rubygems/rubygems/pull/4989) - - Ensure vendored gems have licenses [#4998](https://github.com/rubygems/rubygems/pull/4998) - - Update broken link in Bundler::Fetcher::CertificateFailureError [#4987](https://github.com/rubygems/rubygems/pull/4987) - - Give better errors for some permission issues [#4965](https://github.com/rubygems/rubygems/pull/4965) - - Print better errors when `bundler/gem_tasks` fail [#4872](https://github.com/rubygems/rubygems/pull/4872) - - Fix `bundle install` to reinstall deleted gems [#4974](https://github.com/rubygems/rubygems/pull/4974) - - Unify issue template and ISSUES.md document [#4980](https://github.com/rubygems/rubygems/pull/4980) - - Bump vendored connection_pool to 2.2.5 [#4738](https://github.com/rubygems/rubygems/pull/4738) + - Add a custom SHA1 digest implementation to no longer depend on the digest gem before we know which version to activate [#4989](https://github.com/ruby/rubygems/pull/4989) + - Ensure vendored gems have licenses [#4998](https://github.com/ruby/rubygems/pull/4998) + - Update broken link in Bundler::Fetcher::CertificateFailureError [#4987](https://github.com/ruby/rubygems/pull/4987) + - Give better errors for some permission issues [#4965](https://github.com/ruby/rubygems/pull/4965) + - Print better errors when `bundler/gem_tasks` fail [#4872](https://github.com/ruby/rubygems/pull/4872) + - Fix `bundle install` to reinstall deleted gems [#4974](https://github.com/ruby/rubygems/pull/4974) + - Unify issue template and ISSUES.md document [#4980](https://github.com/ruby/rubygems/pull/4980) + - Bump vendored connection_pool to 2.2.5 [#4738](https://github.com/ruby/rubygems/pull/4738) ### Bug fixes: - - Fix error message pointing to non existing file when using a global gem cache [#4999](https://github.com/rubygems/rubygems/pull/4999) - - Fix install crash when lockfile has missing dependencies for the current platform [#4941](https://github.com/rubygems/rubygems/pull/4941) - - Make `bundle info` show a proper warning every time it finds a deleted gem [#4971](https://github.com/rubygems/rubygems/pull/4971) + - Fix error message pointing to non existing file when using a global gem cache [#4999](https://github.com/ruby/rubygems/pull/4999) + - Fix install crash when lockfile has missing dependencies for the current platform [#4941](https://github.com/ruby/rubygems/pull/4941) + - Make `bundle info` show a proper warning every time it finds a deleted gem [#4971](https://github.com/ruby/rubygems/pull/4971) ## 2.2.29 (2021-10-08) ### Enhancements: - - Require at least Ruby 2.6.0 for gems created with recent rubies [#4920](https://github.com/rubygems/rubygems/pull/4920) - - Include glob information in string representation of git sources to make generated lockfiles deterministic [#4947](https://github.com/rubygems/rubygems/pull/4947) - - Add missing `rubygem_push` prerequisite [#4930](https://github.com/rubygems/rubygems/pull/4930) + - Require at least Ruby 2.6.0 for gems created with recent rubies [#4920](https://github.com/ruby/rubygems/pull/4920) + - Include glob information in string representation of git sources to make generated lockfiles deterministic [#4947](https://github.com/ruby/rubygems/pull/4947) + - Add missing `rubygem_push` prerequisite [#4930](https://github.com/ruby/rubygems/pull/4930) ## 2.2.28 (2021-09-23) ### Enhancements: - - Use example.com in new gem template, since it will never have a potentially dangerous backing website [#4918](https://github.com/rubygems/rubygems/pull/4918) - - Deprecate `--install` flag to `bundle remove` and trigger install by default [#4891](https://github.com/rubygems/rubygems/pull/4891) + - Use example.com in new gem template, since it will never have a potentially dangerous backing website [#4918](https://github.com/ruby/rubygems/pull/4918) + - Deprecate `--install` flag to `bundle remove` and trigger install by default [#4891](https://github.com/ruby/rubygems/pull/4891) ## 2.2.27 (2021-09-03) ### Enhancements: - - Optimize some requires [#4887](https://github.com/rubygems/rubygems/pull/4887) - - Correctly redact credentials when using x-oauth-basic [#4866](https://github.com/rubygems/rubygems/pull/4866) + - Optimize some requires [#4887](https://github.com/ruby/rubygems/pull/4887) + - Correctly redact credentials when using x-oauth-basic [#4866](https://github.com/ruby/rubygems/pull/4866) ### Bug fixes: - - Add missing key `branches:` to template for GitHub Actions [#4883](https://github.com/rubygems/rubygems/pull/4883) - - Fix `bundle plugin install` detection of already installed plugins [#4869](https://github.com/rubygems/rubygems/pull/4869) - - Make plugin installation idempotent [#4864](https://github.com/rubygems/rubygems/pull/4864) - - Fix `bundle check` showing duplicated gems when multiple platforms are locked [#4854](https://github.com/rubygems/rubygems/pull/4854) - - Fix `bundle check` incorrectly considering cached gems [#4853](https://github.com/rubygems/rubygems/pull/4853) + - Add missing key `branches:` to template for GitHub Actions [#4883](https://github.com/ruby/rubygems/pull/4883) + - Fix `bundle plugin install` detection of already installed plugins [#4869](https://github.com/ruby/rubygems/pull/4869) + - Make plugin installation idempotent [#4864](https://github.com/ruby/rubygems/pull/4864) + - Fix `bundle check` showing duplicated gems when multiple platforms are locked [#4854](https://github.com/ruby/rubygems/pull/4854) + - Fix `bundle check` incorrectly considering cached gems [#4853](https://github.com/ruby/rubygems/pull/4853) ## 2.2.26 (2021-08-17) ### Enhancements: - - Remove `RUBYGEMS_GEMDEPS` warning [#4827](https://github.com/rubygems/rubygems/pull/4827) - - Better defaults for GitHub Actions template generated by `bundle gem` [#4619](https://github.com/rubygems/rubygems/pull/4619) - - Make `bundle exec` keep file descriptors by default [#4812](https://github.com/rubygems/rubygems/pull/4812) - - Exclude gemspec file itself from file list of gems generated by `bundle gem` [#4650](https://github.com/rubygems/rubygems/pull/4650) - - Fix a couple small typos in deprecation / error messages [#4806](https://github.com/rubygems/rubygems/pull/4806) - - Make script generated by `bundle install --standalone` resilient to moving the application to a differently nested folder when `path` sources are used [#4792](https://github.com/rubygems/rubygems/pull/4792) - - Exclude CI files and issue templates from file list of gems generated by `bundle gem` [#4033](https://github.com/rubygems/rubygems/pull/4033) + - Remove `RUBYGEMS_GEMDEPS` warning [#4827](https://github.com/ruby/rubygems/pull/4827) + - Better defaults for GitHub Actions template generated by `bundle gem` [#4619](https://github.com/ruby/rubygems/pull/4619) + - Make `bundle exec` keep file descriptors by default [#4812](https://github.com/ruby/rubygems/pull/4812) + - Exclude gemspec file itself from file list of gems generated by `bundle gem` [#4650](https://github.com/ruby/rubygems/pull/4650) + - Fix a couple small typos in deprecation / error messages [#4806](https://github.com/ruby/rubygems/pull/4806) + - Make script generated by `bundle install --standalone` resilient to moving the application to a differently nested folder when `path` sources are used [#4792](https://github.com/ruby/rubygems/pull/4792) + - Exclude CI files and issue templates from file list of gems generated by `bundle gem` [#4033](https://github.com/ruby/rubygems/pull/4033) ### Bug fixes: - - Respect `BUNDLE_USER_HOME` env when choosing config location [#4828](https://github.com/rubygems/rubygems/pull/4828) - - Fix `bundle gem` on path with spaces [#4816](https://github.com/rubygems/rubygems/pull/4816) - - Fix bundler hitting the network in some cases where not allowed [#4805](https://github.com/rubygems/rubygems/pull/4805) + - Respect `BUNDLE_USER_HOME` env when choosing config location [#4828](https://github.com/ruby/rubygems/pull/4828) + - Fix `bundle gem` on path with spaces [#4816](https://github.com/ruby/rubygems/pull/4816) + - Fix bundler hitting the network in some cases where not allowed [#4805](https://github.com/ruby/rubygems/pull/4805) ## 2.2.25 (2021-07-30) ### Deprecations: - - Deprecate Gemfile without an explicit global source [#4779](https://github.com/rubygems/rubygems/pull/4779) - - Deprecate `bundle cache --path` [#4496](https://github.com/rubygems/rubygems/pull/4496) + - Deprecate Gemfile without an explicit global source [#4779](https://github.com/ruby/rubygems/pull/4779) + - Deprecate `bundle cache --path` [#4496](https://github.com/ruby/rubygems/pull/4496) ### Enhancements: - - Give better errors when materialization fails [#4788](https://github.com/rubygems/rubygems/pull/4788) - - Lazily load `shellwords` library [#4786](https://github.com/rubygems/rubygems/pull/4786) - - Show original error and backtrace directly on `bundle install` errors instead of a more brittle `gem install` hint [#4778](https://github.com/rubygems/rubygems/pull/4778) - - Remove LoadError message in regards to requiring a relative file [#4772](https://github.com/rubygems/rubygems/pull/4772) + - Give better errors when materialization fails [#4788](https://github.com/ruby/rubygems/pull/4788) + - Lazily load `shellwords` library [#4786](https://github.com/ruby/rubygems/pull/4786) + - Show original error and backtrace directly on `bundle install` errors instead of a more brittle `gem install` hint [#4778](https://github.com/ruby/rubygems/pull/4778) + - Remove LoadError message in regards to requiring a relative file [#4772](https://github.com/ruby/rubygems/pull/4772) ### Bug fixes: - - Fix `BUNDLE_USER_CONFIG` no longer respected as config location [#4797](https://github.com/rubygems/rubygems/pull/4797) - - Fix `--standalone` installation of default gems [#4782](https://github.com/rubygems/rubygems/pull/4782) - - Fix `--quiet` flag not printing warnings [#4781](https://github.com/rubygems/rubygems/pull/4781) - - Fix bundler binstub version selection [#4775](https://github.com/rubygems/rubygems/pull/4775) - - Fix interrupt handling in Bundler workers [#4767](https://github.com/rubygems/rubygems/pull/4767) + - Fix `BUNDLE_USER_CONFIG` no longer respected as config location [#4797](https://github.com/ruby/rubygems/pull/4797) + - Fix `--standalone` installation of default gems [#4782](https://github.com/ruby/rubygems/pull/4782) + - Fix `--quiet` flag not printing warnings [#4781](https://github.com/ruby/rubygems/pull/4781) + - Fix bundler binstub version selection [#4775](https://github.com/ruby/rubygems/pull/4775) + - Fix interrupt handling in Bundler workers [#4767](https://github.com/ruby/rubygems/pull/4767) ## 2.2.24 (2021-07-15) ### Bug fixes: - - Fix development gem unintentionally removed on an edge case [#4751](https://github.com/rubygems/rubygems/pull/4751) - - Fix dangling empty plugin hooks [#4755](https://github.com/rubygems/rubygems/pull/4755) - - Fix `bundle plugin install --help` showing `bundle install`'s help [#4756](https://github.com/rubygems/rubygems/pull/4756) - - Make sure `bundle check` shows uniq missing gems [#4749](https://github.com/rubygems/rubygems/pull/4749) + - Fix development gem unintentionally removed on an edge case [#4751](https://github.com/ruby/rubygems/pull/4751) + - Fix dangling empty plugin hooks [#4755](https://github.com/ruby/rubygems/pull/4755) + - Fix `bundle plugin install --help` showing `bundle install`'s help [#4756](https://github.com/ruby/rubygems/pull/4756) + - Make sure `bundle check` shows uniq missing gems [#4749](https://github.com/ruby/rubygems/pull/4749) ### Performance: - - Slightly speed up `bundler/setup` [#4750](https://github.com/rubygems/rubygems/pull/4750) + - Slightly speed up `bundler/setup` [#4750](https://github.com/ruby/rubygems/pull/4750) ## 2.2.23 (2021-07-09) ### Enhancements: - - Fix `bundle install` on truffleruby selecting incorrect variant for `sorbet-static` gem [#4625](https://github.com/rubygems/rubygems/pull/4625) - - Spare meaningless warning on read-only bundle invocations [#4724](https://github.com/rubygems/rubygems/pull/4724) + - Fix `bundle install` on truffleruby selecting incorrect variant for `sorbet-static` gem [#4625](https://github.com/ruby/rubygems/pull/4625) + - Spare meaningless warning on read-only bundle invocations [#4724](https://github.com/ruby/rubygems/pull/4724) ### Bug fixes: - - Fix incorrect warning about duplicated gems in the Gemfile [#4732](https://github.com/rubygems/rubygems/pull/4732) - - Fix `bundle plugin install foo` crashing [#4734](https://github.com/rubygems/rubygems/pull/4734) + - Fix incorrect warning about duplicated gems in the Gemfile [#4732](https://github.com/ruby/rubygems/pull/4732) + - Fix `bundle plugin install foo` crashing [#4734](https://github.com/ruby/rubygems/pull/4734) ## 2.2.22 (2021-07-06) ### Enhancements: - - Never downgrade indirect dependencies when running `bundle update` [#4713](https://github.com/rubygems/rubygems/pull/4713) - - Fix `getaddrinfo` errors not treated as fatal on non darwin platforms [#4703](https://github.com/rubygems/rubygems/pull/4703) + - Never downgrade indirect dependencies when running `bundle update` [#4713](https://github.com/ruby/rubygems/pull/4713) + - Fix `getaddrinfo` errors not treated as fatal on non darwin platforms [#4703](https://github.com/ruby/rubygems/pull/4703) ### Bug fixes: - - Fix `bundle update ` sometimes hanging and `bundle lock --update` not being able to update an insecure lockfile to the new format if it requires downgrades [#4652](https://github.com/rubygems/rubygems/pull/4652) - - Fix edge case combination of DSL methods and duplicated sources causing gems to not be found [#4711](https://github.com/rubygems/rubygems/pull/4711) - - Fix `bundle doctor` crashing when finding a broken symlink [#4707](https://github.com/rubygems/rubygems/pull/4707) - - Fix incorrect re-resolve edge case [#4700](https://github.com/rubygems/rubygems/pull/4700) - - Fix some gems being unintentionally locked under multiple lockfile sections [#4701](https://github.com/rubygems/rubygems/pull/4701) - - Fix `--conservative` flag unexpectedly updating indirect dependencies. NOTE: As part of this bug fix, some undocumented, unintentional code causing `bundle update --source ` to update conservatively was fixed. Use the documented `bundle update --conservative ` instead [#4692](https://github.com/rubygems/rubygems/pull/4692) + - Fix `bundle update ` sometimes hanging and `bundle lock --update` not being able to update an insecure lockfile to the new format if it requires downgrades [#4652](https://github.com/ruby/rubygems/pull/4652) + - Fix edge case combination of DSL methods and duplicated sources causing gems to not be found [#4711](https://github.com/ruby/rubygems/pull/4711) + - Fix `bundle doctor` crashing when finding a broken symlink [#4707](https://github.com/ruby/rubygems/pull/4707) + - Fix incorrect re-resolve edge case [#4700](https://github.com/ruby/rubygems/pull/4700) + - Fix some gems being unintentionally locked under multiple lockfile sections [#4701](https://github.com/ruby/rubygems/pull/4701) + - Fix `--conservative` flag unexpectedly updating indirect dependencies. NOTE: As part of this bug fix, some undocumented, unintentional code causing `bundle update --source ` to update conservatively was fixed. Use the documented `bundle update --conservative ` instead [#4692](https://github.com/ruby/rubygems/pull/4692) ## 2.2.21 (2021-06-23) ### Security fixes: - - Auto-update insecure lockfile to split GEM source sections whenever possible [#4647](https://github.com/rubygems/rubygems/pull/4647) + - Auto-update insecure lockfile to split GEM source sections whenever possible [#4647](https://github.com/ruby/rubygems/pull/4647) ### Enhancements: - - Use a more limited number of threads when fetching in parallel from the Compact Index API [#4670](https://github.com/rubygems/rubygems/pull/4670) - - Update TODO link in bundle gem template to https [#4671](https://github.com/rubygems/rubygems/pull/4671) + - Use a more limited number of threads when fetching in parallel from the Compact Index API [#4670](https://github.com/ruby/rubygems/pull/4670) + - Update TODO link in bundle gem template to https [#4671](https://github.com/ruby/rubygems/pull/4671) ### Bug fixes: - - Fix `bundle install --local` hitting the network when `cache_all_platforms` configured [#4677](https://github.com/rubygems/rubygems/pull/4677) + - Fix `bundle install --local` hitting the network when `cache_all_platforms` configured [#4677](https://github.com/ruby/rubygems/pull/4677) ## 2.2.20 (2021-06-11) ### Enhancements: - - Don't print bug report template on server side errors [#4663](https://github.com/rubygems/rubygems/pull/4663) - - Don't load `resolv` unnecessarily [#4640](https://github.com/rubygems/rubygems/pull/4640) + - Don't print bug report template on server side errors [#4663](https://github.com/ruby/rubygems/pull/4663) + - Don't load `resolv` unnecessarily [#4640](https://github.com/ruby/rubygems/pull/4640) ### Bug fixes: - - Fix `bundle outdated` edge case [#4648](https://github.com/rubygems/rubygems/pull/4648) - - Fix `bundle check` with scoped rubygems sources [#4639](https://github.com/rubygems/rubygems/pull/4639) + - Fix `bundle outdated` edge case [#4648](https://github.com/ruby/rubygems/pull/4648) + - Fix `bundle check` with scoped rubygems sources [#4639](https://github.com/ruby/rubygems/pull/4639) ### Performance: - - Don't use `extra_rdoc_files` with md files in gemspec to make installing bundler with docs faster [#4628](https://github.com/rubygems/rubygems/pull/4628) + - Don't use `extra_rdoc_files` with md files in gemspec to make installing bundler with docs faster [#4628](https://github.com/ruby/rubygems/pull/4628) ## 2.2.19 (2021-05-31) ### Bug fixes: - - Restore support for configuration keys with dashes [#4582](https://github.com/rubygems/rubygems/pull/4582) - - Fix some cached gems being unintentionally ignored when using rubygems 3.2.18 [#4623](https://github.com/rubygems/rubygems/pull/4623) + - Restore support for configuration keys with dashes [#4582](https://github.com/ruby/rubygems/pull/4582) + - Fix some cached gems being unintentionally ignored when using rubygems 3.2.18 [#4623](https://github.com/ruby/rubygems/pull/4623) ## 2.2.18 (2021-05-25) ### Security fixes: - - Fix dependency confusion issues with implicit dependencies [#4609](https://github.com/rubygems/rubygems/pull/4609) + - Fix dependency confusion issues with implicit dependencies [#4609](https://github.com/ruby/rubygems/pull/4609) ### Enhancements: - - Use simpler notation for generated `required_ruby_version` [#4598](https://github.com/rubygems/rubygems/pull/4598) - - Undeprecate bundle show [#4586](https://github.com/rubygems/rubygems/pull/4586) - - Make sure link to new issue uses the proper template [#4592](https://github.com/rubygems/rubygems/pull/4592) + - Use simpler notation for generated `required_ruby_version` [#4598](https://github.com/ruby/rubygems/pull/4598) + - Undeprecate bundle show [#4586](https://github.com/ruby/rubygems/pull/4586) + - Make sure link to new issue uses the proper template [#4592](https://github.com/ruby/rubygems/pull/4592) ### Bug fixes: - - Fix platform specific gems being removed from the lockfile [#4580](https://github.com/rubygems/rubygems/pull/4580) + - Fix platform specific gems being removed from the lockfile [#4580](https://github.com/ruby/rubygems/pull/4580) ## 2.2.17 (2021-05-05) ### Enhancements: - - Improve authentication required error message to include an alternative using `ENV` [#4565](https://github.com/rubygems/rubygems/pull/4565) - - Discard partial range responses without etag [#4563](https://github.com/rubygems/rubygems/pull/4563) - - Fix configuring ENV for a gem server with a name including dashes [#4571](https://github.com/rubygems/rubygems/pull/4571) - - Redact credentials from `bundle env` and `bundle config` [#4566](https://github.com/rubygems/rubygems/pull/4566) - - Redact all sources in verbose mode [#4564](https://github.com/rubygems/rubygems/pull/4564) - - Improve `bundle pristine` error if `BUNDLE_GEMFILE` does not exist [#4536](https://github.com/rubygems/rubygems/pull/4536) - - [CurrentRuby] Add 3.0 as a known minor [#4535](https://github.com/rubygems/rubygems/pull/4535) - - Prefer File.read instead of IO.read [#4530](https://github.com/rubygems/rubygems/pull/4530) - - Add space after open curly bracket in Gemfile and gems.rb template [#4518](https://github.com/rubygems/rubygems/pull/4518) + - Improve authentication required error message to include an alternative using `ENV` [#4565](https://github.com/ruby/rubygems/pull/4565) + - Discard partial range responses without etag [#4563](https://github.com/ruby/rubygems/pull/4563) + - Fix configuring ENV for a gem server with a name including dashes [#4571](https://github.com/ruby/rubygems/pull/4571) + - Redact credentials from `bundle env` and `bundle config` [#4566](https://github.com/ruby/rubygems/pull/4566) + - Redact all sources in verbose mode [#4564](https://github.com/ruby/rubygems/pull/4564) + - Improve `bundle pristine` error if `BUNDLE_GEMFILE` does not exist [#4536](https://github.com/ruby/rubygems/pull/4536) + - [CurrentRuby] Add 3.0 as a known minor [#4535](https://github.com/ruby/rubygems/pull/4535) + - Prefer File.read instead of IO.read [#4530](https://github.com/ruby/rubygems/pull/4530) + - Add space after open curly bracket in Gemfile and gems.rb template [#4518](https://github.com/ruby/rubygems/pull/4518) ### Bug fixes: - - Make sure specs are fetched from the right source when materializing [#4562](https://github.com/rubygems/rubygems/pull/4562) - - Fix `bundle cache` with an up-to-date lockfile and specs not already installed [#4554](https://github.com/rubygems/rubygems/pull/4554) - - Ignore `deployment` setting in inline mode [#4523](https://github.com/rubygems/rubygems/pull/4523) + - Make sure specs are fetched from the right source when materializing [#4562](https://github.com/ruby/rubygems/pull/4562) + - Fix `bundle cache` with an up-to-date lockfile and specs not already installed [#4554](https://github.com/ruby/rubygems/pull/4554) + - Ignore `deployment` setting in inline mode [#4523](https://github.com/ruby/rubygems/pull/4523) ### Performance: - - Don't materialize resolutions when not necessary [#4556](https://github.com/rubygems/rubygems/pull/4556) + - Don't materialize resolutions when not necessary [#4556](https://github.com/ruby/rubygems/pull/4556) ## 2.2.16 (2021-04-08) ### Enhancements: - - Add `--github-username` option and config to `bundle gem` [#3687](https://github.com/rubygems/rubygems/pull/3687) - - Bump vendored `tmpdir` library copy [#4506](https://github.com/rubygems/rubygems/pull/4506) - - Add `rake build:checksum` task to build checksums for a gem package [#4156](https://github.com/rubygems/rubygems/pull/4156) - - Enable bundler-cache for GitHub Actions template [#4498](https://github.com/rubygems/rubygems/pull/4498) - - Improve `bundle info` error when gem is on a "disabled" group [#4492](https://github.com/rubygems/rubygems/pull/4492) - - Small tweak to yank message [#4494](https://github.com/rubygems/rubygems/pull/4494) - - Don't show duplicate entries in `bundle outdated` output [#4474](https://github.com/rubygems/rubygems/pull/4474) - - Never downgrade top level gems when running `bundle update` [#4473](https://github.com/rubygems/rubygems/pull/4473) + - Add `--github-username` option and config to `bundle gem` [#3687](https://github.com/ruby/rubygems/pull/3687) + - Bump vendored `tmpdir` library copy [#4506](https://github.com/ruby/rubygems/pull/4506) + - Add `rake build:checksum` task to build checksums for a gem package [#4156](https://github.com/ruby/rubygems/pull/4156) + - Enable bundler-cache for GitHub Actions template [#4498](https://github.com/ruby/rubygems/pull/4498) + - Improve `bundle info` error when gem is on a "disabled" group [#4492](https://github.com/ruby/rubygems/pull/4492) + - Small tweak to yank message [#4494](https://github.com/ruby/rubygems/pull/4494) + - Don't show duplicate entries in `bundle outdated` output [#4474](https://github.com/ruby/rubygems/pull/4474) + - Never downgrade top level gems when running `bundle update` [#4473](https://github.com/ruby/rubygems/pull/4473) ### Bug fixes: - - Fix incorrect logic for filtering metadata matching candidates [#4497](https://github.com/rubygems/rubygems/pull/4497) + - Fix incorrect logic for filtering metadata matching candidates [#4497](https://github.com/ruby/rubygems/pull/4497) ## 2.2.15 (2021-03-19) ### Enhancements: - - Add a hint about bundler installing executables for path gems [#4461](https://github.com/rubygems/rubygems/pull/4461) - - Warn lockfiles with incorrect resolutions [#4459](https://github.com/rubygems/rubygems/pull/4459) - - Don't generate duplicate redundant sources in the lockfile [#4456](https://github.com/rubygems/rubygems/pull/4456) + - Add a hint about bundler installing executables for path gems [#4461](https://github.com/ruby/rubygems/pull/4461) + - Warn lockfiles with incorrect resolutions [#4459](https://github.com/ruby/rubygems/pull/4459) + - Don't generate duplicate redundant sources in the lockfile [#4456](https://github.com/ruby/rubygems/pull/4456) ### Bug fixes: - - Respect running ruby when resolving platforms [#4449](https://github.com/rubygems/rubygems/pull/4449) + - Respect running ruby when resolving platforms [#4449](https://github.com/ruby/rubygems/pull/4449) ## 2.2.14 (2021-03-08) ### Security fixes: - - Lock GEM sources separately and fix locally installed specs confusing bundler [#4381](https://github.com/rubygems/rubygems/pull/4381) + - Lock GEM sources separately and fix locally installed specs confusing bundler [#4381](https://github.com/ruby/rubygems/pull/4381) ### Bug fixes: - - Make `rake` available to other gems' installers right after it's installed [#4428](https://github.com/rubygems/rubygems/pull/4428) - - Fix encoding issue on compact index updater [#4362](https://github.com/rubygems/rubygems/pull/4362) + - Make `rake` available to other gems' installers right after it's installed [#4428](https://github.com/ruby/rubygems/pull/4428) + - Fix encoding issue on compact index updater [#4362](https://github.com/ruby/rubygems/pull/4362) ## 2.2.13 (2021-03-03) ### Enhancements: - - Respect user configured default branch in README links in new generated gems [#4303](https://github.com/rubygems/rubygems/pull/4303) + - Respect user configured default branch in README links in new generated gems [#4303](https://github.com/ruby/rubygems/pull/4303) ### Bug fixes: - - Fix gems sometimes being pulled from irrelevant sources [#4418](https://github.com/rubygems/rubygems/pull/4418) + - Fix gems sometimes being pulled from irrelevant sources [#4418](https://github.com/ruby/rubygems/pull/4418) ## 2.2.12 (2021-03-01) ### Bug fixes: - - Fix sporadic warnings about `nil` gemspec on install/update and make those faster [#4409](https://github.com/rubygems/rubygems/pull/4409) - - Fix deployment install with duplicate path gems added to Gemfile [#4410](https://github.com/rubygems/rubygems/pull/4410) + - Fix sporadic warnings about `nil` gemspec on install/update and make those faster [#4409](https://github.com/ruby/rubygems/pull/4409) + - Fix deployment install with duplicate path gems added to Gemfile [#4410](https://github.com/ruby/rubygems/pull/4410) ## 2.2.11 (2021-02-17) ### Bug fixes: - - Revert disable_multisource changes [#4385](https://github.com/rubygems/rubygems/pull/4385) + - Revert disable_multisource changes [#4385](https://github.com/ruby/rubygems/pull/4385) ## 2.2.10 (2021-02-15) ### Security fixes: - - Fix source priority for transitive dependencies and split lockfile rubygems source sections [#3655](https://github.com/rubygems/rubygems/pull/3655) + - Fix source priority for transitive dependencies and split lockfile rubygems source sections [#3655](https://github.com/ruby/rubygems/pull/3655) ### Bug fixes: - - Fix adding platforms to lockfile sometimes conflicting on ruby requirements [#4371](https://github.com/rubygems/rubygems/pull/4371) - - Fix bundler sometimes choosing ruby variants over java ones [#4367](https://github.com/rubygems/rubygems/pull/4367) + - Fix adding platforms to lockfile sometimes conflicting on ruby requirements [#4371](https://github.com/ruby/rubygems/pull/4371) + - Fix bundler sometimes choosing ruby variants over java ones [#4367](https://github.com/ruby/rubygems/pull/4367) ### Documentation: - - Update man pages to reflect to new default for bundle install jobs [#4188](https://github.com/rubygems/rubygems/pull/4188) + - Update man pages to reflect to new default for bundle install jobs [#4188](https://github.com/ruby/rubygems/pull/4188) ## 2.2.9 (2021-02-08) ### Enhancements: - - Stop removing existing platforms when force_ruby_platform is true [#4336](https://github.com/rubygems/rubygems/pull/4336) + - Stop removing existing platforms when force_ruby_platform is true [#4336](https://github.com/ruby/rubygems/pull/4336) ### Bug fixes: - - Don't install platform specific gems on truffleruby [#4333](https://github.com/rubygems/rubygems/pull/4333) + - Don't install platform specific gems on truffleruby [#4333](https://github.com/ruby/rubygems/pull/4333) ## 2.2.8 (2021-02-02) ### Enhancements: - - Add a CHANGELOG.md file to gems generated by `bundle gem` [#4093](https://github.com/rubygems/rubygems/pull/4093) - - Support gemified `set` [#4297](https://github.com/rubygems/rubygems/pull/4297) + - Add a CHANGELOG.md file to gems generated by `bundle gem` [#4093](https://github.com/ruby/rubygems/pull/4093) + - Support gemified `set` [#4297](https://github.com/ruby/rubygems/pull/4297) ### Bug fixes: - - Fix standalone Kernel.require visibility [#4337](https://github.com/rubygems/rubygems/pull/4337) + - Fix standalone Kernel.require visibility [#4337](https://github.com/ruby/rubygems/pull/4337) ### Performance: - - Fix resolver edge cases and speed up bundler [#4277](https://github.com/rubygems/rubygems/pull/4277) + - Fix resolver edge cases and speed up bundler [#4277](https://github.com/ruby/rubygems/pull/4277) ## 2.2.7 (2021-01-26) ### Enhancements: - - Improve error messages when dependency on bundler conflicts with running version [#4308](https://github.com/rubygems/rubygems/pull/4308) - - Avoid showing platforms with requirements in error messages [#4310](https://github.com/rubygems/rubygems/pull/4310) - - Introduce disable_local_revision_check config [#4237](https://github.com/rubygems/rubygems/pull/4237) - - Reverse rubygems require mixin with bundler standalone [#4299](https://github.com/rubygems/rubygems/pull/4299) + - Improve error messages when dependency on bundler conflicts with running version [#4308](https://github.com/ruby/rubygems/pull/4308) + - Avoid showing platforms with requirements in error messages [#4310](https://github.com/ruby/rubygems/pull/4310) + - Introduce disable_local_revision_check config [#4237](https://github.com/ruby/rubygems/pull/4237) + - Reverse rubygems require mixin with bundler standalone [#4299](https://github.com/ruby/rubygems/pull/4299) ### Bug fixes: - - Fix releasing from a not yet pushed branch [#4309](https://github.com/rubygems/rubygems/pull/4309) - - Install cache only once if it already exists [#4304](https://github.com/rubygems/rubygems/pull/4304) - - Fix `force_ruby_platform` no longer being respected [#4302](https://github.com/rubygems/rubygems/pull/4302) + - Fix releasing from a not yet pushed branch [#4309](https://github.com/ruby/rubygems/pull/4309) + - Install cache only once if it already exists [#4304](https://github.com/ruby/rubygems/pull/4304) + - Fix `force_ruby_platform` no longer being respected [#4302](https://github.com/ruby/rubygems/pull/4302) ### Performance: - - Fix resolver dependency comparison [#4289](https://github.com/rubygems/rubygems/pull/4289) + - Fix resolver dependency comparison [#4289](https://github.com/ruby/rubygems/pull/4289) ## 2.2.6 (2021-01-18) ### Enhancements: - - Improve resolver debugging [#4288](https://github.com/rubygems/rubygems/pull/4288) + - Improve resolver debugging [#4288](https://github.com/ruby/rubygems/pull/4288) ### Bug fixes: - - Fix dependency locking for path source [#4293](https://github.com/rubygems/rubygems/pull/4293) + - Fix dependency locking for path source [#4293](https://github.com/ruby/rubygems/pull/4293) ### Performance: - - Speed up complex dependency resolves by creating DepProxy factory and cache [#4216](https://github.com/rubygems/rubygems/pull/4216) + - Speed up complex dependency resolves by creating DepProxy factory and cache [#4216](https://github.com/ruby/rubygems/pull/4216) ## 2.2.5 (2021-01-11) ### Enhancements: - - Improve rubocop setup in the new gem template [#4220](https://github.com/rubygems/rubygems/pull/4220) - - Support repositories with default branch not named master [#4224](https://github.com/rubygems/rubygems/pull/4224) + - Improve rubocop setup in the new gem template [#4220](https://github.com/ruby/rubygems/pull/4220) + - Support repositories with default branch not named master [#4224](https://github.com/ruby/rubygems/pull/4224) ### Bug fixes: - - Let Net::HTTP decompress the index instead of doing it manually [#4081](https://github.com/rubygems/rubygems/pull/4081) - - Workaround for another jruby crash when autoloading a constant [#4252](https://github.com/rubygems/rubygems/pull/4252) - - Fix another performance regression in the resolver [#4243](https://github.com/rubygems/rubygems/pull/4243) - - Restore support for old git versions [#4233](https://github.com/rubygems/rubygems/pull/4233) - - Give a proper error if cache path does not have write access [#4215](https://github.com/rubygems/rubygems/pull/4215) - - Fix running `rake release` from an ambiguous ref [#4219](https://github.com/rubygems/rubygems/pull/4219) + - Let Net::HTTP decompress the index instead of doing it manually [#4081](https://github.com/ruby/rubygems/pull/4081) + - Workaround for another jruby crash when autoloading a constant [#4252](https://github.com/ruby/rubygems/pull/4252) + - Fix another performance regression in the resolver [#4243](https://github.com/ruby/rubygems/pull/4243) + - Restore support for old git versions [#4233](https://github.com/ruby/rubygems/pull/4233) + - Give a proper error if cache path does not have write access [#4215](https://github.com/ruby/rubygems/pull/4215) + - Fix running `rake release` from an ambiguous ref [#4219](https://github.com/ruby/rubygems/pull/4219) ## 2.2.4 (2020-12-31) ### Bug fixes: - - Fix bundle man pages display on truffleruby [#4209](https://github.com/rubygems/rubygems/pull/4209) - - Fix Windows + JRuby no longer being able to install git sources [#4196](https://github.com/rubygems/rubygems/pull/4196) + - Fix bundle man pages display on truffleruby [#4209](https://github.com/ruby/rubygems/pull/4209) + - Fix Windows + JRuby no longer being able to install git sources [#4196](https://github.com/ruby/rubygems/pull/4196) ## 2.2.3 (2020-12-22) ### Bug fixes: - - Restore full compatibility with previous lockfiles [#4179](https://github.com/rubygems/rubygems/pull/4179) - - Add all matching variants with the same platform specificity to the lockfile [#4180](https://github.com/rubygems/rubygems/pull/4180) - - Fix bundler installing gems for a different platform when running in frozen mode and current platform not in the lockfile [#4172](https://github.com/rubygems/rubygems/pull/4172) - - Fix crash when `bundle exec`'ing to bundler [#4175](https://github.com/rubygems/rubygems/pull/4175) + - Restore full compatibility with previous lockfiles [#4179](https://github.com/ruby/rubygems/pull/4179) + - Add all matching variants with the same platform specificity to the lockfile [#4180](https://github.com/ruby/rubygems/pull/4180) + - Fix bundler installing gems for a different platform when running in frozen mode and current platform not in the lockfile [#4172](https://github.com/ruby/rubygems/pull/4172) + - Fix crash when `bundle exec`'ing to bundler [#4175](https://github.com/ruby/rubygems/pull/4175) ## 2.2.2 (2020-12-17) ### Bug fixes: - - Fix resolver crash when a candidate has 0 matching platforms [#4163](https://github.com/rubygems/rubygems/pull/4163) - - Restore change to copy global with/without config locally upon `bundle install` [#4154](https://github.com/rubygems/rubygems/pull/4154) + - Fix resolver crash when a candidate has 0 matching platforms [#4163](https://github.com/ruby/rubygems/pull/4163) + - Restore change to copy global with/without config locally upon `bundle install` [#4154](https://github.com/ruby/rubygems/pull/4154) ## 2.2.1 (2020-12-14) ### Bug fixes: - - Ad-hoc fix for platform regression [#4127](https://github.com/rubygems/rubygems/pull/4127) - - Workaround JRuby + Windows issue with net-http-persistent vendored code [#4138](https://github.com/rubygems/rubygems/pull/4138) - - Reset also root when in a nested invocation [#4140](https://github.com/rubygems/rubygems/pull/4140) - - Restore 2.1.4 resolution times [#4134](https://github.com/rubygems/rubygems/pull/4134) - - Fix `bundle outdated --strict` crash [#4133](https://github.com/rubygems/rubygems/pull/4133) - - Autoload `Bundler::RemoteSpecification` to workaround crash on jruby [#4114](https://github.com/rubygems/rubygems/pull/4114) + - Ad-hoc fix for platform regression [#4127](https://github.com/ruby/rubygems/pull/4127) + - Workaround JRuby + Windows issue with net-http-persistent vendored code [#4138](https://github.com/ruby/rubygems/pull/4138) + - Reset also root when in a nested invocation [#4140](https://github.com/ruby/rubygems/pull/4140) + - Restore 2.1.4 resolution times [#4134](https://github.com/ruby/rubygems/pull/4134) + - Fix `bundle outdated --strict` crash [#4133](https://github.com/ruby/rubygems/pull/4133) + - Autoload `Bundler::RemoteSpecification` to workaround crash on jruby [#4114](https://github.com/ruby/rubygems/pull/4114) ## 2.2.0 (2020-12-07) ### Enhancements: - - New gem template: prefer `require_relative` to `require` [#4066](https://github.com/rubygems/rubygems/pull/4066) - - Always show underlying error when fetching specs fails [#4061](https://github.com/rubygems/rubygems/pull/4061) - - Add `--all-platforms` flag to `bundle binstubs` to generate binstubs for all platforms [#3886](https://github.com/rubygems/rubygems/pull/3886) - - Improve gem not found in source error messages [#4019](https://github.com/rubygems/rubygems/pull/4019) - - Revert resolving all Gemfile platforms automatically [#4052](https://github.com/rubygems/rubygems/pull/4052) - - Remove extra empty line from README template [#4041](https://github.com/rubygems/rubygems/pull/4041) - - Lazily load `erb` [#4011](https://github.com/rubygems/rubygems/pull/4011) - -### Bug fixes: - - - Fix `Bundler::Plugin::API::Source#to_s` having empty source type [#4084](https://github.com/rubygems/rubygems/pull/4084) - - Raise consistent errors with or without `bundle exec` [#4063](https://github.com/rubygems/rubygems/pull/4063) - - Fix edge case resulting in a crash when using `zeitwerk` inside a nested `bundle exec` invocation [#4062](https://github.com/rubygems/rubygems/pull/4062) - - Enable `specific_platform` by default [#4015](https://github.com/rubygems/rubygems/pull/4015) - - Prevent remove command from deleting gemfile lines that are comments [#4045](https://github.com/rubygems/rubygems/pull/4045) - - Fix issue with `cache_all_platforms` and `specific_platform` configured [#4042](https://github.com/rubygems/rubygems/pull/4042) - - Fix incorrect error message on Windows [#4039](https://github.com/rubygems/rubygems/pull/4039) - - Make printed drive letters consistent on Windows [#4038](https://github.com/rubygems/rubygems/pull/4038) - - Load rubygems plugins from RUBYLIB during `bundle install` and `bundle update` [#3534](https://github.com/rubygems/rubygems/pull/3534) - - Fix `specific_platform` and `cache_all` with `bundle cache --all-platforms` [#4022](https://github.com/rubygems/rubygems/pull/4022) - - Bring back the possibility to install a plugin from path [#4020](https://github.com/rubygems/rubygems/pull/4020) - - Move ronn pages to lib [#3997](https://github.com/rubygems/rubygems/pull/3997) - - Fix fileutils double load when using `bundler/inline` [#3991](https://github.com/rubygems/rubygems/pull/3991) - - Accept responses with no etag header [#3865](https://github.com/rubygems/rubygems/pull/3865) + - New gem template: prefer `require_relative` to `require` [#4066](https://github.com/ruby/rubygems/pull/4066) + - Always show underlying error when fetching specs fails [#4061](https://github.com/ruby/rubygems/pull/4061) + - Add `--all-platforms` flag to `bundle binstubs` to generate binstubs for all platforms [#3886](https://github.com/ruby/rubygems/pull/3886) + - Improve gem not found in source error messages [#4019](https://github.com/ruby/rubygems/pull/4019) + - Revert resolving all Gemfile platforms automatically [#4052](https://github.com/ruby/rubygems/pull/4052) + - Remove extra empty line from README template [#4041](https://github.com/ruby/rubygems/pull/4041) + - Lazily load `erb` [#4011](https://github.com/ruby/rubygems/pull/4011) + +### Bug fixes: + + - Fix `Bundler::Plugin::API::Source#to_s` having empty source type [#4084](https://github.com/ruby/rubygems/pull/4084) + - Raise consistent errors with or without `bundle exec` [#4063](https://github.com/ruby/rubygems/pull/4063) + - Fix edge case resulting in a crash when using `zeitwerk` inside a nested `bundle exec` invocation [#4062](https://github.com/ruby/rubygems/pull/4062) + - Enable `specific_platform` by default [#4015](https://github.com/ruby/rubygems/pull/4015) + - Prevent remove command from deleting gemfile lines that are comments [#4045](https://github.com/ruby/rubygems/pull/4045) + - Fix issue with `cache_all_platforms` and `specific_platform` configured [#4042](https://github.com/ruby/rubygems/pull/4042) + - Fix incorrect error message on Windows [#4039](https://github.com/ruby/rubygems/pull/4039) + - Make printed drive letters consistent on Windows [#4038](https://github.com/ruby/rubygems/pull/4038) + - Load rubygems plugins from RUBYLIB during `bundle install` and `bundle update` [#3534](https://github.com/ruby/rubygems/pull/3534) + - Fix `specific_platform` and `cache_all` with `bundle cache --all-platforms` [#4022](https://github.com/ruby/rubygems/pull/4022) + - Bring back the possibility to install a plugin from path [#4020](https://github.com/ruby/rubygems/pull/4020) + - Move ronn pages to lib [#3997](https://github.com/ruby/rubygems/pull/3997) + - Fix fileutils double load when using `bundler/inline` [#3991](https://github.com/ruby/rubygems/pull/3991) + - Accept responses with no etag header [#3865](https://github.com/ruby/rubygems/pull/3865) ### Documentation: - - Fix typo of `bundle-install.1` (v2.1) [#4079](https://github.com/rubygems/rubygems/pull/4079) - - Add commented out example and more information link to generated gemspec [#4034](https://github.com/rubygems/rubygems/pull/4034) + - Fix typo of `bundle-install.1` (v2.1) [#4079](https://github.com/ruby/rubygems/pull/4079) + - Add commented out example and more information link to generated gemspec [#4034](https://github.com/ruby/rubygems/pull/4034) ## 2.2.0.rc.2 (2020-10-06) ### Features: - - Add `bundle fund` command [#3390](https://github.com/rubygems/rubygems/pull/3390) + - Add `bundle fund` command [#3390](https://github.com/ruby/rubygems/pull/3390) ### Enhancements: - - Fix ls-files matching regexp [#3845](https://github.com/rubygems/rubygems/pull/3845) - - Remove redundant `bundler/setup` require from `spec_helper.rb` generated by `bundle gem` [#3791](https://github.com/rubygems/rubygems/pull/3791) - -### Bug fixes: - - - Deduplicate spec groups [#3965](https://github.com/rubygems/rubygems/pull/3965) - - Fix some cases of running `bundler` on a path including brackets [#3854](https://github.com/rubygems/rubygems/pull/3854) - - Don't warn when deinit'ing submodules [#3969](https://github.com/rubygems/rubygems/pull/3969) - - Make `bundle clean --force` leave default gem executables untouched [#3907](https://github.com/rubygems/rubygems/pull/3907) - - Prioritize `path.system` over `path` when it makes sense [#3933](https://github.com/rubygems/rubygems/pull/3933) - - Sort requirements in Gem::Requirement to succeed comparison with different order [#3889](https://github.com/rubygems/rubygems/pull/3889) - - Print bug report template to standard error [#3924](https://github.com/rubygems/rubygems/pull/3924) - - Restore `bundle cache --all` in all cases [#3914](https://github.com/rubygems/rubygems/pull/3914) - - Move shebang to the top of `bin/console` template [#3927](https://github.com/rubygems/rubygems/pull/3927) - - Fix platform issues when running under a frozen bundle [#3909](https://github.com/rubygems/rubygems/pull/3909) - - Fix deprecation messages for `bundle install` flags, the config should be --local as before [#3917](https://github.com/rubygems/rubygems/pull/3917) - - Look for absolute path when removing bundler/setup from RUBYOPT in Bundler.unbundled_env method [#3877](https://github.com/rubygems/rubygems/pull/3877) - - Fix incorrect re-resolution when path gem excluded and not available [#3902](https://github.com/rubygems/rubygems/pull/3902) - - Fix error when building error message in `bundler/inline` [#3901](https://github.com/rubygems/rubygems/pull/3901) - - Fix regression related to locked ruby [#3900](https://github.com/rubygems/rubygems/pull/3900) - - Expand load paths in standalone setup.rb file [#3522](https://github.com/rubygems/rubygems/pull/3522) - - Fix broken exception recovery code when installing plugins [#3487](https://github.com/rubygems/rubygems/pull/3487) - - Fix incorrect build info on development versions of bundler, and on bundler versions installed as a default gem [#3778](https://github.com/rubygems/rubygems/pull/3778) - - Avoid autoloading `openssl` to try help with jruby load service issues [#3809](https://github.com/rubygems/rubygems/pull/3809) - - Fix `rake release` pushing all local tags instead of only the release tag [#3785](https://github.com/rubygems/rubygems/pull/3785) - - Fix `rake release` aborting when credentials file is missing, even if properly configured through XDG [#3783](https://github.com/rubygems/rubygems/pull/3783) + - Fix ls-files matching regexp [#3845](https://github.com/ruby/rubygems/pull/3845) + - Remove redundant `bundler/setup` require from `spec_helper.rb` generated by `bundle gem` [#3791](https://github.com/ruby/rubygems/pull/3791) + +### Bug fixes: + + - Deduplicate spec groups [#3965](https://github.com/ruby/rubygems/pull/3965) + - Fix some cases of running `bundler` on a path including brackets [#3854](https://github.com/ruby/rubygems/pull/3854) + - Don't warn when deinit'ing submodules [#3969](https://github.com/ruby/rubygems/pull/3969) + - Make `bundle clean --force` leave default gem executables untouched [#3907](https://github.com/ruby/rubygems/pull/3907) + - Prioritize `path.system` over `path` when it makes sense [#3933](https://github.com/ruby/rubygems/pull/3933) + - Sort requirements in Gem::Requirement to succeed comparison with different order [#3889](https://github.com/ruby/rubygems/pull/3889) + - Print bug report template to standard error [#3924](https://github.com/ruby/rubygems/pull/3924) + - Restore `bundle cache --all` in all cases [#3914](https://github.com/ruby/rubygems/pull/3914) + - Move shebang to the top of `bin/console` template [#3927](https://github.com/ruby/rubygems/pull/3927) + - Fix platform issues when running under a frozen bundle [#3909](https://github.com/ruby/rubygems/pull/3909) + - Fix deprecation messages for `bundle install` flags, the config should be --local as before [#3917](https://github.com/ruby/rubygems/pull/3917) + - Look for absolute path when removing bundler/setup from RUBYOPT in Bundler.unbundled_env method [#3877](https://github.com/ruby/rubygems/pull/3877) + - Fix incorrect re-resolution when path gem excluded and not available [#3902](https://github.com/ruby/rubygems/pull/3902) + - Fix error when building error message in `bundler/inline` [#3901](https://github.com/ruby/rubygems/pull/3901) + - Fix regression related to locked ruby [#3900](https://github.com/ruby/rubygems/pull/3900) + - Expand load paths in standalone setup.rb file [#3522](https://github.com/ruby/rubygems/pull/3522) + - Fix broken exception recovery code when installing plugins [#3487](https://github.com/ruby/rubygems/pull/3487) + - Fix incorrect build info on development versions of bundler, and on bundler versions installed as a default gem [#3778](https://github.com/ruby/rubygems/pull/3778) + - Avoid autoloading `openssl` to try help with jruby load service issues [#3809](https://github.com/ruby/rubygems/pull/3809) + - Fix `rake release` pushing all local tags instead of only the release tag [#3785](https://github.com/ruby/rubygems/pull/3785) + - Fix `rake release` aborting when credentials file is missing, even if properly configured through XDG [#3783](https://github.com/ruby/rubygems/pull/3783) ### Deprecations: - - Deprecate `bundle cache --all` flag [#3932](https://github.com/rubygems/rubygems/pull/3932) + - Deprecate `bundle cache --all` flag [#3932](https://github.com/ruby/rubygems/pull/3932) ### Documentation: - - Correct grammar in Gemfile docs [#3990](https://github.com/rubygems/rubygems/pull/3990) - - Fix typo in `bundle pristine` warning message [#3959](https://github.com/rubygems/rubygems/pull/3959) - - Improve human readable fallback version of CLI help messages [#3921](https://github.com/rubygems/rubygems/pull/3921) - - Note CLI flag deprecations in documentation [#3915](https://github.com/rubygems/rubygems/pull/3915) - - Update man page and deprecation warning for binstubs --all [#3872](https://github.com/rubygems/rubygems/pull/3872) + - Correct grammar in Gemfile docs [#3990](https://github.com/ruby/rubygems/pull/3990) + - Fix typo in `bundle pristine` warning message [#3959](https://github.com/ruby/rubygems/pull/3959) + - Improve human readable fallback version of CLI help messages [#3921](https://github.com/ruby/rubygems/pull/3921) + - Note CLI flag deprecations in documentation [#3915](https://github.com/ruby/rubygems/pull/3915) + - Update man page and deprecation warning for binstubs --all [#3872](https://github.com/ruby/rubygems/pull/3872) ## 2.2.0.rc.1 (2020-07-02) @@ -2033,26 +2033,26 @@ - `bundle list --without-group` and `bundle list --only-group` now support space separated list of groups in addition to single groups [#7404](https://github.com/rubygems/bundler/pull/7404) - `bundle gem` now supports a `--rubocop` flag that adds the `rubocop` gem to the new gem layout [#6455](https://github.com/rubygems/bundler/pull/6455) - `bundle gem` now supports `--test-unit` in addition to `rspec` and `minitest` as a value for its `--test` option [#5521](https://github.com/rubygems/bundler/pull/5521) - - `bundle install` now uses the available number of processors automatically for concurrent gem install, except for Windows where it still uses a single thread by default [#3393](https://github.com/rubygems/rubygems/pull/3393) and [#3718](https://github.com/rubygems/rubygems/pull/3718) - - Report Gitlab CI within bundler user-agent string [#3432](https://github.com/rubygems/rubygems/pull/3432) - - Add `bundle plugin uninstall` [#3482](https://github.com/rubygems/rubygems/pull/3482) - - `bundle gem` now supports a `--ci` flag and a `gem.ci` configuration that adds CI config files for the main CI providers to the generated gem skeleton [#3667](https://github.com/rubygems/rubygems/pull/3667) - - Allow setting a tag prefix to be used by release tasks [#3766](https://github.com/rubygems/rubygems/pull/3766) + - `bundle install` now uses the available number of processors automatically for concurrent gem install, except for Windows where it still uses a single thread by default [#3393](https://github.com/ruby/rubygems/pull/3393) and [#3718](https://github.com/ruby/rubygems/pull/3718) + - Report Gitlab CI within bundler user-agent string [#3432](https://github.com/ruby/rubygems/pull/3432) + - Add `bundle plugin uninstall` [#3482](https://github.com/ruby/rubygems/pull/3482) + - `bundle gem` now supports a `--ci` flag and a `gem.ci` configuration that adds CI config files for the main CI providers to the generated gem skeleton [#3667](https://github.com/ruby/rubygems/pull/3667) + - Allow setting a tag prefix to be used by release tasks [#3766](https://github.com/ruby/rubygems/pull/3766) - `bundle outdated` now prints output in columns for better readability [#4474](https://github.com/rubygems/bundler/pull/4474) - bundler's `release` rake task now prints a better message when not being logged in and trying to push a gem [#7513](https://github.com/rubygems/bundler/pull/7513) - `BUNDLE_APP_CONFIG` environment variable is now documented [#7563](https://github.com/rubygems/bundler/pull/7563) - Original exception is now reported when bundler fails to load OpenSSL [#7527](https://github.com/rubygems/bundler/pull/7527) - RVM specific instructions for recompiling ruby is no longer recommended when bundler fails to load OpenSSL [#7597](https://github.com/rubygems/bundler/pull/7597) - Improve resolver debugging out from resolver [#7589](https://github.com/rubygems/bundler/pull/7589) and [#7590](https://github.com/rubygems/bundler/pull/7590) - - Clarify `bundle config --local` docs [#3408](https://github.com/rubygems/rubygems/pull/3408) - - Make sure to not "leak" to a different bundler install under any circumstances [#3595](https://github.com/rubygems/rubygems/pull/3595) - - Make sure users messing with `$;` doesn't affect us [#3602](https://github.com/rubygems/rubygems/pull/3602) - - Remove explicit psych activation which could potentially lead to packaging-specific issues [#3638](https://github.com/rubygems/rubygems/pull/3638) - - Deprecate `--no-deployment` flag and never recommend it [#3657](https://github.com/rubygems/rubygems/pull/3657) - - `bundle gem` test framework defaults to the `gem.test` setting and asks for a value without overwriting configuration if `-t` without a value is passed explicitly [#3544](https://github.com/rubygems/rubygems/pull/3544) - - `bundle gem` now ships with a default `.rubocop.yml` file and an offense free initial gem skeleton [#3731](https://github.com/rubygems/rubygems/pull/3731), [#3740](https://github.com/rubygems/rubygems/pull/3740), [#3765](https://github.com/rubygems/rubygems/pull/3765) - - Remove some requires that might workaround some autoloading issues on jruby [#3771](https://github.com/rubygems/rubygems/pull/3771) - - Unswallow an error that should make some random crashes on jruby easier to troubleshoot [#3774](https://github.com/rubygems/rubygems/pull/3774) + - Clarify `bundle config --local` docs [#3408](https://github.com/ruby/rubygems/pull/3408) + - Make sure to not "leak" to a different bundler install under any circumstances [#3595](https://github.com/ruby/rubygems/pull/3595) + - Make sure users messing with `$;` doesn't affect us [#3602](https://github.com/ruby/rubygems/pull/3602) + - Remove explicit psych activation which could potentially lead to packaging-specific issues [#3638](https://github.com/ruby/rubygems/pull/3638) + - Deprecate `--no-deployment` flag and never recommend it [#3657](https://github.com/ruby/rubygems/pull/3657) + - `bundle gem` test framework defaults to the `gem.test` setting and asks for a value without overwriting configuration if `-t` without a value is passed explicitly [#3544](https://github.com/ruby/rubygems/pull/3544) + - `bundle gem` now ships with a default `.rubocop.yml` file and an offense free initial gem skeleton [#3731](https://github.com/ruby/rubygems/pull/3731), [#3740](https://github.com/ruby/rubygems/pull/3740), [#3765](https://github.com/ruby/rubygems/pull/3765) + - Remove some requires that might workaround some autoloading issues on jruby [#3771](https://github.com/ruby/rubygems/pull/3771) + - Unswallow an error that should make some random crashes on jruby easier to troubleshoot [#3774](https://github.com/ruby/rubygems/pull/3774) ### Bug fixes: @@ -2064,23 +2064,23 @@ - Fix error message about missing permissions recommending a deprecated command [#7633](https://github.com/rubygems/bundler/pull/7633) - Fix `init_gems_rb` setting being ignored by `bundle gem` [#7629](https://github.com/rubygems/bundler/pull/7629) - Fix "unresolvable warning" being printed on `bundle install` of multipliplatform `Gemfile` or `gems.rb` files without lockfiles, multiplatform is now managed automatically [#7580](https://github.com/rubygems/bundler/pull/7580) - - Fix setting the number of `--jobs` to be one unit less than specified to the CLI [#3393](https://github.com/rubygems/rubygems/pull/3393) - - Fix extension building when the same git source specifies several gems with extensions [#3475](https://github.com/rubygems/rubygems/pull/3475) - - Fix uninitialized instance variable warning under ruby-head (2.8-dev) [#3477](https://github.com/rubygems/rubygems/pull/3477) - - Fix double chdir warning while installing a git gem with extensions [#3479](https://github.com/rubygems/rubygems/pull/3479) - - Fix some deprecations not showing up when CLI flags passed as `--flag=value` [#3561](https://github.com/rubygems/rubygems/pull/3561) - - Fix man pages display when bundler installed as a default gem [#3562](https://github.com/rubygems/rubygems/pull/3562) - - Fix bundler gem tasks not handling relative paths [#3586](https://github.com/rubygems/rubygems/pull/3586) - - Fix deprecation warnings when options the dashed names are used, such as `--no-prune` [#3623](https://github.com/rubygems/rubygems/pull/3623) - - Fix crash related to bundler gem activation under old rubygems version (2.6.1 or older) [#3626](https://github.com/rubygems/rubygems/pull/3626) - - Avoid stack overflow inside `StubSpecification` on some edge cases [#3635](https://github.com/rubygems/rubygems/pull/3635) - - Fix `bundle remove` with multiline gem specifications [#3400](https://github.com/rubygems/rubygems/pull/3400) - - Fix `bundle info` not informing about deleted gems as opposed to old `bundle show` [#3509](https://github.com/rubygems/rubygems/pull/3509) - - The `--no-deployment` flag to `bundle install` was deprecated just like the other flags that rely on their value being remembered [#3657](https://github.com/rubygems/rubygems/pull/3657) - - Fix `bundle install` unintentionally copying `with` and `without` global config to local configuration [#3666](https://github.com/rubygems/rubygems/pull/3666). This PR also address the `BUNDLE_WITH` environment variable unintentionally being persisted to configuration in a similar way ([#3708](https://github.com/rubygems/rubygems/issues/3708)) - - Fix race condition in `bundle install` that could "empty" exceptions to be raised [#3669](https://github.com/rubygems/rubygems/pull/3669) - - Fix `--no-cache` to `bundle install` being unintentionally deprecated [#3688](https://github.com/rubygems/rubygems/pull/3688) - - Avoid calling `LoadError#message` to fix performance regression in future ruby 3.0 [#3762](https://github.com/rubygems/rubygems/pull/3762) + - Fix setting the number of `--jobs` to be one unit less than specified to the CLI [#3393](https://github.com/ruby/rubygems/pull/3393) + - Fix extension building when the same git source specifies several gems with extensions [#3475](https://github.com/ruby/rubygems/pull/3475) + - Fix uninitialized instance variable warning under ruby-head (2.8-dev) [#3477](https://github.com/ruby/rubygems/pull/3477) + - Fix double chdir warning while installing a git gem with extensions [#3479](https://github.com/ruby/rubygems/pull/3479) + - Fix some deprecations not showing up when CLI flags passed as `--flag=value` [#3561](https://github.com/ruby/rubygems/pull/3561) + - Fix man pages display when bundler installed as a default gem [#3562](https://github.com/ruby/rubygems/pull/3562) + - Fix bundler gem tasks not handling relative paths [#3586](https://github.com/ruby/rubygems/pull/3586) + - Fix deprecation warnings when options the dashed names are used, such as `--no-prune` [#3623](https://github.com/ruby/rubygems/pull/3623) + - Fix crash related to bundler gem activation under old rubygems version (2.6.1 or older) [#3626](https://github.com/ruby/rubygems/pull/3626) + - Avoid stack overflow inside `StubSpecification` on some edge cases [#3635](https://github.com/ruby/rubygems/pull/3635) + - Fix `bundle remove` with multiline gem specifications [#3400](https://github.com/ruby/rubygems/pull/3400) + - Fix `bundle info` not informing about deleted gems as opposed to old `bundle show` [#3509](https://github.com/ruby/rubygems/pull/3509) + - The `--no-deployment` flag to `bundle install` was deprecated just like the other flags that rely on their value being remembered [#3657](https://github.com/ruby/rubygems/pull/3657) + - Fix `bundle install` unintentionally copying `with` and `without` global config to local configuration [#3666](https://github.com/ruby/rubygems/pull/3666). This PR also address the `BUNDLE_WITH` environment variable unintentionally being persisted to configuration in a similar way ([#3708](https://github.com/ruby/rubygems/issues/3708)) + - Fix race condition in `bundle install` that could "empty" exceptions to be raised [#3669](https://github.com/ruby/rubygems/pull/3669) + - Fix `--no-cache` to `bundle install` being unintentionally deprecated [#3688](https://github.com/ruby/rubygems/pull/3688) + - Avoid calling `LoadError#message` to fix performance regression in future ruby 3.0 [#3762](https://github.com/ruby/rubygems/pull/3762) ## 2.1.4 (2020-01-05) @@ -3413,7 +3413,7 @@ Changes ### Bug fixes: - - handle removal of `specs` from rubygems/rubygems@620910 ([#3558](https://github.com/rubygems/bundler/issues/3558), @indirect) + - handle removal of `specs` from ruby/rubygems@620910 ([#3558](https://github.com/rubygems/bundler/issues/3558), @indirect) - install 'universal' gems on Windows ([#3066](https://github.com/rubygems/bundler/issues/3066), @jdmundrawala) - stop passing --local during `rake install` task ([#3236](https://github.com/rubygems/bundler/issues/3236), @indirect) - guard against all possible accidental public gem pushes ([#3533](https://github.com/rubygems/bundler/issues/3533), @indirect) diff --git a/bundler/README.md b/bundler/README.md index b014ff6e1548..2d634b59d300 100644 --- a/bundler/README.md +++ b/bundler/README.md @@ -31,7 +31,7 @@ See [bundler.io](https://bundler.io) for the full documentation. For help with common problems, see [TROUBLESHOOTING](../doc/bundler/TROUBLESHOOTING.md). -Still stuck? Try [filing an issue](https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md). +Still stuck? Try [filing an issue](https://github.com/ruby/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md). ## Other questions @@ -41,7 +41,7 @@ To get in touch with the Bundler core team and other Bundler users, please join ## Contributing -If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put together [the Bundler contributor guide](https://github.com/rubygems/rubygems/blob/master/doc/bundler/contributing/README.md) with all of the information you need to get started. +If you'd like to contribute to Bundler, that's awesome, and we <3 you. We've put together [the Bundler contributor guide](https://github.com/ruby/rubygems/blob/master/doc/bundler/contributing/README.md) with all of the information you need to get started. If you'd like to request a substantial change to Bundler or its documentation, refer to the [Bundler RFC process](https://github.com/rubygems/rfcs) for more information. @@ -51,8 +51,8 @@ RubyGems is managed by [Ruby Central](https://rubycentral.org), a non-profit org ## Code of Conduct -Everyone interacting in the Bundler project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Bundler code of conduct](https://github.com/rubygems/rubygems/blob/master/CODE_OF_CONDUCT.md). +Everyone interacting in the Bundler project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the [Bundler code of conduct](https://github.com/ruby/rubygems/blob/master/CODE_OF_CONDUCT.md). ## License -Bundler is available under an [MIT License](https://github.com/rubygems/rubygems/blob/master/bundler/LICENSE.md). +Bundler is available under an [MIT License](https://github.com/ruby/rubygems/blob/master/bundler/LICENSE.md). diff --git a/bundler/bundler.gemspec b/bundler/bundler.gemspec index 1cea2ee01461..6ef31836600f 100644 --- a/bundler/bundler.gemspec +++ b/bundler/bundler.gemspec @@ -23,10 +23,10 @@ Gem::Specification.new do |s| s.description = "Bundler manages an application's dependencies through its entire life, across many machines, systematically and repeatably" s.metadata = { - "bug_tracker_uri" => "https://github.com/rubygems/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler", - "changelog_uri" => "https://github.com/rubygems/rubygems/blob/master/bundler/CHANGELOG.md", + "bug_tracker_uri" => "https://github.com/ruby/rubygems/issues?q=is%3Aopen+is%3Aissue+label%3ABundler", + "changelog_uri" => "https://github.com/ruby/rubygems/blob/master/bundler/CHANGELOG.md", "homepage_uri" => "https://bundler.io/", - "source_code_uri" => "https://github.com/rubygems/rubygems/tree/master/bundler", + "source_code_uri" => "https://github.com/ruby/rubygems/tree/master/bundler", } s.required_ruby_version = ">= 3.2.0" diff --git a/bundler/lib/bundler/man/bundle-config.1 b/bundler/lib/bundler/man/bundle-config.1 index 29e830a3b0e0..b44891f6e923 100644 --- a/bundler/lib/bundler/man/bundle-config.1 +++ b/bundler/lib/bundler/man/bundle-config.1 @@ -312,7 +312,7 @@ export BUNDLE_GEMS__LONGEROUS__COM="claudette:s00pers3krit" For gems with a git source with HTTP(S) URL you can specify credentials like so: .IP "" 4 .nf -bundle config set \-\-global https://github\.com/rubygems/rubygems\.git username:password +bundle config set \-\-global https://github\.com/ruby/rubygems\.git username:password .fi .IP "" 0 .P diff --git a/bundler/lib/bundler/man/bundle-config.1.ronn b/bundler/lib/bundler/man/bundle-config.1.ronn index 62fce8fa919a..281ab2da0cd1 100644 --- a/bundler/lib/bundler/man/bundle-config.1.ronn +++ b/bundler/lib/bundler/man/bundle-config.1.ronn @@ -360,7 +360,7 @@ Or you can set the credentials as an environment variable like this: For gems with a git source with HTTP(S) URL you can specify credentials like so: - bundle config set --global https://github.com/rubygems/rubygems.git username:password + bundle config set --global https://github.com/ruby/rubygems.git username:password Or you can set the credentials as an environment variable like so: diff --git a/doc/bundler/POLICIES.md b/doc/bundler/POLICIES.md index 247ef98a18c2..ad2e44fadbad 100644 --- a/doc/bundler/POLICIES.md +++ b/doc/bundler/POLICIES.md @@ -110,7 +110,7 @@ Contributors who have contributed regularly for more than six months (or impleme ## Enforcement guidelines -First off, Bundler's policies and enforcement of those policies are subsidiary to [Bundler's code of conduct](https://github.com/rubygems/rubygems/blob/master/CODE_OF_CONDUCT.md) in any case where they conflict. The first priority is treating human beings with respect and empathy, and figuring out project guidelines and sticking to them will always come after that. +First off, Bundler's policies and enforcement of those policies are subsidiary to [Bundler's code of conduct](https://github.com/ruby/rubygems/blob/master/CODE_OF_CONDUCT.md) in any case where they conflict. The first priority is treating human beings with respect and empathy, and figuring out project guidelines and sticking to them will always come after that. When it comes to carrying out our own policies, we're all regular humans trying to do the best we can. There will probably be times when we don't stick to our policies or goals. If you notice a discrepancy between real-life actions and these policies and goals, please bring it up! We want to make sure that our actions and our policies line up, and that our policies exemplify our goals. diff --git a/doc/bundler/README.md b/doc/bundler/README.md index 2199a7eefcdd..4e6630e1dd0c 100644 --- a/doc/bundler/README.md +++ b/doc/bundler/README.md @@ -12,7 +12,7 @@ If you'd like to help make Bundler better, you totally rock! Thanks for helping * [How you can help: your first contributions!](contributing/HOW_YOU_CAN_HELP.md) * [Bug triage](contributing/BUG_TRIAGE.md) * [Getting help](https://slack.bundler.io) -* [Filing issues](https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md) +* [Filing issues](https://github.com/ruby/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md) * [Community](contributing/COMMUNITY.md) ## Development diff --git a/doc/bundler/TROUBLESHOOTING.md b/doc/bundler/TROUBLESHOOTING.md index 12396266f0a7..b7b83ad1632d 100644 --- a/doc/bundler/TROUBLESHOOTING.md +++ b/doc/bundler/TROUBLESHOOTING.md @@ -1,6 +1,6 @@ # Troubleshooting common issues -Stuck using Bundler? Browse these common issues before [filing a new issue](https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md). +Stuck using Bundler? Browse these common issues before [filing a new issue](https://github.com/ruby/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md). ## Permission denied when installing bundler diff --git a/doc/bundler/UPGRADING.md b/doc/bundler/UPGRADING.md index 4b4c4daea0f1..d773dc4b9fc3 100644 --- a/doc/bundler/UPGRADING.md +++ b/doc/bundler/UPGRADING.md @@ -137,7 +137,7 @@ Bundler will refuse to run otherwise. reference to develop their own plugins. The plugin will contain the same code as the old core command, the only difference being that the command is now implemented as `bundle graph` which is much easier to understand. However, the - details of the plugin are under discussion. See [#3333](https://github.com/rubygems/rubygems/issues/3333). + details of the plugin are under discussion. See [#3333](https://github.com/ruby/rubygems/issues/3333). * The `bundle install` command will no longer accept a `--binstubs` flag. diff --git a/doc/bundler/contributing/BUG_TRIAGE.md b/doc/bundler/contributing/BUG_TRIAGE.md index 5e3ab3ea4b59..04fba7a9810c 100644 --- a/doc/bundler/contributing/BUG_TRIAGE.md +++ b/doc/bundler/contributing/BUG_TRIAGE.md @@ -2,7 +2,7 @@ Triaging is the work of processing tickets that have been opened by users. Common tasks include verifying bugs, categorizing tickets, and ensuring there's enough information to reproduce the bug for anyone who wants to try to fix it. -We've created an [issue template]( https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue) to walk users through the process of how to report an issue with the Bundler project. We also have a [troubleshooting guide](../TROUBLESHOOTING.md) to diagnose common problems. +We've created an [issue template]( https://github.com/ruby/rubygems/issues/new?labels=Bundler&template=bundler-related-issue) to walk users through the process of how to report an issue with the Bundler project. We also have a [troubleshooting guide](../TROUBLESHOOTING.md) to diagnose common problems. Not every ticket will be a bug in Bundler's code, but open tickets usually mean that there is something we could improve to help that user. Sometimes that means writing additional documentation or making error messages clearer. diff --git a/doc/bundler/contributing/COMMUNITY.md b/doc/bundler/contributing/COMMUNITY.md index c5d8acf0c345..43a199a9d54d 100644 --- a/doc/bundler/contributing/COMMUNITY.md +++ b/doc/bundler/contributing/COMMUNITY.md @@ -2,7 +2,7 @@ Community is an important part of all we do. If you'd like to be part of the Bundler community, you can jump right in and start helping make Bundler better for everyone who uses it. -It would be tremendously helpful to have more people answering questions about Bundler (and often simply about [RubyGems](https://github.com/rubygems/rubygems) or Ruby itself) in our [issue tracker](https://github.com/rubygems/rubygems/issues) or on [Stack Overflow](https://stackoverflow.com/questions/tagged/bundler). +It would be tremendously helpful to have more people answering questions about Bundler (and often simply about [RubyGems](https://github.com/ruby/rubygems) or Ruby itself) in our [issue tracker](https://github.com/ruby/rubygems/issues) or on [Stack Overflow](https://stackoverflow.com/questions/tagged/bundler). Additional documentation and explanation is always helpful, too. If you have any suggestions for the Bundler website [bundler.io](https://bundler.io), we would absolutely love it if you opened an issue or pull request on the [bundler-site](https://github.com/rubygems/bundler-site) repository. diff --git a/doc/bundler/contributing/HOW_YOU_CAN_HELP.md b/doc/bundler/contributing/HOW_YOU_CAN_HELP.md index 318f8f5629f8..8095a0121459 100644 --- a/doc/bundler/contributing/HOW_YOU_CAN_HELP.md +++ b/doc/bundler/contributing/HOW_YOU_CAN_HELP.md @@ -6,21 +6,21 @@ If at any point you get stuck, here's how to [get in touch with the Bundler team ## First contribution suggestions -We track [small bugs and features](https://github.com/rubygems/rubygems/issues?q=is%3Aissue+is%3Aopen+label%3Abundler+label%3A%22good+first+issue%22) so that anyone who wants to help can start with something that's not too overwhelming. +We track [small bugs and features](https://github.com/ruby/rubygems/issues?q=is%3Aissue+is%3Aopen+label%3Abundler+label%3A%22good+first+issue%22) so that anyone who wants to help can start with something that's not too overwhelming. Generally, great ways to get started helping out with Bundler are: - using prerelease versions (run `gem install bundler --pre`) - - [reporting bugs you encounter or suggesting new features](https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md) + - [reporting bugs you encounter or suggesting new features](https://github.com/ruby/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md) - see the [new features documentation](../development/NEW_FEATURES.md) for more - adding to or editing [the Bundler documentation website](https://bundler.io) and [Bundler man pages](https://bundler.io/man/bundle.1.html) - [checking issues for completeness](BUG_TRIAGE.md) - closing issues that are not complete - - adding a failing test for reproducible [reported bugs](https://github.com/rubygems/rubygems/issues) - - reviewing [pull requests](https://github.com/rubygems/rubygems/pulls) and suggesting improvements + - adding a failing test for reproducible [reported bugs](https://github.com/ruby/rubygems/issues) + - reviewing [pull requests](https://github.com/ruby/rubygems/pulls) and suggesting improvements - improving existing code - writing code (no patch is too small! fix typos or bad whitespace) - get started setting up your dev environment with [these instructions](../development/SETUP.md) - - backfilling [unit tests](https://github.com/rubygems/rubygems/tree/master/bundler/spec/bundler) for modules that lack coverage. + - backfilling [unit tests](https://github.com/ruby/rubygems/tree/master/bundler/spec/bundler) for modules that lack coverage. If nothing on those lists looks good, [talk to us](https://slack.bundler.io/), and we'll figure out what you can help with. We can absolutely use your help, no matter what level of programming skill you have at the moment. diff --git a/doc/bundler/contributing/README.md b/doc/bundler/contributing/README.md index 21c13eccc563..a3ad90f3ce3a 100644 --- a/doc/bundler/contributing/README.md +++ b/doc/bundler/contributing/README.md @@ -4,7 +4,7 @@ Thank you for your interest in making Bundler better! We welcome contributions f Before submitting a contribution, read through the following guidelines: -* [Bundler Code of Conduct](https://github.com/rubygems/rubygems/blob/master/CODE_OF_CONDUCT.md) (By participating in Bundler, you agree to abide by the terms laid out in the CoC.) +* [Bundler Code of Conduct](https://github.com/ruby/rubygems/blob/master/CODE_OF_CONDUCT.md) (By participating in Bundler, you agree to abide by the terms laid out in the CoC.) * [Pull Request Guidelines](../development/PULL_REQUESTS.md) And be sure to [set up your development environment](../development/SETUP.md). diff --git a/doc/bundler/development/NEW_FEATURES.md b/doc/bundler/development/NEW_FEATURES.md index 3dddccc88b7c..94806823d9cd 100644 --- a/doc/bundler/development/NEW_FEATURES.md +++ b/doc/bundler/development/NEW_FEATURES.md @@ -2,7 +2,7 @@ If you would like to add a new feature to Bundler, please follow these steps: - 1. [Create an issue](https://github.com/rubygems/rubygems/issues/new) to discuss your feature. + 1. [Create an issue](https://github.com/ruby/rubygems/issues/new) to discuss your feature. 2. Base your commits on the master branch, since we follow [SemVer](https://semver.org) and don't add new features to old releases. 3. Commit the code and at least one test covering your changes to a feature branch in your fork. 4. Send us a [pull request](PULL_REQUESTS.md) from your feature branch. diff --git a/doc/bundler/development/SETUP.md b/doc/bundler/development/SETUP.md index 16acc6d62a00..9c91de4f0858 100644 --- a/doc/bundler/development/SETUP.md +++ b/doc/bundler/development/SETUP.md @@ -2,7 +2,7 @@ To work on Bundler, you'll probably want to do a couple of things: -* [Fork the Rubygems repo](https://github.com/rubygems/rubygems), and clone the fork onto your machine. ([Follow this tutorial](https://help.github.com/articles/fork-a-repo/) for instructions on forking a repo.) +* [Fork the Rubygems repo](https://github.com/ruby/rubygems), and clone the fork onto your machine. ([Follow this tutorial](https://help.github.com/articles/fork-a-repo/) for instructions on forking a repo.) * Install development dependencies from the rubygems root directory: diff --git a/doc/bundler/documentation/WRITING.md b/doc/bundler/documentation/WRITING.md index eb6129b8a7a6..a7e18b759786 100644 --- a/doc/bundler/documentation/WRITING.md +++ b/doc/bundler/documentation/WRITING.md @@ -2,7 +2,7 @@ ## Writing docs for man pages -*Any commands or file paths in this document assume that you are inside [the bundler/ directory of the rubygems/rubygems repository](https://github.com/rubygems/rubygems/tree/master/bundler).* +*Any commands or file paths in this document assume that you are inside [the bundler/ directory of the ruby/rubygems repository](https://github.com/ruby/rubygems/tree/master/bundler).* A primary source of help for Bundler users are the man pages: the output printed when you run `bundle help` (or `bundler help`). These pages can be a little tricky to format and preview, but are pretty straightforward once you get the hang of it. @@ -59,9 +59,9 @@ $ bin/rspec ./spec/quality_spec.rb ## Writing docs for [the Bundler documentation site](https://bundler.io) -If you'd like to submit a pull request for any of the primary commands or utilities on [the Bundler documentation site](https://bundler.io), please follow the instructions above for writing documentation for man pages from the `rubygems/rubygems` repository. They are the same in each case. +If you'd like to submit a pull request for any of the primary commands or utilities on [the Bundler documentation site](https://bundler.io), please follow the instructions above for writing documentation for man pages from the `ruby/rubygems` repository. They are the same in each case. -Note: Editing `.ronn` files from the `rubygems/rubygems` repository for the primary commands and utilities documentation is all you need 🎉. There is no need to manually change anything in the `rubygems/bundler-site` repository, because the man pages and the docs for primary commands and utilities on [the Bundler documentation site](https://bundler.io) are one in the same. They are generated automatically from the `rubygems/rubygems` repository's `.ronn` files from the `bin/rake man:build` command. +Note: Editing `.ronn` files from the `ruby/rubygems` repository for the primary commands and utilities documentation is all you need 🎉. There is no need to manually change anything in the `rubygems/bundler-site` repository, because the man pages and the docs for primary commands and utilities on [the Bundler documentation site](https://bundler.io) are one in the same. They are generated automatically from the `ruby/rubygems` repository's `.ronn` files from the `bin/rake man:build` command. Additionally, if you'd like to add a guide or tutorial: in the `rubygems/bundler-site` repository, go to `/bundler-site/source/current_version_of_bundler/guides` and add [a new Markdown file](https://guides.github.com/features/mastering-markdown/) (with an extension ending in `.md`). Be sure to correctly format the title of your new guide, like so: ``` diff --git a/doc/rubygems/CONTRIBUTING.md b/doc/rubygems/CONTRIBUTING.md index e25896bbef22..b6b0a2013005 100644 --- a/doc/rubygems/CONTRIBUTING.md +++ b/doc/rubygems/CONTRIBUTING.md @@ -21,7 +21,7 @@ contributors to follow to reduce the time it takes to get changes merged in. 5. If you have any questions, Feel free to join us on Slack, you can register by signing up at http://slack.bundler.io or file an issue here: - http://github.com/rubygems/rubygems/issues + http://github.com/ruby/rubygems/issues For more information and ideas on how to contribute to RubyGems ecosystem, see diff --git a/rubygems-update.gemspec b/rubygems-update.gemspec index b735f036f234..452724451d79 100644 --- a/rubygems-update.gemspec +++ b/rubygems-update.gemspec @@ -15,9 +15,9 @@ Gem::Specification.new do |s| developers. See our guide on publishing a Gem at guides.rubygems.org" s.homepage = "https://guides.rubygems.org/" s.metadata = { - "source_code_uri" => "https://github.com/rubygems/rubygems", - "bug_tracker_uri" => "https://github.com/rubygems/rubygems/issues", - "changelog_uri" => "https://github.com/rubygems/rubygems/blob/master/CHANGELOG.md", + "source_code_uri" => "https://github.com/ruby/rubygems", + "bug_tracker_uri" => "https://github.com/ruby/rubygems/issues", + "changelog_uri" => "https://github.com/ruby/rubygems/blob/master/CHANGELOG.md", "funding_uri" => "https://rubycentral.org/#/portal/signup", } s.licenses = ["Ruby", "MIT"] diff --git a/tool/release.rb b/tool/release.rb index bb1fffa10987..5caa27628f43 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -40,7 +40,7 @@ def bump_versions! def create_for_github! tag = "#{@tag_prefix}#{@version}" - gh_client.create_release "rubygems/rubygems", tag, name: tag, + gh_client.create_release "ruby/rubygems", tag, name: tag, body: @changelog.release_notes.join("\n").strip, prerelease: @version.prerelease?, target_commitish: @stable_branch @@ -51,7 +51,7 @@ def previous_version end def latest_release - @latest_release ||= gh_client.releases("rubygems/rubygems").select {|release| release.tag_name.start_with?(@tag_prefix) }.max_by do |release| + @latest_release ||= gh_client.releases("ruby/rubygems").select {|release| release.tag_name.start_with?(@tag_prefix) }.max_by do |release| Gem::Version.new(remove_tag_prefix(release.tag_name)) end end @@ -183,7 +183,7 @@ def prepare! system("git", "push", exception: true) gh_client.create_pull_request( - "rubygems/rubygems", + "ruby/rubygems", @stable_branch, @release_branch, "Prepare RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", @@ -199,7 +199,7 @@ def prepare! system("git", "cherry-pick", "--abort") else gh_client.create_pull_request( - "rubygems/rubygems", + "ruby/rubygems", "master", "cherry_pick_changelogs", "Changelogs for RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", @@ -288,7 +288,7 @@ def unreleased_pull_requests end def scan_unreleased_pull_requests(ids) - pulls = gh_client.pull_requests("rubygems/rubygems", sort: :updated, state: :closed, direction: :desc) + pulls = gh_client.pull_requests("ruby/rubygems", sort: :updated, state: :closed, direction: :desc) loop do pulls.select! {|pull| ids.include?(pull.number) } From c839c8985926ff2a8fa95990d898a60307ea25e4 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 20 Oct 2025 14:24:21 +0900 Subject: [PATCH 050/295] Fix Layout/HashAlignment offenses by rubocop -A --- tool/release.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index 5caa27628f43..d14b0994ab74 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -41,9 +41,9 @@ def create_for_github! tag = "#{@tag_prefix}#{@version}" gh_client.create_release "ruby/rubygems", tag, name: tag, - body: @changelog.release_notes.join("\n").strip, - prerelease: @version.prerelease?, - target_commitish: @stable_branch + body: @changelog.release_notes.join("\n").strip, + prerelease: @version.prerelease?, + target_commitish: @stable_branch end def previous_version From 7339bb94abbfc7469e689eaaf63b1cc76dfaf783 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 20 Oct 2025 14:26:58 +0900 Subject: [PATCH 051/295] Partly reverted ruby-core job for breaking repository url on stable branch --- .github/workflows/ruby-core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ruby-core.yml b/.github/workflows/ruby-core.yml index d3c40656be90..8f5414afd1e7 100644 --- a/.github/workflows/ruby-core.yml +++ b/.github/workflows/ruby-core.yml @@ -42,7 +42,7 @@ jobs: working-directory: ruby/ruby - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: - path: ruby/rubygems + path: rubygems/rubygems # We need to backport repository url to sync_default_gems.rb of `ruby_3_4` branch. persist-credentials: false - name: Sync tools run: | From bc77ec0bf21fd777f380e3718d18919749b0b3bd Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 23 Oct 2025 07:54:45 +0900 Subject: [PATCH 052/295] Bump up vendored uri to 1.0.4 --- .../lib/bundler/vendor/uri/lib/uri/generic.rb | 29 ++++++++++++++----- .../lib/bundler/vendor/uri/lib/uri/version.rb | 2 +- lib/rubygems/vendor/uri/lib/uri/generic.rb | 29 ++++++++++++++----- lib/rubygems/vendor/uri/lib/uri/version.rb | 2 +- tool/bundler/vendor_gems.rb | 2 +- tool/bundler/vendor_gems.rb.lock | 6 ++-- 6 files changed, 48 insertions(+), 22 deletions(-) diff --git a/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb b/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb index 6abb171d1425..a27874748e53 100644 --- a/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +++ b/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb @@ -186,18 +186,18 @@ def initialize(scheme, if arg_check self.scheme = scheme - self.userinfo = userinfo self.hostname = host self.port = port + self.userinfo = userinfo self.path = path self.query = query self.opaque = opaque self.fragment = fragment else self.set_scheme(scheme) - self.set_userinfo(userinfo) self.set_host(host) self.set_port(port) + self.set_userinfo(userinfo) self.set_path(path) self.query = query self.set_opaque(opaque) @@ -511,7 +511,7 @@ def set_userinfo(user, password = nil) user, password = split_userinfo(user) end @user = user - @password = password if password + @password = password [@user, @password] end @@ -522,7 +522,7 @@ def set_userinfo(user, password = nil) # See also Bundler::URI::Generic.user=. # def set_user(v) - set_userinfo(v, @password) + set_userinfo(v, nil) v end protected :set_user @@ -574,6 +574,12 @@ def password @password end + # Returns the authority info (array of user, password, host and + # port), if any is set. Or returns +nil+. + def authority + return @user, @password, @host, @port if @user || @password || @host || @port + end + # Returns the user component after Bundler::URI decoding. def decoded_user Bundler::URI.decode_uri_component(@user) if @user @@ -615,6 +621,13 @@ def set_host(v) end protected :set_host + # Protected setter for the authority info (+user+, +password+, +host+ + # and +port+). If +port+ is +nil+, +default_port+ will be set. + # + protected def set_authority(user, password, host, port = nil) + @user, @password, @host, @port = user, password, host, port || self.default_port + end + # # == Args # @@ -639,6 +652,7 @@ def set_host(v) def host=(v) check_host(v) set_host(v) + set_userinfo(nil) v end @@ -729,6 +743,7 @@ def set_port(v) def port=(v) check_port(v) set_port(v) + set_userinfo(nil) port end @@ -1121,7 +1136,7 @@ def merge(oth) base = self.dup - authority = rel.userinfo || rel.host || rel.port + authority = rel.authority # RFC2396, Section 5.2, 2) if (rel.path.nil? || rel.path.empty?) && !authority && !rel.query @@ -1134,9 +1149,7 @@ def merge(oth) # RFC2396, Section 5.2, 4) if authority - base.set_userinfo(rel.userinfo) - base.set_host(rel.host) - base.set_port(rel.port || base.default_port) + base.set_authority(*authority) base.set_path(rel.path) elsif base.path && rel.path base.set_path(merge_path(base.path, rel.path)) diff --git a/bundler/lib/bundler/vendor/uri/lib/uri/version.rb b/bundler/lib/bundler/vendor/uri/lib/uri/version.rb index d4996a12e292..a3ec8b9b0b47 100644 --- a/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +++ b/bundler/lib/bundler/vendor/uri/lib/uri/version.rb @@ -1,6 +1,6 @@ module Bundler::URI # :stopdoc: - VERSION_CODE = '010003'.freeze + VERSION_CODE = '010004'.freeze VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze # :startdoc: end diff --git a/lib/rubygems/vendor/uri/lib/uri/generic.rb b/lib/rubygems/vendor/uri/lib/uri/generic.rb index 2eabe2b4e338..99b33b3d4f11 100644 --- a/lib/rubygems/vendor/uri/lib/uri/generic.rb +++ b/lib/rubygems/vendor/uri/lib/uri/generic.rb @@ -186,18 +186,18 @@ def initialize(scheme, if arg_check self.scheme = scheme - self.userinfo = userinfo self.hostname = host self.port = port + self.userinfo = userinfo self.path = path self.query = query self.opaque = opaque self.fragment = fragment else self.set_scheme(scheme) - self.set_userinfo(userinfo) self.set_host(host) self.set_port(port) + self.set_userinfo(userinfo) self.set_path(path) self.query = query self.set_opaque(opaque) @@ -511,7 +511,7 @@ def set_userinfo(user, password = nil) user, password = split_userinfo(user) end @user = user - @password = password if password + @password = password [@user, @password] end @@ -522,7 +522,7 @@ def set_userinfo(user, password = nil) # See also Gem::URI::Generic.user=. # def set_user(v) - set_userinfo(v, @password) + set_userinfo(v, nil) v end protected :set_user @@ -574,6 +574,12 @@ def password @password end + # Returns the authority info (array of user, password, host and + # port), if any is set. Or returns +nil+. + def authority + return @user, @password, @host, @port if @user || @password || @host || @port + end + # Returns the user component after Gem::URI decoding. def decoded_user Gem::URI.decode_uri_component(@user) if @user @@ -615,6 +621,13 @@ def set_host(v) end protected :set_host + # Protected setter for the authority info (+user+, +password+, +host+ + # and +port+). If +port+ is +nil+, +default_port+ will be set. + # + protected def set_authority(user, password, host, port = nil) + @user, @password, @host, @port = user, password, host, port || self.default_port + end + # # == Args # @@ -639,6 +652,7 @@ def set_host(v) def host=(v) check_host(v) set_host(v) + set_userinfo(nil) v end @@ -729,6 +743,7 @@ def set_port(v) def port=(v) check_port(v) set_port(v) + set_userinfo(nil) port end @@ -1121,7 +1136,7 @@ def merge(oth) base = self.dup - authority = rel.userinfo || rel.host || rel.port + authority = rel.authority # RFC2396, Section 5.2, 2) if (rel.path.nil? || rel.path.empty?) && !authority && !rel.query @@ -1134,9 +1149,7 @@ def merge(oth) # RFC2396, Section 5.2, 4) if authority - base.set_userinfo(rel.userinfo) - base.set_host(rel.host) - base.set_port(rel.port || base.default_port) + base.set_authority(*authority) base.set_path(rel.path) elsif base.path && rel.path base.set_path(merge_path(base.path, rel.path)) diff --git a/lib/rubygems/vendor/uri/lib/uri/version.rb b/lib/rubygems/vendor/uri/lib/uri/version.rb index c2f617ce2500..d3dd421aaa39 100644 --- a/lib/rubygems/vendor/uri/lib/uri/version.rb +++ b/lib/rubygems/vendor/uri/lib/uri/version.rb @@ -1,6 +1,6 @@ module Gem::URI # :stopdoc: - VERSION_CODE = '010003'.freeze + VERSION_CODE = '010004'.freeze VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze # :startdoc: end diff --git a/tool/bundler/vendor_gems.rb b/tool/bundler/vendor_gems.rb index b3e06d3f0960..72546faf3163 100644 --- a/tool/bundler/vendor_gems.rb +++ b/tool/bundler/vendor_gems.rb @@ -14,4 +14,4 @@ gem "timeout", "0.4.3" gem "thor", "1.4.0" gem "tsort", "0.2.0" -gem "uri", "1.0.3" +gem "uri", "1.0.4" diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index ec2763726187..0222bd962c42 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -40,7 +40,7 @@ GEM thor (1.4.0) timeout (0.4.3) tsort (0.2.0) - uri (1.0.3) + uri (1.0.4) PLATFORMS java @@ -64,7 +64,7 @@ DEPENDENCIES thor (= 1.4.0) timeout (= 0.4.3) tsort (= 0.2.0) - uri (= 1.0.3) + uri (= 1.0.4) CHECKSUMS connection_pool (2.5.0) sha256=233b92f8d38e038c1349ccea65dd3772727d669d6d2e71f9897c8bf5cd53ebfc @@ -80,7 +80,7 @@ CHECKSUMS thor (1.4.0) sha256=8763e822ccb0f1d7bee88cde131b19a65606657b847cc7b7b4b82e772bcd8a3d timeout (0.4.3) sha256=9509f079b2b55fe4236d79633bd75e34c1c1e7e3fb4b56cb5fda61f80a0fe30e tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f - uri (1.0.3) sha256=e9f2244608eea2f7bc357d954c65c910ce0399ca5e18a7a29207ac22d8767011 + uri (1.0.4) sha256=34485d137c079f8753a0ca1d883841a7ba2e5fae556e3c30c2aab0dde616344b BUNDLED WITH 4.0.0.dev From 3946be008c9b41cdeb389f1722375575a0ef7df9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 23 Oct 2025 08:22:43 +0900 Subject: [PATCH 053/295] Removed credential assertion from stdout --- test/rubygems/test_gem_request.rb | 2 +- test/rubygems/test_gem_uri.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/rubygems/test_gem_request.rb b/test/rubygems/test_gem_request.rb index 244f9d90feec..cd0a416e79c0 100644 --- a/test/rubygems/test_gem_request.rb +++ b/test/rubygems/test_gem_request.rb @@ -248,7 +248,7 @@ def test_fetch_basic_oauth_encoded auth_header = conn.payload["Authorization"] assert_equal "Basic #{base64_encode64("{DEScede}pass:x-oauth-basic")}".strip, auth_header - assert_includes @ui.output, "GET https://REDACTED:x-oauth-basic@example.rubygems/specs.#{Gem.marshal_version}" + assert_includes @ui.output, "GET https://REDACTED@example.rubygems/specs.#{Gem.marshal_version}" end def test_fetch_head diff --git a/test/rubygems/test_gem_uri.rb b/test/rubygems/test_gem_uri.rb index 1253ebc6de4a..ce633c99b63b 100644 --- a/test/rubygems/test_gem_uri.rb +++ b/test/rubygems/test_gem_uri.rb @@ -21,7 +21,7 @@ def test_redacted_with_token end def test_redacted_with_user_x_oauth_basic - assert_equal "https://REDACTED:x-oauth-basic@example.com/", Gem::Uri.new("https://token:x-oauth-basic@example.com/").redacted.to_s + assert_equal "https://REDACTED@example.com/", Gem::Uri.new("https://token:x-oauth-basic@example.com/").redacted.to_s end def test_redacted_without_credential From 42e22fd367f5d7b828336c1bf5a7e15e93df7739 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 23 Oct 2025 13:35:46 +0900 Subject: [PATCH 054/295] Forcely activate irb if that isn't available when running with bundle console --- bundler/lib/bundler/cli/console.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bundler/lib/bundler/cli/console.rb b/bundler/lib/bundler/cli/console.rb index f6389e8ea004..2d1a2ce458dd 100644 --- a/bundler/lib/bundler/cli/console.rb +++ b/bundler/lib/bundler/cli/console.rb @@ -21,6 +21,11 @@ def get_console(name) get_constant(name) rescue LoadError if name == "irb" + if defined?(Gem::BUNDLED_GEMS) && Gem::BUNDLED_GEMS.respond_to?(:force_activate) + Gem::BUNDLED_GEMS.force_activate "irb" + require name + return get_constant(name) + end Bundler.ui.error "#{name} is not available" exit 1 else From 8f6eb4ac643bc0f9a693a3a57dfee85547997bcd Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 27 Oct 2025 10:41:05 +0900 Subject: [PATCH 055/295] Fixup 9b3a5a8ae9cd8bc3666185d5c09c9fea403c80c6 --- bundler/spec/other/major_deprecation_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/spec/other/major_deprecation_spec.rb b/bundler/spec/other/major_deprecation_spec.rb index 947800be22ba..dc96fb852a8b 100644 --- a/bundler/spec/other/major_deprecation_spec.rb +++ b/bundler/spec/other/major_deprecation_spec.rb @@ -598,7 +598,7 @@ L end - it "raises a helpful error" do + it "warns a helpful error" do bundle "install", raise_on_error: false expect(err).to include("Found x64-mingw32 in lockfile, which is deprecated and will be removed in the future.") From fd2dcb502b651c37a4f7c71989c9a7e169e1dd21 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 27 Oct 2025 15:04:14 +0900 Subject: [PATCH 056/295] Use dummy gem instead of uri. If we install uri-1.0.4 as default gems. The example may be failed with version miss-match. --- bundler/spec/commands/lock_spec.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bundler/spec/commands/lock_spec.rb b/bundler/spec/commands/lock_spec.rb index 36493e108a2c..b7f475f72a7f 100644 --- a/bundler/spec/commands/lock_spec.rb +++ b/bundler/spec/commands/lock_spec.rb @@ -313,14 +313,14 @@ it "updates a specific gem and write to a custom location" do build_repo4 do - build_gem "uri", %w[1.0.2 1.0.3] + build_gem "foo", %w[1.0.2 1.0.3] build_gem "warning", %w[1.4.0 1.5.0] end gemfile <<~G source "https://gem.repo4/" - gem "uri" + gem "foo" gem "warning" G @@ -328,7 +328,7 @@ GEM remote: https://gem.repo4 specs: - uri (1.0.2) + foo (1.0.2) warning (1.4.0) PLATFORMS @@ -342,10 +342,10 @@ #{Bundler::VERSION} L - bundle "lock --update uri --lockfile=lock" + bundle "lock --update foo --lockfile=lock" lockfile_content = read_lockfile("lock") - expect(lockfile_content).to include("uri (1.0.3)") + expect(lockfile_content).to include("foo (1.0.3)") expect(lockfile_content).to include("warning (1.4.0)") end From 668b300261c22ea9d74fb4461c4f27d1b85904a4 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 27 Oct 2025 15:05:33 +0900 Subject: [PATCH 057/295] If we use shared GEM_HOME and install multiple versions, it may cause unexpected test failures. ``` Fetching gem metadata from https://gem.repo4/. Resolving dependencies... Resolving dependencies... # $? => 0 cannot load such file -- diff/lcs ``` --- bundler/spec/spec_helper.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bundler/spec/spec_helper.rb b/bundler/spec/spec_helper.rb index 87bdf8b9f3a1..d750218452eb 100644 --- a/bundler/spec/spec_helper.rb +++ b/bundler/spec/spec_helper.rb @@ -19,6 +19,10 @@ ENV["BUNDLER_EDITOR"] = nil require "bundler" +# If we use shared GEM_HOME and install multiple versions, it may cause +# unexpected test failures. +gem "diff-lcs" + require "rspec/core" require "rspec/expectations" require "rspec/mocks" From 687ffd7265218796ae775a11677a76f419ad999d Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 27 Oct 2025 15:17:29 +0900 Subject: [PATCH 058/295] Drop to support old git --- bundler/lib/bundler/source/git/git_proxy.rb | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/bundler/lib/bundler/source/git/git_proxy.rb b/bundler/lib/bundler/source/git/git_proxy.rb index b6f8460400f8..02ec121abeca 100644 --- a/bundler/lib/bundler/source/git/git_proxy.rb +++ b/bundler/lib/bundler/source/git/git_proxy.rb @@ -408,11 +408,7 @@ def capture(cmd, dir, ignore_err: false) def capture3_args_for(cmd, dir) return ["git", *cmd] unless dir - if Bundler.feature_flag.bundler_4_mode? || supports_minus_c? - ["git", "-C", dir.to_s, *cmd] - else - ["git", *cmd, { chdir: dir.to_s }] - end + ["git", "-C", dir.to_s, *cmd] end def extra_clone_args @@ -451,10 +447,6 @@ def full_clone? depth.nil? end - def supports_minus_c? - @supports_minus_c ||= Gem::Version.new(version) >= Gem::Version.new("1.8.5") - end - def needs_allow_any_sha1_in_want? @needs_allow_any_sha1_in_want ||= Gem::Version.new(version) <= Gem::Version.new("2.13.7") end From b2e18100670c4c3f77f5b4f7c0d2f9c0c376e719 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 27 Oct 2025 15:18:58 +0900 Subject: [PATCH 059/295] bundler_4_mode always return true --- bundler/lib/bundler/cli.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index b8a8be82c185..af634291dd47 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -492,7 +492,7 @@ def version build_info = " (#{BuildMetadata.timestamp} commit #{BuildMetadata.git_commit_sha})" end - if !cli_help && Bundler.feature_flag.bundler_4_mode? + if !cli_help Bundler.ui.info "#{Bundler.verbose_version}#{build_info}" else Bundler.ui.info "Bundler version #{Bundler.verbose_version}#{build_info}" From 7aa2fd5b71e066eb0f44bb9c8b0eaa9721827b1c Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 27 Oct 2025 15:37:18 +0900 Subject: [PATCH 060/295] Removed unused funding site --- .github/FUNDING.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 5f9e66dab7c8..5728893191b6 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1 @@ custom: https://rubycentral.org/#/portal/signup -github: rubytogether From d33c79010990803654b719265212cbb60c318084 Mon Sep 17 00:00:00 2001 From: dysonreturns <173946744+dysonreturns@users.noreply.github.com> Date: Tue, 21 Oct 2025 10:35:26 -0700 Subject: [PATCH 061/295] Update project CoC to Ruby Community Conduct Guideline --- CODE_OF_CONDUCT.md | 138 +++------------------------------------------ 1 file changed, 9 insertions(+), 129 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index ed42bfc0c4f9..29e43a688ad0 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,132 +1,12 @@ -# RubyGems and Bundler Code of Conduct +# Code of Conduct -## Our Pledge +These practices were derived from the Ruby Community Conduct Guideline. -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual -identity and orientation. +This document provides community guidelines for a safe, respectful, productive, and collaborative place for any person who is willing to contribute to the project. +It applies to all "collaborative space", which is defined as community communications channels (such as mailing lists, submitted patches, commit comments, etc.). +Other communities may pick their own Code of Conduct. -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall - community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or advances of - any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email address, - without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official email address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -[conduct@rubygems.org](mailto:conduct@rubygems.org). -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series of -actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or permanent -ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the -community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.1, available at -[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at -[https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations +* Participants will be tolerant of opposing views. +* Participants must ensure that their language and actions are free of personal attacks and disparaging personal remarks. +* When interpreting the words and actions of others, participants should always assume good intentions. +* Behaviour which can be reasonably considered harassment will not be tolerated. From 6cdf5f6d8a6c08480b81e8db8142bda8b9100954 Mon Sep 17 00:00:00 2001 From: dysonreturns <22199434-dysonreturns@users.noreply.gitlab.com> Date: Tue, 21 Oct 2025 11:21:09 -0700 Subject: [PATCH 062/295] Update new gem CoC and prompt Prompt wording "prefer safe, respectful, productive, and collaborative spaces" is copied verbatim from Ruby Community Conduct Guideline. --- bundler/lib/bundler/cli/gem.rb | 8 +- .../templates/newgem/CODE_OF_CONDUCT.md.tt | 138 ++---------------- 2 files changed, 11 insertions(+), 135 deletions(-) diff --git a/bundler/lib/bundler/cli/gem.rb b/bundler/lib/bundler/cli/gem.rb index 56d23d9e9fc2..23b29bf36bee 100644 --- a/bundler/lib/bundler/cli/gem.rb +++ b/bundler/lib/bundler/cli/gem.rb @@ -178,12 +178,8 @@ def run if ask_and_set(:coc, "Do you want to include a code of conduct in gems you generate?", "Codes of conduct can increase contributions to your project by contributors who " \ - "prefer collaborative, safe spaces. You can read more about the code of conduct at " \ - "contributor-covenant.org. Having a code of conduct means agreeing to the responsibility " \ - "of enforcing it, so be sure that you are prepared to do that. Be sure that your email " \ - "address is specified as a contact in the generated code of conduct so that people know " \ - "who to contact in case of a violation. For suggestions about " \ - "how to enforce codes of conduct, see https://bit.ly/coc-enforcement.") + "prefer safe, respectful, productive, and collaborative spaces. \n" \ + "See https://github.com/ruby/rubygems/blob/master/CODE_OF_CONDUCT.md") config[:coc] = true Bundler.ui.info "Code of conduct enabled in config" templates.merge!("CODE_OF_CONDUCT.md.tt" => "CODE_OF_CONDUCT.md") diff --git a/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt b/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt index 67fe8cee798a..29e43a688ad0 100644 --- a/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +++ b/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt @@ -1,132 +1,12 @@ -# Contributor Covenant Code of Conduct +# Code of Conduct -## Our Pledge +These practices were derived from the Ruby Community Conduct Guideline. -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual -identity and orientation. +This document provides community guidelines for a safe, respectful, productive, and collaborative place for any person who is willing to contribute to the project. +It applies to all "collaborative space", which is defined as community communications channels (such as mailing lists, submitted patches, commit comments, etc.). +Other communities may pick their own Code of Conduct. -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall - community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or advances of - any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email address, - without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official email address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -[INSERT CONTACT METHOD]. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series of -actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or permanent -ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the -community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.1, available at -[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at -[https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations +* Participants will be tolerant of opposing views. +* Participants must ensure that their language and actions are free of personal attacks and disparaging personal remarks. +* When interpreting the words and actions of others, participants should always assume good intentions. +* Behaviour which can be reasonably considered harassment will not be tolerated. From 62ba34d6c96a2bdb6f9a9fbd16bbfe03223e1677 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 23 Oct 2025 09:08:33 +0900 Subject: [PATCH 063/295] Make more shortly with https://rubyonrails.org/conduct --- CODE_OF_CONDUCT.md | 8 +++----- .../lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt | 8 +++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 29e43a688ad0..38bc097086ea 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,12 +1,10 @@ # Code of Conduct -These practices were derived from the Ruby Community Conduct Guideline. - -This document provides community guidelines for a safe, respectful, productive, and collaborative place for any person who is willing to contribute to the project. -It applies to all "collaborative space", which is defined as community communications channels (such as mailing lists, submitted patches, commit comments, etc.). -Other communities may pick their own Code of Conduct. +RubyGems follows [The Ruby Community Conduct Guideline](https://www.ruby-lang.org/en/conduct) in all "collaborative space", which is defined as community communications channels (such as mailing lists, submitted patches, commit comments, etc.): * Participants will be tolerant of opposing views. * Participants must ensure that their language and actions are free of personal attacks and disparaging personal remarks. * When interpreting the words and actions of others, participants should always assume good intentions. * Behaviour which can be reasonably considered harassment will not be tolerated. + +If you have any concerns about behaviour within this project, please contact us at [conduct@rubygems.org](mailto:conduct@rubygems.org). diff --git a/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt b/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt index 29e43a688ad0..633baebdd558 100644 --- a/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +++ b/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt @@ -1,12 +1,10 @@ # Code of Conduct -These practices were derived from the Ruby Community Conduct Guideline. - -This document provides community guidelines for a safe, respectful, productive, and collaborative place for any person who is willing to contribute to the project. -It applies to all "collaborative space", which is defined as community communications channels (such as mailing lists, submitted patches, commit comments, etc.). -Other communities may pick their own Code of Conduct. +<%= config[:name].inspect %> follows [The Ruby Community Conduct Guideline](https://www.ruby-lang.org/en/conduct) in all "collaborative space", which is defined as community communications channels (such as mailing lists, submitted patches, commit comments, etc.): * Participants will be tolerant of opposing views. * Participants must ensure that their language and actions are free of personal attacks and disparaging personal remarks. * When interpreting the words and actions of others, participants should always assume good intentions. * Behaviour which can be reasonably considered harassment will not be tolerated. + +If you have any concerns about behaviour within this project, please contact us at [<%= config[:email].inspect %>](mailto:<%= config[:email].inspect %>). From 55745ee0f80208ab8b0078d336593b2f23b2062e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 18 Apr 2024 15:28:50 +0900 Subject: [PATCH 064/295] Deprecate --default option --- lib/rubygems/install_update_options.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rubygems/install_update_options.rb b/lib/rubygems/install_update_options.rb index 0d0f0dc211ef..57c41b75861c 100644 --- a/lib/rubygems/install_update_options.rb +++ b/lib/rubygems/install_update_options.rb @@ -158,7 +158,7 @@ def add_install_update_options options[:without_groups].concat v.map(&:intern) end - add_option(:"Install/Update", "--default", + add_option(:Deprecated, "--default", "Add the gem's full specification to", "specifications/default and extract only its bin") do |v,_o| options[:install_as_default] = v From 15e46a3a683f8d4c9b29542490456040025d8524 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 18 Apr 2024 15:38:00 +0900 Subject: [PATCH 065/295] Completely removed install_as_default feature --- lib/rubygems/commands/install_command.rb | 6 +- lib/rubygems/commands/setup_command.rb | 1 - lib/rubygems/dependency_installer.rb | 3 - lib/rubygems/install_default_message.rb | 13 --- lib/rubygems/install_update_options.rb | 1 - lib/rubygems/installer.rb | 31 ++----- test/rubygems/helper.rb | 2 +- test/rubygems/test_gem_installer.rb | 113 ----------------------- 8 files changed, 10 insertions(+), 160 deletions(-) delete mode 100644 lib/rubygems/install_default_message.rb diff --git a/lib/rubygems/commands/install_command.rb b/lib/rubygems/commands/install_command.rb index 2888b6c55a83..70d32013ba6a 100644 --- a/lib/rubygems/commands/install_command.rb +++ b/lib/rubygems/commands/install_command.rb @@ -239,11 +239,7 @@ def install_gems # :nodoc: # Loads post-install hooks def load_hooks # :nodoc: - if options[:install_as_default] - require_relative "../install_default_message" - else - require_relative "../install_message" - end + require_relative "../install_message" require_relative "../rdoc" end diff --git a/lib/rubygems/commands/setup_command.rb b/lib/rubygems/commands/setup_command.rb index 85e28cceddf6..2b9c522a6b6a 100644 --- a/lib/rubygems/commands/setup_command.rb +++ b/lib/rubygems/commands/setup_command.rb @@ -398,7 +398,6 @@ def install_default_bundler_gem(bin_dir) env_shebang: options[:env_shebang], format_executable: options[:format_executable], force: options[:force], - install_as_default: true, bin_dir: bin_dir, install_dir: default_dir, wrappers: true diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_installer.rb index b4152e83e913..6fbfe53643a2 100644 --- a/lib/rubygems/dependency_installer.rb +++ b/lib/rubygems/dependency_installer.rb @@ -28,7 +28,6 @@ class Gem::DependencyInstaller wrappers: true, build_args: nil, build_docs_in_background: false, - install_as_default: false, }.freeze ## @@ -87,7 +86,6 @@ def initialize(options = {}) @wrappers = options[:wrappers] @build_args = options[:build_args] @build_docs_in_background = options[:build_docs_in_background] - @install_as_default = options[:install_as_default] @dir_mode = options[:dir_mode] @data_mode = options[:data_mode] @prog_mode = options[:prog_mode] @@ -240,7 +238,6 @@ def install(dep_or_name, version = Gem::Requirement.default) user_install: @user_install, wrappers: @wrappers, build_root: @build_root, - install_as_default: @install_as_default, dir_mode: @dir_mode, data_mode: @data_mode, prog_mode: @prog_mode, diff --git a/lib/rubygems/install_default_message.rb b/lib/rubygems/install_default_message.rb deleted file mode 100644 index 0640eaaf0883..000000000000 --- a/lib/rubygems/install_default_message.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -require_relative "../rubygems" -require_relative "user_interaction" - -## -# A post-install hook that displays "Successfully installed -# some_gem-1.0 as a default gem" - -Gem.post_install do |installer| - ui = Gem::DefaultUserInteraction.ui - ui.say "Successfully installed #{installer.spec.full_name} as a default gem" -end diff --git a/lib/rubygems/install_update_options.rb b/lib/rubygems/install_update_options.rb index 57c41b75861c..2d80e9978797 100644 --- a/lib/rubygems/install_update_options.rb +++ b/lib/rubygems/install_update_options.rb @@ -161,7 +161,6 @@ def add_install_update_options add_option(:Deprecated, "--default", "Add the gem's full specification to", "specifications/default and extract only its bin") do |v,_o| - options[:install_as_default] = v end add_option(:"Install/Update", "--explain", diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index 0cfe59b5bb5b..46c4844ab961 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -274,11 +274,7 @@ def install run_pre_install_hooks # Set loaded_from to ensure extension_dir is correct - if @options[:install_as_default] - spec.loaded_from = default_spec_file - else - spec.loaded_from = spec_file - end + spec.loaded_from = spec_file # Completely remove any previous gem files FileUtils.rm_rf gem_dir @@ -287,24 +283,17 @@ def install dir_mode = options[:dir_mode] FileUtils.mkdir_p gem_dir, mode: dir_mode && 0o755 - if @options[:install_as_default] - extract_bin - write_default_spec - else - extract_files + extract_files - build_extensions - write_build_info_file - run_post_build_hooks - end + build_extensions + write_build_info_file + run_post_build_hooks generate_bin generate_plugins - unless @options[:install_as_default] - write_spec - write_cache_file - end + write_spec + write_cache_file File.chmod(dir_mode, gem_dir) if dir_mode @@ -889,11 +878,7 @@ def pre_install_checks ensure_loadable_spec - if options[:install_as_default] - Gem.ensure_default_gem_subdirectories gem_home - else - Gem.ensure_gem_subdirectories gem_home - end + Gem.ensure_gem_subdirectories gem_home return true if @force diff --git a/test/rubygems/helper.rb b/test/rubygems/helper.rb index b797960ac936..ecd92b0a572e 100644 --- a/test/rubygems/helper.rb +++ b/test/rubygems/helper.rb @@ -811,7 +811,7 @@ def install_specs(*specs) def install_default_gems(*specs) specs.each do |spec| - installer = Gem::Installer.for_spec(spec, install_as_default: true) + installer = Gem::Installer.for_spec(spec) installer.install Gem.register_default_spec(spec) end diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index 34415aa7dd7e..3fa617ef50e0 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -2425,119 +2425,6 @@ def test_dir assert_match %r{/gemhome/gems/a-2$}, installer.dir end - def test_default_gem_loaded_from - spec = util_spec "a" - installer = Gem::Installer.for_spec spec, install_as_default: true - installer.install - assert_predicate spec, :default_gem? - end - - def test_default_gem_without_wrappers - installer = setup_base_installer - - FileUtils.rm_rf File.join(Gem.default_dir, "specifications") - - installer.wrappers = false - installer.options[:install_as_default] = true - installer.gem_dir = @spec.gem_dir - - use_ui @ui do - installer.install - end - - assert_directory_exists File.join(@spec.gem_dir, "bin") - installed_exec = File.join @spec.gem_dir, "bin", "executable" - assert_path_exist installed_exec - - assert_directory_exists File.join(Gem.default_dir, "specifications") - assert_directory_exists File.join(Gem.default_dir, "specifications", "default") - - default_spec = eval File.read File.join(Gem.default_dir, "specifications", "default", "a-2.gemspec") - assert_equal Gem::Version.new("2"), default_spec.version - assert_equal ["bin/executable"], default_spec.files - - assert_directory_exists util_inst_bindir - - installed_exec = File.join util_inst_bindir, "executable" - assert_path_exist installed_exec - - wrapper = File.read installed_exec - - if symlink_supported? - refute_match(/generated by RubyGems/, wrapper) - else # when symlink not supported, it warns and fallbacks back to installing wrapper - assert_match(/Unable to use symlinks, installing wrapper/, @ui.error) - assert_match(/generated by RubyGems/, wrapper) - end - end - - def test_default_gem_with_wrappers - installer = setup_base_installer - - installer.wrappers = true - installer.options[:install_as_default] = true - installer.gem_dir = @spec.gem_dir - - use_ui @ui do - installer.install - end - - assert_directory_exists util_inst_bindir - - installed_exec = File.join util_inst_bindir, "executable" - assert_path_exist installed_exec - - wrapper = File.read installed_exec - assert_match(/generated by RubyGems/, wrapper) - end - - def test_default_gem_with_exe_as_bindir - @spec = quick_gem "c" do |spec| - util_make_exec spec, "#!/usr/bin/ruby", "exe" - end - - util_build_gem @spec - - @spec.cache_file - - installer = util_installer @spec, @gemhome - - installer.options[:install_as_default] = true - installer.gem_dir = @spec.gem_dir - - use_ui @ui do - installer.install - end - - assert_directory_exists File.join(@spec.gem_dir, "exe") - installed_exec = File.join @spec.gem_dir, "exe", "executable" - assert_path_exist installed_exec - - assert_directory_exists File.join(Gem.default_dir, "specifications") - assert_directory_exists File.join(Gem.default_dir, "specifications", "default") - - default_spec = eval File.read File.join(Gem.default_dir, "specifications", "default", "c-2.gemspec") - assert_equal Gem::Version.new("2"), default_spec.version - assert_equal ["exe/executable"], default_spec.files - end - - def test_default_gem_to_specific_install_dir - @gem = setup_base_gem - installer = util_installer @spec, "#{@gemhome}2" - installer.options[:install_as_default] = true - - use_ui @ui do - installer.install - end - - assert_directory_exists File.join("#{@gemhome}2", "specifications") - assert_directory_exists File.join("#{@gemhome}2", "specifications", "default") - - default_spec = eval File.read File.join("#{@gemhome}2", "specifications", "default", "a-2.gemspec") - assert_equal Gem::Version.new("2"), default_spec.version - assert_equal ["bin/executable"], default_spec.files - end - def test_package_attribute gem = quick_gem "c" do |spec| util_make_exec spec, "#!/usr/bin/ruby", "exe" From 81dbd42abf50ac2d31f0f37a0ce8e9069eff00ec Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 18 Apr 2024 15:59:19 +0900 Subject: [PATCH 066/295] Added install_default_gem method for testing --- test/rubygems/helper.rb | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/test/rubygems/helper.rb b/test/rubygems/helper.rb index ecd92b0a572e..53bed0b4151b 100644 --- a/test/rubygems/helper.rb +++ b/test/rubygems/helper.rb @@ -60,6 +60,44 @@ def self.specific_extra_args_hash=(value) end end +class Gem::Installer + # Copy from Gem::Installer#install with install_as_default option from old version + def install_default_gem + pre_install_checks + + run_pre_install_hooks + + spec.loaded_from = default_spec_file + + FileUtils.rm_rf gem_dir + FileUtils.rm_rf spec.extension_dir + + dir_mode = options[:dir_mode] + FileUtils.mkdir_p gem_dir, mode: dir_mode && 0o755 + + extract_bin + write_default_spec + + generate_bin + generate_plugins + + File.chmod(dir_mode, gem_dir) if dir_mode + + say spec.post_install_message if options[:post_install_message] && !spec.post_install_message.nil? + + Gem::Specification.add_spec(spec) + + load_plugin + + run_post_install_hooks + + spec + rescue Errno::EACCES => e + # Permission denied - /path/to/foo + raise Gem::FilePermissionError, e.message.split(" - ").last + end +end + ## # RubyGemTestCase provides a variety of methods for testing rubygems and # gem-related behavior in a sandbox. Through RubyGemTestCase you can install @@ -812,7 +850,7 @@ def install_specs(*specs) def install_default_gems(*specs) specs.each do |spec| installer = Gem::Installer.for_spec(spec) - installer.install + installer.install_default_gem Gem.register_default_spec(spec) end end From 6fbbde48e2e4627f92ad429187d3d329d3c5e221 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 18 Apr 2024 16:29:10 +0900 Subject: [PATCH 067/295] Removed default bundler spec from specification directory --- lib/rubygems/commands/setup_command.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/rubygems/commands/setup_command.rb b/lib/rubygems/commands/setup_command.rb index 2b9c522a6b6a..8fcece5d5ce2 100644 --- a/lib/rubygems/commands/setup_command.rb +++ b/lib/rubygems/commands/setup_command.rb @@ -393,7 +393,7 @@ def install_default_bundler_gem(bin_dir) Dir.chdir("bundler") do built_gem = Gem::Package.build(new_bundler_spec) begin - Gem::Installer.at( + installer = Gem::Installer.at( built_gem, env_shebang: options[:env_shebang], format_executable: options[:format_executable], @@ -401,7 +401,10 @@ def install_default_bundler_gem(bin_dir) bin_dir: bin_dir, install_dir: default_dir, wrappers: true - ).install + ) + installer.install + File.delete installer.spec_file + installer.write_default_spec ensure FileUtils.rm_f built_gem end From f6d557ae91fe2d7af4b7d72d7be889ce715beab3 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 18 Apr 2024 16:29:25 +0900 Subject: [PATCH 068/295] rake update_manifest --- Manifest.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/Manifest.txt b/Manifest.txt index 33ccda80e924..463a0b486b47 100644 --- a/Manifest.txt +++ b/Manifest.txt @@ -428,7 +428,6 @@ lib/rubygems/gemcutter_utilities/webauthn_listener.rb lib/rubygems/gemcutter_utilities/webauthn_listener/response.rb lib/rubygems/gemcutter_utilities/webauthn_poller.rb lib/rubygems/gemspec_helpers.rb -lib/rubygems/install_default_message.rb lib/rubygems/install_message.rb lib/rubygems/install_update_options.rb lib/rubygems/installer.rb From e9bd59699c7d0ec160eedddc27a41133147b60d3 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 18 Apr 2024 17:40:29 +0900 Subject: [PATCH 069/295] Introduce default_spec_dir when it's not provided --- lib/rubygems/installer.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index 46c4844ab961..52a352162e89 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -398,12 +398,18 @@ def spec_file File.join gem_home, "specifications", "#{spec.full_name}.gemspec" end + def default_spec_dir + dir = File.join(gem_home, "specifications", "default") + FileUtils.mkdir_p dir + dir + end + ## # The location of the default spec file for default gems. # def default_spec_file - File.join gem_home, "specifications", "default", "#{spec.full_name}.gemspec" + File.join default_spec_dir, "#{spec.full_name}.gemspec" end ## From c3cc38c72cd0b670a061f772a37ed2600cd0f524 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 18 Apr 2024 17:40:49 +0900 Subject: [PATCH 070/295] Simulate default gems manually --- bundler/spec/support/helpers.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/bundler/spec/support/helpers.rb b/bundler/spec/support/helpers.rb index 17c38c77607d..719a6e65d262 100644 --- a/bundler/spec/support/helpers.rb +++ b/bundler/spec/support/helpers.rb @@ -333,9 +333,20 @@ def install_gem(path, install_dir, default = false) raise "OMG `#{path}` does not exist!" unless File.exist?(path) args = "--no-document --ignore-dependencies --verbose --local --install-dir #{install_dir}" - args += " --default" if default gem_command "install #{args} '#{path}'" + + if default + gem = Pathname.new(path).basename.to_s.match(/(.*)\.gem/)[1] + + # Revert Gem::Installer#write_spec and apply Gem::Installer#write_default_spec + FileUtils.mkdir_p File.join(install_dir, "specifications", "default") + File.rename File.join(install_dir, "specifications", gem + ".gemspec"), + File.join(install_dir, "specifications", "default", gem + ".gemspec") + + # Revert Gem::Installer#write_cache_file + File.delete File.join(install_dir, "cache", gem + ".gem") + end end def with_built_bundler(version = nil, opts = {}, &block) From 9769331d92e63420a22c6d0a2881ed8a54abde00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 15:01:23 +0000 Subject: [PATCH 071/295] Bump the artifacts group with 2 updates Bumps the artifacts group with 2 updates: [actions/upload-artifact](https://github.com/actions/upload-artifact) and [actions/download-artifact](https://github.com/actions/download-artifact). Updates `actions/upload-artifact` from 4.6.2 to 5.0.0 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/ea165f8d65b6e75b540449e92b4886f43607fa02...330a01c490aca151604b8cf639adc76d48f6c5d4) Updates `actions/download-artifact` from 5.0.0 to 6.0.0 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/634f93cb2916e3fdff6788551b99b062d0335ce0...018cc2cf5baa6db3ef3c5f8a56943fffe632ef53) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: artifacts - dependency-name: actions/download-artifact dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: artifacts ... Signed-off-by: dependabot[bot] --- .github/workflows/realworld-bundler.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/realworld-bundler.yml b/.github/workflows/realworld-bundler.yml index 073466f070a9..44273116037e 100644 --- a/.github/workflows/realworld-bundler.yml +++ b/.github/workflows/realworld-bundler.yml @@ -50,7 +50,7 @@ jobs: - name: Run Test run: bin/rake spec:realworld - name: Upload used cassettes as artifact - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: cassettes-bundler-${{ matrix.os.value }}-${{ matrix.ruby.name }} path: ./bundler/spec/support/artifice/used_cassettes.txt @@ -100,7 +100,7 @@ jobs: - name: Run Test run: bin/rake spec:realworld - name: Upload used cassettes as artifact - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: cassettes-system-rubygems-bundler-${{ matrix.ruby.name }} path: ./bundler/spec/support/artifice/used_cassettes.txt @@ -122,7 +122,7 @@ jobs: - name: Prepare dependencies run: bin/rake setup - name: Download all used cassettes as artifacts - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: path: ./bundler/spec/support/artifice/used_vcr_cassettes - name: Check unused cassettes From 13c7c030cb90d57e0f67e59fedd2180accf20e15 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 15:01:32 +0000 Subject: [PATCH 072/295] Bump github/codeql-action from 3.30.6 to 4.31.2 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.6 to 4.31.2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/64d10c13136e1c5bce3e5fbde8d4906eeaafc885...0499de31b99561a6d14a36a5f662c2a54f91beee) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.2 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- .github/workflows/ubuntu-lint.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 08faf85213da..d914cdc63b44 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 + uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 with: sarif_file: results.sarif diff --git a/.github/workflows/ubuntu-lint.yml b/.github/workflows/ubuntu-lint.yml index 0c19a075d4d8..cb8e15e9210e 100644 --- a/.github/workflows/ubuntu-lint.yml +++ b/.github/workflows/ubuntu-lint.yml @@ -52,7 +52,7 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 + uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 if: matrix.command == 'zizmor' with: sarif_file: results.sarif From 50d0dc6a8df44b437edbc2183dec71d4c1c23593 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 15:01:36 +0000 Subject: [PATCH 073/295] Bump astral-sh/setup-uv from 6.8.0 to 7.1.2 Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 6.8.0 to 7.1.2. - [Release notes](https://github.com/astral-sh/setup-uv/releases) - [Commits](https://github.com/astral-sh/setup-uv/compare/d0cc045d04ccac9d8b7881df0226f9e82c39688e...85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41) --- updated-dependencies: - dependency-name: astral-sh/setup-uv dependency-version: 7.1.2 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ubuntu-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ubuntu-lint.yml b/.github/workflows/ubuntu-lint.yml index 0c19a075d4d8..ef9cdd5da7cf 100644 --- a/.github/workflows/ubuntu-lint.yml +++ b/.github/workflows/ubuntu-lint.yml @@ -32,7 +32,7 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0 + - uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2 with: python-version: "3.13" activate-environment: true From bfdb8ca3f558c349609a4960cd307f5769fca25f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 15:01:55 +0000 Subject: [PATCH 074/295] Bump ruby/setup-ruby from 1.263.0 to 1.267.0 Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.263.0 to 1.267.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/0481980f17b760ef6bca5e8c55809102a0af1e5a...d5126b9b3579e429dd52e51e68624dda2e05be25) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.267.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/bundler.yml | 2 +- .github/workflows/daily-bundler.yml | 2 +- .github/workflows/daily-rubygems.yml | 2 +- .github/workflows/install-rubygems.yml | 10 +++++----- .github/workflows/realworld-bundler.yml | 8 ++++---- .github/workflows/rubygems.yml | 2 +- .github/workflows/system-rubygems-bundler.yml | 2 +- .github/workflows/truffleruby-bundler.yml | 2 +- .github/workflows/ubuntu-lint.yml | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/bundler.yml b/.github/workflows/bundler.yml index 974d2d89a56e..1da5b754d6e8 100644 --- a/.github/workflows/bundler.yml +++ b/.github/workflows/bundler.yml @@ -53,7 +53,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/daily-bundler.yml b/.github/workflows/daily-bundler.yml index 1a4fb298dc67..d35c37105fba 100644 --- a/.github/workflows/daily-bundler.yml +++ b/.github/workflows/daily-bundler.yml @@ -25,7 +25,7 @@ jobs: persist-credentials: false - name: Set up Ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ruby-head bundler: none diff --git a/.github/workflows/daily-rubygems.yml b/.github/workflows/daily-rubygems.yml index e047e8a6f230..7336225f03dc 100644 --- a/.github/workflows/daily-rubygems.yml +++ b/.github/workflows/daily-rubygems.yml @@ -28,7 +28,7 @@ jobs: persist-credentials: false - name: Set up Ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ${{ matrix.ruby }} bundler: none diff --git a/.github/workflows/install-rubygems.yml b/.github/workflows/install-rubygems.yml index afbda38c4872..94192860b20a 100644 --- a/.github/workflows/install-rubygems.yml +++ b/.github/workflows/install-rubygems.yml @@ -35,7 +35,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -128,7 +128,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -170,7 +170,7 @@ jobs: with: persist-credentials: false - name: Setup original ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: 3.2 bundler: none @@ -191,7 +191,7 @@ jobs: GEM_HOME: bar GEM_PATH: bar - name: Setup final ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: 3.3 bundler: none @@ -220,7 +220,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/realworld-bundler.yml b/.github/workflows/realworld-bundler.yml index 073466f070a9..39b39299a4ca 100644 --- a/.github/workflows/realworld-bundler.yml +++ b/.github/workflows/realworld-bundler.yml @@ -41,7 +41,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -64,7 +64,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: 3.4.5 bundler: none @@ -91,7 +91,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -115,7 +115,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: 3.4.5 bundler: none diff --git a/.github/workflows/rubygems.yml b/.github/workflows/rubygems.yml index 2ec11777c7bb..dbcc86ee05ae 100644 --- a/.github/workflows/rubygems.yml +++ b/.github/workflows/rubygems.yml @@ -43,7 +43,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/system-rubygems-bundler.yml b/.github/workflows/system-rubygems-bundler.yml index ea9e67473238..bab1f9fe0969 100644 --- a/.github/workflows/system-rubygems-bundler.yml +++ b/.github/workflows/system-rubygems-bundler.yml @@ -37,7 +37,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/truffleruby-bundler.yml b/.github/workflows/truffleruby-bundler.yml index 1cdf1239f2cc..a085f6f171d7 100644 --- a/.github/workflows/truffleruby-bundler.yml +++ b/.github/workflows/truffleruby-bundler.yml @@ -28,7 +28,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: truffleruby-24.2.1 bundler: none diff --git a/.github/workflows/ubuntu-lint.yml b/.github/workflows/ubuntu-lint.yml index 0c19a075d4d8..c12f54175841 100644 --- a/.github/workflows/ubuntu-lint.yml +++ b/.github/workflows/ubuntu-lint.yml @@ -75,7 +75,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none From 8764bf3688ec38ed5743287ed10eaa734514de46 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Nov 2025 15:14:52 +0000 Subject: [PATCH 075/295] Bump zizmor from 1.14.2 to 1.16.1 in /.github/workflows Bumps [zizmor](https://github.com/zizmorcore/zizmor) from 1.14.2 to 1.16.1. - [Release notes](https://github.com/zizmorcore/zizmor/releases) - [Changelog](https://github.com/zizmorcore/zizmor/blob/main/docs/release-notes.md) - [Commits](https://github.com/zizmorcore/zizmor/compare/v1.14.2...v1.16.1) --- updated-dependencies: - dependency-name: zizmor dependency-version: 1.16.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/lint/requirements.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint/requirements.in b/.github/workflows/lint/requirements.in index 97f78f83879b..18d0ba693a88 100644 --- a/.github/workflows/lint/requirements.in +++ b/.github/workflows/lint/requirements.in @@ -1,3 +1,3 @@ codespell==2.4.1 yamllint==1.37.1 -zizmor==1.14.2 +zizmor==1.16.1 From 0ff4790f4cb8d895012de055d01682688acf7727 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Fri, 31 Oct 2025 14:49:24 -0700 Subject: [PATCH 076/295] Fix constants in TAR to be frozen I would like to use the tar implementation inside a Ractor, but two of the constants are not frozen. This patch freezes the constants so we can use it in a Ractor. --- lib/rubygems/package/tar_header.rb | 8 ++++---- test/rubygems/test_gem_package_tar_header.rb | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/rubygems/package/tar_header.rb b/lib/rubygems/package/tar_header.rb index 0ebcbd789d40..dd20d65080ff 100644 --- a/lib/rubygems/package/tar_header.rb +++ b/lib/rubygems/package/tar_header.rb @@ -56,7 +56,7 @@ class Gem::Package::TarHeader ## # Pack format for a tar header - PACK_FORMAT = "a100" + # name + PACK_FORMAT = ("a100" + # name "a8" + # mode "a8" + # uid "a8" + # gid @@ -71,12 +71,12 @@ class Gem::Package::TarHeader "a32" + # gname "a8" + # devmajor "a8" + # devminor - "a155" # prefix + "a155").freeze # prefix ## # Unpack format for a tar header - UNPACK_FORMAT = "A100" + # name + UNPACK_FORMAT = ("A100" + # name "A8" + # mode "A8" + # uid "A8" + # gid @@ -91,7 +91,7 @@ class Gem::Package::TarHeader "A32" + # gname "A8" + # devmajor "A8" + # devminor - "A155" # prefix + "A155").freeze # prefix attr_reader(*FIELDS) diff --git a/test/rubygems/test_gem_package_tar_header.rb b/test/rubygems/test_gem_package_tar_header.rb index a3f95bb7704f..34f92967e990 100644 --- a/test/rubygems/test_gem_package_tar_header.rb +++ b/test/rubygems/test_gem_package_tar_header.rb @@ -26,6 +26,25 @@ def setup @tar_header = Gem::Package::TarHeader.new header end + def test_decode_in_ractor + new_header = Ractor.new(@tar_header.to_s) do |str| + Gem::Package::TarHeader.from StringIO.new str + end.value + + assert_headers_equal @tar_header, new_header + end if defined?(Ractor) && Ractor.instance_methods.include?(:value) + + def test_encode_in_ractor + header_bytes = @tar_header.to_s + + new_header = Ractor.new(header_bytes) do |str| + header = Gem::Package::TarHeader.from StringIO.new str + header.to_s + end.value + + assert_headers_equal header_bytes, new_header + end if defined?(Ractor) && Ractor.instance_methods.include?(:value) + def test_self_from io = TempIO.new @tar_header.to_s From beba8dd065a241d08a0cfe3064c408173e19dadc Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Sun, 2 Nov 2025 21:47:42 -0800 Subject: [PATCH 077/295] Remove open-ended and prerelease dependency warnings when building gems In general, rubygems should provide mechanism and not policy. Pessimistic versioning is not universally better, and in many cases, it can cause more problems than it solves. Rubygems should not be warning against open-ended versioning when building gems. The majority of the default gems with dependencies do not use pessimistic versioning, which indicates that Ruby itself recognizes that open-ended versioning is generally better. In some cases, depending on a prerelease gem is the only choice other than not releasing a gem. If you are building an extension gem for a feature in a prerelease version of another gem, then depending on the prerelease version is the only way to ensure a compatible dependency is installed. --- lib/rubygems/specification_policy.rb | 36 ------------------------- test/rubygems/test_gem_specification.rb | 22 +-------------- 2 files changed, 1 insertion(+), 57 deletions(-) diff --git a/lib/rubygems/specification_policy.rb b/lib/rubygems/specification_policy.rb index d79ee7df9252..e5008a24dbf4 100644 --- a/lib/rubygems/specification_policy.rb +++ b/lib/rubygems/specification_policy.rb @@ -190,9 +190,6 @@ def validate_duplicate_dependencies # :nodoc: ## # Checks that the gem does not depend on itself. - # Checks that dependencies use requirements as we recommend. Warnings are - # issued when dependencies are open-ended or overly strict for semantic - # versioning. def validate_dependencies # :nodoc: warning_messages = [] @@ -200,39 +197,6 @@ def validate_dependencies # :nodoc: if dep.name == @specification.name # warn on self reference warning_messages << "Self referencing dependency is unnecessary and strongly discouraged." end - - prerelease_dep = dep.requirements_list.any? do |req| - Gem::Requirement.new(req).prerelease? - end - - warning_messages << "prerelease dependency on #{dep} is not recommended" if - prerelease_dep && !@specification.version.prerelease? - - open_ended = dep.requirement.requirements.all? do |op, version| - !version.prerelease? && [">", ">="].include?(op) - end - - next unless open_ended - op, dep_version = dep.requirement.requirements.first - - segments = dep_version.segments - - base = segments.first 2 - - recommendation = if [">", ">="].include?(op) && segments == [0] - " use a bounded requirement, such as \"~> x.y\"" - else - bugfix = if op == ">" - ", \"> #{dep_version}\"" - elsif op == ">=" && base != segments - ", \">= #{dep_version}\"" - end - - " if #{dep.name} is semantically versioned, use:\n" \ - " add_#{dep.type}_dependency \"#{dep.name}\", \"~> #{base.join "."}\"#{bugfix}" - end - - warning_messages << ["open-ended dependency on #{dep} is not recommended", recommendation].join("\n") + "\n" end if warning_messages.any? warning_messages.each {|warning_message| warning warning_message } diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index af351f4d2e1f..3a325c439c1c 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -2671,27 +2671,7 @@ def test_validate_dependencies @a1.validate end - expected = <<-EXPECTED -#{w}: prerelease dependency on b (>= 1.0.rc1) is not recommended -#{w}: prerelease dependency on c (>= 2.0.rc2, development) is not recommended -#{w}: open-ended dependency on i (>= 1.2) is not recommended - if i is semantically versioned, use: - add_runtime_dependency "i", "~> 1.2" -#{w}: open-ended dependency on j (>= 1.2.3) is not recommended - if j is semantically versioned, use: - add_runtime_dependency "j", "~> 1.2", ">= 1.2.3" -#{w}: open-ended dependency on k (> 1.2) is not recommended - if k is semantically versioned, use: - add_runtime_dependency "k", "~> 1.2", "> 1.2" -#{w}: open-ended dependency on l (> 1.2.3) is not recommended - if l is semantically versioned, use: - add_runtime_dependency "l", "~> 1.2", "> 1.2.3" -#{w}: open-ended dependency on o (>= 0) is not recommended - use a bounded requirement, such as "~> x.y" -#{w}: See https://guides.rubygems.org/specification-reference/ for help - EXPECTED - - assert_equal expected, @ui.error, "warning" + assert_equal "", @ui.error, "warning" end end From bc6316eb43846438c5f31fd17778ed0c45c35048 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 5 Nov 2025 12:34:07 +0900 Subject: [PATCH 078/295] Bump up gemspec version same as RubyGems version --- rubygems-update.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rubygems-update.gemspec b/rubygems-update.gemspec index 452724451d79..e5eaed40e3df 100644 --- a/rubygems-update.gemspec +++ b/rubygems-update.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |s| s.name = "rubygems-update" - s.version = "3.8.0.dev" + s.version = "4.0.0.dev" s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"] s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"] From fb352e91766daf72ec5d4b17a7385cef687d2288 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Mon, 3 Nov 2025 12:24:22 -0800 Subject: [PATCH 079/295] Make verification methods private I would like to start making some of the methods in Gem::Package private so that we can refactor them better. Right now we have many methods that are public, and since they are public we can't refactor them. Historically, I think "private" methods have just been tagged with :nodoc:, but I would like to be more strict about our APIs --- lib/rubygems/package.rb | 2 + test/rubygems/test_gem_package.rb | 74 ++++++------------------------- 2 files changed, 16 insertions(+), 60 deletions(-) diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb index b56d68cc45bb..6b21ff1b9533 100644 --- a/lib/rubygems/package.rb +++ b/lib/rubygems/package.rb @@ -642,6 +642,8 @@ def verify raise Gem::Package::FormatError.new e.message, @gem end + private + ## # Verifies the +checksums+ against the +digests+. This check is not # cryptographically secure. Missing checksums are ignored. diff --git a/test/rubygems/test_gem_package.rb b/test/rubygems/test_gem_package.rb index 8a9cc8558022..34fa65b1e030 100644 --- a/test/rubygems/test_gem_package.rb +++ b/test/rubygems/test_gem_package.rb @@ -1247,71 +1247,25 @@ def test_verify_truncate # end #verify tests - def test_verify_entry - entry = Object.new - def entry.full_name - raise ArgumentError, "whatever" - end - - package = Gem::Package.new @gem - - _, err = use_ui @ui do - e = nil - - out_err = capture_output do - e = assert_raise ArgumentError do - package.verify_entry entry + def test_missing_metadata + invalid_metadata = ["metadataxgz", "foobar\nmetadata", "metadata\nfoobar"] + invalid_metadata.each do |fname| + tar = StringIO.new + + Gem::Package::TarWriter.new(tar) do |gem_tar| + gem_tar.add_file fname, 0o444 do |io| + gz_io = Zlib::GzipWriter.new io, Zlib::BEST_COMPRESSION + gz_io.write "bad metadata" + gz_io.close end end - assert_equal "whatever", e.message - assert_equal "full_name", e.backtrace_locations.first.label - - out_err - end - - assert_equal "Exception while verifying #{@gem}\n", err - - valid_metadata = ["metadata", "metadata.gz"] - valid_metadata.each do |vm| - $spec_loaded = false - $good_name = vm - - entry = Object.new - def entry.full_name - $good_name - end + tar.rewind - package = Gem::Package.new(@gem) - package.instance_variable_set(:@files, []) - def package.load_spec(entry) - $spec_loaded = true - end - - package.verify_entry(entry) - - assert $spec_loaded - end - - invalid_metadata = ["metadataxgz", "foobar\nmetadata", "metadata\nfoobar"] - invalid_metadata.each do |vm| - $spec_loaded = false - $bad_name = vm - - entry = Object.new - def entry.full_name - $bad_name - end - - package = Gem::Package.new(@gem) - package.instance_variable_set(:@files, []) - def package.load_spec(entry) - $spec_loaded = true + package = Gem::Package.new(Gem::Package::IOSource.new(tar)) + assert_raise Gem::Package::FormatError do + package.verify end - - package.verify_entry(entry) - - refute $spec_loaded end end From 79ba4a537d565b4170545d962e1856070ba84061 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 7 Nov 2025 07:12:25 +0900 Subject: [PATCH 080/295] Replaced pathname auto-loading in bootstrap of bundler --- bundler/lib/bundler.rb | 2 +- bundler/lib/bundler/shared_helpers.rb | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/bundler/lib/bundler.rb b/bundler/lib/bundler.rb index e76dfde122d7..51ea3beeb0f7 100644 --- a/bundler/lib/bundler.rb +++ b/bundler/lib/bundler.rb @@ -2,7 +2,7 @@ require_relative "bundler/rubygems_ext" require_relative "bundler/vendored_fileutils" -require "pathname" +autoload :Pathname, "pathname" unless defined?(Pathname) require "rbconfig" require_relative "bundler/errors" diff --git a/bundler/lib/bundler/shared_helpers.rb b/bundler/lib/bundler/shared_helpers.rb index 987a68afd753..a03f1f83f012 100644 --- a/bundler/lib/bundler/shared_helpers.rb +++ b/bundler/lib/bundler/shared_helpers.rb @@ -4,8 +4,6 @@ require_relative "rubygems_integration" require_relative "current_ruby" -autoload :Pathname, "pathname" - module Bundler autoload :WINDOWS, File.expand_path("constants", __dir__) autoload :FREEBSD, File.expand_path("constants", __dir__) From 6e965b7872b579cced5c3c7263f975f884b131ab Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 7 Nov 2025 07:14:31 +0900 Subject: [PATCH 081/295] Removed unnecessary loading of pathname --- bundler/lib/bundler/cli/gem.rb | 2 -- bundler/lib/bundler/compact_index_client.rb | 1 - bundler/lib/bundler/vendor/thor/lib/thor/runner.rb | 2 +- bundler/spec/support/path.rb | 1 - 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/bundler/lib/bundler/cli/gem.rb b/bundler/lib/bundler/cli/gem.rb index 23b29bf36bee..20d678d66d7e 100644 --- a/bundler/lib/bundler/cli/gem.rb +++ b/bundler/lib/bundler/cli/gem.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require "pathname" - module Bundler class CLI Bundler.require_thor_actions diff --git a/bundler/lib/bundler/compact_index_client.rb b/bundler/lib/bundler/compact_index_client.rb index 37e2ccced8e1..6865e30dbcaa 100644 --- a/bundler/lib/bundler/compact_index_client.rb +++ b/bundler/lib/bundler/compact_index_client.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -require "pathname" require "set" module Bundler diff --git a/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb b/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb index 95f8b16e3189..f0ce6df96ce9 100644 --- a/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +++ b/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb @@ -2,7 +2,7 @@ require_relative "group" require "digest/sha2" -require "pathname" +require "pathname" unless defined?(Pathname) class Bundler::Thor::Runner < Bundler::Thor #:nodoc: map "-T" => :list, "-i" => :install, "-u" => :update, "-v" => :version diff --git a/bundler/spec/support/path.rb b/bundler/spec/support/path.rb index cc750f55d81f..bbbf5cc9086a 100644 --- a/bundler/spec/support/path.rb +++ b/bundler/spec/support/path.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -require "pathname" require "rbconfig" require_relative "env" From 33c7a9a5653c7eaa860c1c9773fc6213697cd751 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 7 Nov 2025 07:23:07 +0900 Subject: [PATCH 082/295] Replace Pathname#rmtree to FileUtils.rm_rf directly --- bundler/spec/cache/gems_spec.rb | 10 +++++----- bundler/spec/install/gemfile/path_spec.rb | 2 +- bundler/spec/install/gems/compact_index_spec.rb | 2 +- bundler/spec/install/gems/dependency_api_spec.rb | 2 +- bundler/spec/install/path_spec.rb | 4 ++-- bundler/spec/runtime/load_spec.rb | 2 +- bundler/spec/support/builders.rb | 2 +- bundler/spec/update/git_spec.rb | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/bundler/spec/cache/gems_spec.rb b/bundler/spec/cache/gems_spec.rb index b23d475a5f63..c9b85556e1ef 100644 --- a/bundler/spec/cache/gems_spec.rb +++ b/bundler/spec/cache/gems_spec.rb @@ -226,7 +226,7 @@ it "re-caches during install" do setup_main_repo - cached_gem("myrack-1.0.0").rmtree + FileUtils.rm_rf cached_gem("myrack-1.0.0") bundle :install expect(out).to include("Updating files in vendor/cache") expect(cached_gem("myrack-1.0.0")).to exist @@ -307,7 +307,7 @@ it "doesn't remove gems cached gems that don't match their remote counterparts, but also refuses to install and prints an error" do setup_main_repo cached_myrack = cached_gem("myrack-1.0.0") - cached_myrack.rmtree + FileUtils.rm_rf cached_myrack build_gem "myrack", "1.0.0", path: cached_myrack.parent, rubygems_version: "1.3.2" @@ -338,7 +338,7 @@ it "raises an error when a cached gem is altered and produces a different checksum than the remote gem" do setup_main_repo - cached_gem("myrack-1.0.0").rmtree + FileUtils.rm_rf cached_gem("myrack-1.0.0") build_gem "myrack", "1.0.0", path: bundled_app("vendor/cache") checksums = checksums_section do |c| @@ -362,14 +362,14 @@ expect(err).to include("1. remove the gem at #{cached_gem("myrack-1.0.0")}") expect(cached_gem("myrack-1.0.0")).to exist - cached_gem("myrack-1.0.0").rmtree + FileUtils.rm_rf cached_gem("myrack-1.0.0") bundle :install expect(cached_gem("myrack-1.0.0")).to exist end it "installs a modified gem with a non-matching checksum when the API implementation does not provide checksums" do setup_main_repo - cached_gem("myrack-1.0.0").rmtree + FileUtils.rm_rf cached_gem("myrack-1.0.0") build_gem "myrack", "1.0.0", path: bundled_app("vendor/cache") pristine_system_gems diff --git a/bundler/spec/install/gemfile/path_spec.rb b/bundler/spec/install/gemfile/path_spec.rb index 31d79ed41ca5..b55fe3dbbf1e 100644 --- a/bundler/spec/install/gemfile/path_spec.rb +++ b/bundler/spec/install/gemfile/path_spec.rb @@ -454,7 +454,7 @@ it "handles directories in bin/" do build_lib "foo" - lib_path("foo-1.0").join("foo.gemspec").rmtree + FileUtils.rm_rf lib_path("foo-1.0").join("foo.gemspec") lib_path("foo-1.0").join("bin/performance").mkpath install_gemfile <<-G diff --git a/bundler/spec/install/gems/compact_index_spec.rb b/bundler/spec/install/gems/compact_index_spec.rb index 64c59d4826f3..32a42aa93a48 100644 --- a/bundler/spec/install/gems/compact_index_spec.rb +++ b/bundler/spec/install/gems/compact_index_spec.rb @@ -698,7 +698,7 @@ def start bundle :install, artifice: "compact_index_forbidden" ensure - home(".gemrc").rmtree + FileUtils.rm_rf home(".gemrc") end end end diff --git a/bundler/spec/install/gems/dependency_api_spec.rb b/bundler/spec/install/gems/dependency_api_spec.rb index 1650df3dfb6a..ac986a0c67a2 100644 --- a/bundler/spec/install/gems/dependency_api_spec.rb +++ b/bundler/spec/install/gems/dependency_api_spec.rb @@ -649,7 +649,7 @@ def start bundle "install", artifice: "endpoint_marshal_fail" ensure - home(".gemrc").rmtree + FileUtils.rm_rf home(".gemrc") end end end diff --git a/bundler/spec/install/path_spec.rb b/bundler/spec/install/path_spec.rb index beea1e36dbc7..8c0793642baf 100644 --- a/bundler/spec/install/path_spec.rb +++ b/bundler/spec/install/path_spec.rb @@ -35,7 +35,7 @@ bundle :install, dir: dir expect(out).to include("installed into `./vendor/bundle`") - dir.rmtree + FileUtils.rm_rf dir end it "prints a message to let the user know where gems where installed" do @@ -181,7 +181,7 @@ def set_bundle_path(type, location) expect(vendored_gems("extensions")).to be_directory expect(the_bundle).to include_gems "very_simple_binary 1.0", source: "remote1" - vendored_gems("extensions").rmtree + FileUtils.rm_rf vendored_gems("extensions") run "require 'very_simple_binary_c'", raise_on_error: false expect(err).to include("Bundler::GemNotFound") diff --git a/bundler/spec/runtime/load_spec.rb b/bundler/spec/runtime/load_spec.rb index 15f3d0eb5bcd..472cde87c542 100644 --- a/bundler/spec/runtime/load_spec.rb +++ b/bundler/spec/runtime/load_spec.rb @@ -68,7 +68,7 @@ begin expect { Bundler.load }.to raise_error(Bundler::GemfileNotFound) ensure - bundler_gemfile.rmtree if @remove_bundler_gemfile + FileUtils.rm_rf bundler_gemfile if @remove_bundler_gemfile end end end diff --git a/bundler/spec/support/builders.rb b/bundler/spec/support/builders.rb index 50fedd38f16a..3ebb7e386490 100644 --- a/bundler/spec/support/builders.rb +++ b/bundler/spec/support/builders.rb @@ -463,7 +463,7 @@ def _build(options = {}) FileUtils.mv bundler_path, options[:path] end ensure - build_path.rmtree + FileUtils.rm_rf build_path end end diff --git a/bundler/spec/update/git_spec.rb b/bundler/spec/update/git_spec.rb index 2cb0abe02fb5..aaa039211e2b 100644 --- a/bundler/spec/update/git_spec.rb +++ b/bundler/spec/update/git_spec.rb @@ -199,7 +199,7 @@ gem "foo", :git => "#{lib_path("foo-1.0")}" G - lib_path("foo-1.0").join(".git").rmtree + FileUtils.rm_rf lib_path("foo-1.0").join(".git") bundle :update, all: true, raise_on_error: false expect(err).to include(lib_path("foo-1.0").to_s). From a35e4c56aee026bd40ac5fbf47776ab3d773b1a5 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 7 Nov 2025 09:03:32 +0900 Subject: [PATCH 083/295] Added patch for thor-1.4.0 --- tool/automatiek/thor-v1.4.0.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tool/automatiek/thor-v1.4.0.patch b/tool/automatiek/thor-v1.4.0.patch index 95c525784c4d..6c4dc977ca64 100644 --- a/tool/automatiek/thor-v1.4.0.patch +++ b/tool/automatiek/thor-v1.4.0.patch @@ -1,3 +1,16 @@ +diff --git a/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb b/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +index 95f8b16e31..f0ce6df96c 100644 +--- a/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb ++++ b/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb +@@ -2,7 +2,7 @@ + require_relative "group" + + require "digest/sha2" +-require "pathname" ++require "pathname" unless defined?(Pathname) + + class Bundler::Thor::Runner < Bundler::Thor #:nodoc: + map "-T" => :list, "-i" => :install, "-u" => :update, "-v" => :version diff --git a/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb b/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb index 6a9176331..5d708fadc 100644 --- a/bundler/lib/bundler/vendor/thor/lib/thor/shell/color.rb From 89e95d0f15cca6110cb5a61fb2533943085868c1 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 7 Nov 2025 09:08:50 +0900 Subject: [PATCH 084/295] Restore pathname for rake dev:deps --- bundler/spec/support/path.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/bundler/spec/support/path.rb b/bundler/spec/support/path.rb index bbbf5cc9086a..0a534dd40e44 100644 --- a/bundler/spec/support/path.rb +++ b/bundler/spec/support/path.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require "pathname" unless defined?(Pathname) require "rbconfig" require_relative "env" From 6c161b253d2be9f84cdf49a3e71c8814c937ca47 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 7 Nov 2025 13:16:34 +0900 Subject: [PATCH 085/295] Use Dir.pwd instead of Pathname.pwd --- bundler/lib/bundler/cli/gem.rb | 4 ++-- bundler/lib/bundler/shared_helpers.rb | 2 +- bundler/lib/bundler/source/path.rb | 2 +- bundler/spec/bundler/shared_helpers_spec.rb | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bundler/lib/bundler/cli/gem.rb b/bundler/lib/bundler/cli/gem.rb index 20d678d66d7e..abfb095d469f 100644 --- a/bundler/lib/bundler/cli/gem.rb +++ b/bundler/lib/bundler/cli/gem.rb @@ -24,7 +24,7 @@ def initialize(options, gem_name, thor) thor.destination_root = nil @name = @gem_name - @target = SharedHelpers.pwd.join(gem_name) + @target = Pathname.new(SharedHelpers.pwd).join(gem_name) @extension = options[:ext] @@ -276,7 +276,7 @@ def run private def resolve_name(name) - SharedHelpers.pwd.join(name).basename.to_s + Pathname.new(SharedHelpers.pwd).join(name).basename.to_s end def ask_and_set(key, prompt, explanation) diff --git a/bundler/lib/bundler/shared_helpers.rb b/bundler/lib/bundler/shared_helpers.rb index a03f1f83f012..4c914eb1a447 100644 --- a/bundler/lib/bundler/shared_helpers.rb +++ b/bundler/lib/bundler/shared_helpers.rb @@ -55,7 +55,7 @@ def chdir(dir, &blk) def pwd Bundler.rubygems.ext_lock.synchronize do - Pathname.pwd + Dir.pwd end end diff --git a/bundler/lib/bundler/source/path.rb b/bundler/lib/bundler/source/path.rb index d258270fe09d..82e782ba257a 100644 --- a/bundler/lib/bundler/source/path.rb +++ b/bundler/lib/bundler/source/path.rb @@ -24,7 +24,7 @@ def initialize(options) @path = Pathname.new(options["path"]) expanded_path = expand(@path) @path = if @path.relative? - expanded_path.relative_path_from(root_path.expand_path) + expanded_path.relative_path_from(File.expand_path(root_path)) else expanded_path end diff --git a/bundler/spec/bundler/shared_helpers_spec.rb b/bundler/spec/bundler/shared_helpers_spec.rb index 0aacb93c16e2..c93c3e98149a 100644 --- a/bundler/spec/bundler/shared_helpers_spec.rb +++ b/bundler/spec/bundler/shared_helpers_spec.rb @@ -159,7 +159,7 @@ let(:pwd_stub) { nil } it "returns the current absolute path" do - expect(subject.pwd).to eq(source_root) + expect(subject.pwd).to eq(source_root.to_s) end end From 01012333870f6db176daffe8e50375dd7a32cf65 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 7 Nov 2025 17:57:55 +0900 Subject: [PATCH 086/295] Update Bundler::CurrentRuby::ALL_RUBY_VERSIONS --- bundler/lib/bundler/current_ruby.rb | 2 +- bundler/spec/bundler/current_ruby_spec.rb | 14 +++++++------- bundler/spec/bundler/dsl_spec.rb | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/bundler/lib/bundler/current_ruby.rb b/bundler/lib/bundler/current_ruby.rb index b350baa24fd5..abb7ca2195da 100644 --- a/bundler/lib/bundler/current_ruby.rb +++ b/bundler/lib/bundler/current_ruby.rb @@ -11,7 +11,7 @@ def self.current_ruby end class CurrentRuby - ALL_RUBY_VERSIONS = (18..27).to_a.concat((30..35).to_a).freeze + ALL_RUBY_VERSIONS = [*18..27, *30..34, *40].freeze KNOWN_MINOR_VERSIONS = ALL_RUBY_VERSIONS.map {|v| v.digits.reverse.join(".") }.freeze KNOWN_MAJOR_VERSIONS = ALL_RUBY_VERSIONS.map {|v| v.digits.last.to_s }.uniq.freeze PLATFORM_MAP = { diff --git a/bundler/spec/bundler/current_ruby_spec.rb b/bundler/spec/bundler/current_ruby_spec.rb index 83c42e73e1ef..aa19a4140765 100644 --- a/bundler/spec/bundler/current_ruby_spec.rb +++ b/bundler/spec/bundler/current_ruby_spec.rb @@ -22,7 +22,7 @@ ruby_32: Gem::Platform::RUBY, ruby_33: Gem::Platform::RUBY, ruby_34: Gem::Platform::RUBY, - ruby_35: Gem::Platform::RUBY, + ruby_40: Gem::Platform::RUBY, mri: Gem::Platform::RUBY, mri_18: Gem::Platform::RUBY, mri_19: Gem::Platform::RUBY, @@ -39,7 +39,7 @@ mri_32: Gem::Platform::RUBY, mri_33: Gem::Platform::RUBY, mri_34: Gem::Platform::RUBY, - mri_35: Gem::Platform::RUBY, + mri_40: Gem::Platform::RUBY, rbx: Gem::Platform::RUBY, truffleruby: Gem::Platform::RUBY, jruby: Gem::Platform::JAVA, @@ -61,7 +61,7 @@ windows_32: Gem::Platform::WINDOWS, windows_33: Gem::Platform::WINDOWS, windows_34: Gem::Platform::WINDOWS, - windows_35: Gem::Platform::WINDOWS } + windows_40: Gem::Platform::WINDOWS } end let(:deprecated) do @@ -81,7 +81,7 @@ mswin_32: Gem::Platform::MSWIN, mswin_33: Gem::Platform::MSWIN, mswin_34: Gem::Platform::MSWIN, - mswin_35: Gem::Platform::MSWIN, + mswin_40: Gem::Platform::MSWIN, mswin64: Gem::Platform::MSWIN64, mswin64_19: Gem::Platform::MSWIN64, mswin64_20: Gem::Platform::MSWIN64, @@ -97,7 +97,7 @@ mswin64_32: Gem::Platform::MSWIN64, mswin64_33: Gem::Platform::MSWIN64, mswin64_34: Gem::Platform::MSWIN64, - mswin64_35: Gem::Platform::MSWIN64, + mswin64_40: Gem::Platform::MSWIN64, mingw: Gem::Platform::UNIVERSAL_MINGW, mingw_18: Gem::Platform::UNIVERSAL_MINGW, mingw_19: Gem::Platform::UNIVERSAL_MINGW, @@ -114,7 +114,7 @@ mingw_32: Gem::Platform::UNIVERSAL_MINGW, mingw_33: Gem::Platform::UNIVERSAL_MINGW, mingw_34: Gem::Platform::UNIVERSAL_MINGW, - mingw_35: Gem::Platform::UNIVERSAL_MINGW, + mingw_40: Gem::Platform::UNIVERSAL_MINGW, x64_mingw: Gem::Platform::UNIVERSAL_MINGW, x64_mingw_20: Gem::Platform::UNIVERSAL_MINGW, x64_mingw_21: Gem::Platform::UNIVERSAL_MINGW, @@ -129,7 +129,7 @@ x64_mingw_32: Gem::Platform::UNIVERSAL_MINGW, x64_mingw_33: Gem::Platform::UNIVERSAL_MINGW, x64_mingw_34: Gem::Platform::UNIVERSAL_MINGW, - x64_mingw_35: Gem::Platform::UNIVERSAL_MINGW } + x64_mingw_40: Gem::Platform::UNIVERSAL_MINGW } end # rubocop:enable Naming/VariableNumber diff --git a/bundler/spec/bundler/dsl_spec.rb b/bundler/spec/bundler/dsl_spec.rb index e88033e95542..286dfa711518 100644 --- a/bundler/spec/bundler/dsl_spec.rb +++ b/bundler/spec/bundler/dsl_spec.rb @@ -201,8 +201,8 @@ describe "#gem" do # rubocop:disable Naming/VariableNumber [:ruby, :ruby_18, :ruby_19, :ruby_20, :ruby_21, :ruby_22, :ruby_23, :ruby_24, :ruby_25, :ruby_26, :ruby_27, - :ruby_30, :ruby_31, :ruby_32, :ruby_33, :ruby_34, :ruby_35, :mri, :mri_18, :mri_19, :mri_20, :mri_21, :mri_22, :mri_23, :mri_24, - :mri_25, :mri_26, :mri_27, :mri_30, :mri_31, :mri_32, :mri_33, :mri_34, :mri_35, :jruby, :rbx, :truffleruby].each do |platform| + :ruby_30, :ruby_31, :ruby_32, :ruby_33, :ruby_34, :ruby_40, :mri, :mri_18, :mri_19, :mri_20, :mri_21, :mri_22, :mri_23, :mri_24, + :mri_25, :mri_26, :mri_27, :mri_30, :mri_31, :mri_32, :mri_33, :mri_34, :mri_40, :jruby, :rbx, :truffleruby].each do |platform| it "allows #{platform} as a valid platform" do subject.gem("foo", platform: platform) end From b59917447cbf79981f59daa8c26831dc8f443064 Mon Sep 17 00:00:00 2001 From: Brandon Weaver Date: Sat, 8 Nov 2025 19:16:50 -0800 Subject: [PATCH 087/295] Add pattern matching support to Gem::Platform --- lib/rubygems/platform.rb | 6 ++++++ test/rubygems/test_gem_platform.rb | 34 ++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/lib/rubygems/platform.rb b/lib/rubygems/platform.rb index e30c266fab1c..411512a465ef 100644 --- a/lib/rubygems/platform.rb +++ b/lib/rubygems/platform.rb @@ -146,6 +146,12 @@ def to_s to_a.compact.join(@cpu.nil? ? "" : "-") end + alias_method :deconstruct, :to_a + + def deconstruct_keys(keys) + { cpu: @cpu, os: @os, version: @version } + end + ## # Is +other+ equal to this platform? Two platforms are equal if they have # the same CPU, OS and version. diff --git a/test/rubygems/test_gem_platform.rb b/test/rubygems/test_gem_platform.rb index a3ae919809d3..0f1a715ab81a 100644 --- a/test/rubygems/test_gem_platform.rb +++ b/test/rubygems/test_gem_platform.rb @@ -683,4 +683,38 @@ def assert_local_match(name) def refute_local_match(name) refute_match Gem::Platform.local, name end + + def test_deconstruct + platform = Gem::Platform.new("x86_64-linux") + assert_equal ["x86_64", "linux", nil], platform.deconstruct + end + + def test_deconstruct_keys + platform = Gem::Platform.new("x86_64-darwin-20") + assert_equal({ cpu: "x86_64", os: "darwin", version: "20" }, platform.deconstruct_keys(nil)) + end + + def test_pattern_matching_array + platform = Gem::Platform.new("arm64-darwin-21") + result = + case platform + in ["arm64", "darwin", version] + version + else + "no match" + end + assert_equal "21", result + end + + def test_pattern_matching_hash + platform = Gem::Platform.new("x86_64-linux") + result = + case platform + in cpu: "x86_64", os: "linux" + "matched" + else + "no match" + end + assert_equal "matched", result + end end From 9b19e1f5559d66787971097bc648ca72e8953f45 Mon Sep 17 00:00:00 2001 From: Brandon Weaver Date: Sat, 8 Nov 2025 19:37:32 -0800 Subject: [PATCH 088/295] Add pattern matching support to Gem::NameTuple --- lib/rubygems/name_tuple.rb | 6 +++++ test/rubygems/test_gem_name_tuple.rb | 37 ++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/lib/rubygems/name_tuple.rb b/lib/rubygems/name_tuple.rb index 67c6f30a3dff..cbdf4d7ac5f2 100644 --- a/lib/rubygems/name_tuple.rb +++ b/lib/rubygems/name_tuple.rb @@ -81,6 +81,12 @@ def to_a [@name, @version, @platform] end + alias_method :deconstruct, :to_a + + def deconstruct_keys(keys) + { name: @name, version: @version, platform: @platform } + end + def inspect # :nodoc: "#" end diff --git a/test/rubygems/test_gem_name_tuple.rb b/test/rubygems/test_gem_name_tuple.rb index bdb8181ce858..4876737c83db 100644 --- a/test/rubygems/test_gem_name_tuple.rb +++ b/test/rubygems/test_gem_name_tuple.rb @@ -57,4 +57,41 @@ def test_spaceship assert_equal 1, a_p.<=>(a) end + + def test_deconstruct + name_tuple = Gem::NameTuple.new "rails", Gem::Version.new("7.0.0"), "ruby" + assert_equal ["rails", Gem::Version.new("7.0.0"), "ruby"], name_tuple.deconstruct + end + + def test_deconstruct_keys + name_tuple = Gem::NameTuple.new "rails", Gem::Version.new("7.0.0"), "x86_64-linux" + keys = name_tuple.deconstruct_keys(nil) + assert_equal "rails", keys[:name] + assert_equal Gem::Version.new("7.0.0"), keys[:version] + assert_equal "x86_64-linux", keys[:platform] + end + + def test_pattern_matching_array + name_tuple = Gem::NameTuple.new "rails", Gem::Version.new("7.0.0"), "ruby" + result = + case name_tuple + in [name, version, "ruby"] + "#{name}-#{version}" + else + "no match" + end + assert_equal "rails-7.0.0", result + end + + def test_pattern_matching_hash + name_tuple = Gem::NameTuple.new "rails", Gem::Version.new("7.0.0"), "ruby" + result = + case name_tuple + in name: "rails", version:, platform: "ruby" + version.to_s + else + "no match" + end + assert_equal "7.0.0", result + end end From 2078f3d3519976003200c4c9a73a145301fc2253 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Sat, 8 Nov 2025 07:25:33 +0900 Subject: [PATCH 089/295] Fixed with Lint/RedundantSplatExpansion --- bundler/lib/bundler/current_ruby.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/lib/bundler/current_ruby.rb b/bundler/lib/bundler/current_ruby.rb index abb7ca2195da..ab6520a106a4 100644 --- a/bundler/lib/bundler/current_ruby.rb +++ b/bundler/lib/bundler/current_ruby.rb @@ -11,7 +11,7 @@ def self.current_ruby end class CurrentRuby - ALL_RUBY_VERSIONS = [*18..27, *30..34, *40].freeze + ALL_RUBY_VERSIONS = [*18..27, *30..34, 40].freeze KNOWN_MINOR_VERSIONS = ALL_RUBY_VERSIONS.map {|v| v.digits.reverse.join(".") }.freeze KNOWN_MAJOR_VERSIONS = ALL_RUBY_VERSIONS.map {|v| v.digits.last.to_s }.uniq.freeze PLATFORM_MAP = { From da29f74ba17bf17f64690a09bd47dc216e80acb9 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 10 Nov 2025 13:21:17 +0900 Subject: [PATCH 090/295] [DOC] Fix the location of Gem::Deprecate document It was bound to `module Gem`, instead of `module Deprecate`. --- lib/rubygems/deprecate.rb | 138 +++++++++++++++++++------------------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/lib/rubygems/deprecate.rb b/lib/rubygems/deprecate.rb index 303b344d42c8..fae99052ea4f 100644 --- a/lib/rubygems/deprecate.rb +++ b/lib/rubygems/deprecate.rb @@ -1,75 +1,75 @@ # frozen_string_literal: true -## -# Provides 3 methods for declaring when something is going away. -# -# +deprecate(name, repl, year, month)+: -# Indicate something may be removed on/after a certain date. -# -# +rubygems_deprecate(name, replacement=:none)+: -# Indicate something will be removed in the next major RubyGems version, -# and (optionally) a replacement for it. -# -# +rubygems_deprecate_command+: -# Indicate a RubyGems command (in +lib/rubygems/commands/*.rb+) will be -# removed in the next RubyGems version. -# -# Also provides +skip_during+ for temporarily turning off deprecation warnings. -# This is intended to be used in the test suite, so deprecation warnings -# don't cause test failures if you need to make sure stderr is otherwise empty. -# -# -# Example usage of +deprecate+ and +rubygems_deprecate+: -# -# class Legacy -# def self.some_class_method -# # ... -# end -# -# def some_instance_method -# # ... -# end -# -# def some_old_method -# # ... -# end -# -# extend Gem::Deprecate -# deprecate :some_instance_method, "X.z", 2011, 4 -# rubygems_deprecate :some_old_method, "Modern#some_new_method" -# -# class << self -# extend Gem::Deprecate -# deprecate :some_class_method, :none, 2011, 4 -# end -# end -# -# -# Example usage of +rubygems_deprecate_command+: -# -# class Gem::Commands::QueryCommand < Gem::Command -# extend Gem::Deprecate -# rubygems_deprecate_command -# -# # ... -# end -# -# -# Example usage of +skip_during+: -# -# class TestSomething < Gem::Testcase -# def test_some_thing_with_deprecations -# Gem::Deprecate.skip_during do -# actual_stdout, actual_stderr = capture_output do -# Gem.something_deprecated -# end -# assert_empty actual_stdout -# assert_equal(expected, actual_stderr) -# end -# end -# end - module Gem + ## + # Provides 3 methods for declaring when something is going away. + # + # +deprecate(name, repl, year, month)+: + # Indicate something may be removed on/after a certain date. + # + # +rubygems_deprecate(name, replacement=:none)+: + # Indicate something will be removed in the next major RubyGems version, + # and (optionally) a replacement for it. + # + # +rubygems_deprecate_command+: + # Indicate a RubyGems command (in +lib/rubygems/commands/*.rb+) will be + # removed in the next RubyGems version. + # + # Also provides +skip_during+ for temporarily turning off deprecation warnings. + # This is intended to be used in the test suite, so deprecation warnings + # don't cause test failures if you need to make sure stderr is otherwise empty. + # + # + # Example usage of +deprecate+ and +rubygems_deprecate+: + # + # class Legacy + # def self.some_class_method + # # ... + # end + # + # def some_instance_method + # # ... + # end + # + # def some_old_method + # # ... + # end + # + # extend Gem::Deprecate + # deprecate :some_instance_method, "X.z", 2011, 4 + # rubygems_deprecate :some_old_method, "Modern#some_new_method" + # + # class << self + # extend Gem::Deprecate + # deprecate :some_class_method, :none, 2011, 4 + # end + # end + # + # + # Example usage of +rubygems_deprecate_command+: + # + # class Gem::Commands::QueryCommand < Gem::Command + # extend Gem::Deprecate + # rubygems_deprecate_command + # + # # ... + # end + # + # + # Example usage of +skip_during+: + # + # class TestSomething < Gem::Testcase + # def test_some_thing_with_deprecations + # Gem::Deprecate.skip_during do + # actual_stdout, actual_stderr = capture_output do + # Gem.something_deprecated + # end + # assert_empty actual_stdout + # assert_equal(expected, actual_stderr) + # end + # end + # end + module Deprecate def self.skip # :nodoc: @skip ||= false From f84035c0b699675ea4fee982d1df0ad86a1f31b6 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 10 Nov 2025 13:46:15 +0900 Subject: [PATCH 091/295] [DOC] Fix markups Use `` instead of `+` that cannot enclose punctuations. --- lib/rubygems/deprecate.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/rubygems/deprecate.rb b/lib/rubygems/deprecate.rb index fae99052ea4f..eb503bb26999 100644 --- a/lib/rubygems/deprecate.rb +++ b/lib/rubygems/deprecate.rb @@ -4,10 +4,10 @@ module Gem ## # Provides 3 methods for declaring when something is going away. # - # +deprecate(name, repl, year, month)+: + # deprecate(name, repl, year, month): # Indicate something may be removed on/after a certain date. # - # +rubygems_deprecate(name, replacement=:none)+: + # rubygems_deprecate(name, replacement=:none): # Indicate something will be removed in the next major RubyGems version, # and (optionally) a replacement for it. # From 9b169c700fa551b1fb9c74573e3243af5ea46106 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Jun 2024 14:28:19 +0900 Subject: [PATCH 092/295] Hide patchlevel from lockfile --- bundler/lib/bundler/ruby_version.rb | 4 +--- bundler/spec/bundler/ruby_version_spec.rb | 10 ++-------- bundler/spec/install/gemfile/ruby_spec.rb | 2 +- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/bundler/lib/bundler/ruby_version.rb b/bundler/lib/bundler/ruby_version.rb index 0ed5cbc6cacf..7f60dde4768d 100644 --- a/bundler/lib/bundler/ruby_version.rb +++ b/bundler/lib/bundler/ruby_version.rb @@ -43,7 +43,6 @@ def initialize(versions, patchlevel, engine, engine_version) def to_s(versions = self.versions) output = String.new("ruby #{versions_string(versions)}") - output << "p#{patchlevel}" if patchlevel && patchlevel != "-1" output << " (#{engine} #{versions_string(engine_versions)})" unless engine == "ruby" output @@ -72,8 +71,7 @@ def single_version_string def ==(other) versions == other.versions && engine == other.engine && - engine_versions == other.engine_versions && - patchlevel == other.patchlevel + engine_versions == other.engine_versions end def host diff --git a/bundler/spec/bundler/ruby_version_spec.rb b/bundler/spec/bundler/ruby_version_spec.rb index 39d0571361ef..b96893cefe8c 100644 --- a/bundler/spec/bundler/ruby_version_spec.rb +++ b/bundler/spec/bundler/ruby_version_spec.rb @@ -100,7 +100,7 @@ describe "#to_s" do it "should return info string with the ruby version, patchlevel, engine, and engine version" do - expect(subject.to_s).to eq("ruby 2.0.0p645 (jruby 2.0.1)") + expect(subject.to_s).to eq("ruby 2.0.0 (jruby 2.0.1)") end context "no patchlevel" do @@ -115,7 +115,7 @@ let(:engine) { "ruby" } it "should return info string with the ruby version and patchlevel" do - expect(subject.to_s).to eq("ruby 2.0.0p645") + expect(subject.to_s).to eq("ruby 2.0.0") end end @@ -149,12 +149,6 @@ it_behaves_like "two ruby versions are not equal" end - context "the patchlevels do not match" do - let(:other_patchlevel) { "21" } - - it_behaves_like "two ruby versions are not equal" - end - context "the engines do not match" do let(:other_engine) { "ruby" } diff --git a/bundler/spec/install/gemfile/ruby_spec.rb b/bundler/spec/install/gemfile/ruby_spec.rb index 3e15d82bbe25..313babc81d75 100644 --- a/bundler/spec/install/gemfile/ruby_spec.rb +++ b/bundler/spec/install/gemfile/ruby_spec.rb @@ -83,7 +83,7 @@ def locked_ruby_version myrack RUBY VERSION - ruby 2.1.4p422 + ruby 2.1.4 BUNDLED WITH #{Bundler::VERSION} From 46386d43e156031252b331b82d583581c8552b1d Mon Sep 17 00:00:00 2001 From: Edouard CHIN Date: Mon, 10 Nov 2025 23:09:55 +0100 Subject: [PATCH 093/295] Add debug logging information: - I'd like to be able to see how long bundler takes for basic operations such as downloading a gem from Rubygems.org and installing a gem. It will now be possible with this commit by running `DEBUG=true bundle install` and have output that looks like: Fetching rack-test 2.2.0 Downloaded rack-test in: 50.523s Installing rack-test 2.2.0 Installed rack-test in: : 0.003s --- bundler/lib/bundler/source/rubygems.rb | 11 +++++++++-- bundler/spec/bundler/source/rubygems_spec.rb | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/bundler/lib/bundler/source/rubygems.rb b/bundler/lib/bundler/source/rubygems.rb index 2631c860a010..76ab92e5f8eb 100644 --- a/bundler/lib/bundler/source/rubygems.rb +++ b/bundler/lib/bundler/source/rubygems.rb @@ -211,7 +211,11 @@ def install(spec, options = {}) message += " with native extensions" if spec.extensions.any? Bundler.ui.confirm message - installed_spec = installer.install + installed_spec = nil + + Gem.time("Installed #{spec.name} in", 0, true) do + installed_spec = installer.install + end spec.full_gem_path = installed_spec.full_gem_path spec.loaded_from = installed_spec.loaded_from @@ -478,7 +482,10 @@ def download_gem(spec, download_cache_path, previous_spec = nil) uri = spec.remote.uri Bundler.ui.confirm("Fetching #{version_message(spec, previous_spec)}") gem_remote_fetcher = remote_fetchers.fetch(spec.remote).gem_remote_fetcher - Bundler.rubygems.download_gem(spec, uri, download_cache_path, gem_remote_fetcher) + + Gem.time("Downloaded #{spec.name} in", 0, true) do + Bundler.rubygems.download_gem(spec, uri, download_cache_path, gem_remote_fetcher) + end end # Returns the global cache path of the calling Rubygems::Source object. diff --git a/bundler/spec/bundler/source/rubygems_spec.rb b/bundler/spec/bundler/source/rubygems_spec.rb index 884fa810465f..dde4e4ed4769 100644 --- a/bundler/spec/bundler/source/rubygems_spec.rb +++ b/bundler/spec/bundler/source/rubygems_spec.rb @@ -44,4 +44,22 @@ end end end + + describe "log debug information" do + it "log the time spent downloading and installing a gem" do + build_repo2 do + build_gem "warning" + end + + gemfile_content = <<~G + source "https://gem.repo2/" + gem "warning" + G + + stdout = install_gemfile(gemfile_content, env: { "DEBUG" => "1" }) + + expect(stdout).to match(/Downloaded warning in: \d+\.\d+s/) + expect(stdout).to match(/Installed warning in: \d+\.\d+s/) + end + end end From ebf27056c6728ada7965093fbd1ae0a8c0834028 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Mon, 3 Nov 2025 10:29:06 -0800 Subject: [PATCH 094/295] build gems directly instead of shelling out I'm trying to speed up the bundler tests. The tests shell out a lot in order to build gems. We can build gems without creating a sub-process. This change reduced the test suite time from ~24 minutes, to about ~21 minutes on my machine. Once we have more of these "asset generation" routines done in the same process, I think we can start caching the outputs for further improvements --- bundler/spec/quality_spec.rb | 4 ++-- bundler/spec/support/builders.rb | 32 ++++++++++++++++++++++---------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/bundler/spec/quality_spec.rb b/bundler/spec/quality_spec.rb index 34e6c2627234..bbd6517f21db 100644 --- a/bundler/spec/quality_spec.rb +++ b/bundler/spec/quality_spec.rb @@ -184,8 +184,8 @@ def check_for_specific_pronouns(filename) end it "can still be built" do - with_built_bundler do |_gem_path| - expect(err).to be_empty, "bundler should build as a gem without warnings, but\n#{err}" + with_built_bundler do |gem_path| + expect(File.exist?(gem_path)).to be true end end diff --git a/bundler/spec/support/builders.rb b/bundler/spec/support/builders.rb index 3ebb7e386490..ef525931938b 100644 --- a/bundler/spec/support/builders.rb +++ b/bundler/spec/support/builders.rb @@ -2,6 +2,8 @@ require "bundler/shared_helpers" require "shellwords" +require "fileutils" +require "rubygems/package" require_relative "build_metadata" @@ -423,21 +425,30 @@ def required_ruby_version=(*reqs) end class BundlerBuilder - attr_writer :required_ruby_version + SPEC_FILE = File.join File.dirname(__FILE__), "..", "..", "bundler.gemspec" + SPEC = Gem::Specification.load(SPEC_FILE) def initialize(context, name, version) raise "can only build bundler" unless name == "bundler" @context = context - @version = version || Bundler::VERSION + @spec = SPEC.dup + @spec.version = version || Bundler::VERSION + end + + def required_ruby_version + @spec.required_ruby_version + end + + def required_ruby_version=(x) + @spec.required_ruby_version = x end def _build(options = {}) - full_name = "bundler-#{@version}" + full_name = "bundler-#{@spec.version}" build_path = (options[:build_path] || @context.tmp) + full_name bundler_path = build_path + "#{full_name}.gem" - require "fileutils" FileUtils.mkdir_p build_path @context.shipped_files.each do |shipped_file| @@ -449,13 +460,14 @@ def _build(options = {}) FileUtils.cp File.expand_path(shipped_file, @context.source_root), target_shipped_file, preserve: true end - @context.replace_version_file(@version, dir: build_path) - @context.replace_changelog(@version, dir: build_path) if options[:released] - @context.replace_required_ruby_version(@required_ruby_version, dir: build_path) if @required_ruby_version + @context.replace_version_file(@spec.version, dir: build_path) + @context.replace_changelog(@spec.version, dir: build_path) if options[:released] - Spec::BuildMetadata.write_build_metadata(dir: build_path, version: @version) + Spec::BuildMetadata.write_build_metadata(dir: build_path, version: @spec.version.to_s) - @context.gem_command "build #{@context.relative_gemspec}", dir: build_path + Dir.chdir build_path do + Gem::Package.build(@spec) + end if block_given? yield(bundler_path) @@ -659,7 +671,7 @@ def _build(opts) elsif opts[:skip_validation] @context.gem_command "build --force #{@spec.name}", dir: lib_path else - @context.gem_command "build #{@spec.name}", dir: lib_path, allowed_warning: opts[:allowed_warning] + Dir.chdir(lib_path) { Gem::Package.build(@spec) } end gem_path = File.expand_path("#{@spec.full_name}.gem", lib_path) From 2142e405b0302dbcf93e01c29c3aaeeb579389c2 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 11 Nov 2025 12:03:36 +0900 Subject: [PATCH 095/295] Use Spec::Path.relative_gemspec --- bundler/spec/support/builders.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bundler/spec/support/builders.rb b/bundler/spec/support/builders.rb index ef525931938b..4eaf40e1bf28 100644 --- a/bundler/spec/support/builders.rb +++ b/bundler/spec/support/builders.rb @@ -425,8 +425,7 @@ def required_ruby_version=(*reqs) end class BundlerBuilder - SPEC_FILE = File.join File.dirname(__FILE__), "..", "..", "bundler.gemspec" - SPEC = Gem::Specification.load(SPEC_FILE) + SPEC = Gem::Specification.load(Spec::Path.relative_gemspec) def initialize(context, name, version) raise "can only build bundler" unless name == "bundler" From 18f64c6b29df4111ff2aaddb5e3097f94e9e8f64 Mon Sep 17 00:00:00 2001 From: Brandon Weaver Date: Mon, 10 Nov 2025 21:58:41 -0800 Subject: [PATCH 096/295] Add documentation for pattern matching methods --- lib/rubygems/platform.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/rubygems/platform.rb b/lib/rubygems/platform.rb index 411512a465ef..f0eae47c5428 100644 --- a/lib/rubygems/platform.rb +++ b/lib/rubygems/platform.rb @@ -146,8 +146,33 @@ def to_s to_a.compact.join(@cpu.nil? ? "" : "-") end + ## + # Deconstructs the platform into an array for pattern matching. + # Returns [cpu, os, version]. + # + # Gem::Platform.new("x86_64-linux").deconstruct #=> ["x86_64", "linux", nil] + # + # This enables array pattern matching: + # + # case Gem::Platform.new("arm64-darwin-21") + # in ["arm64", "darwin", version] + # # version => "21" + # end alias_method :deconstruct, :to_a + ## + # Deconstructs the platform into a hash for pattern matching. + # Returns a hash with keys +:cpu+, +:os+, and +:version+. + # + # Gem::Platform.new("x86_64-darwin-20").deconstruct_keys(nil) + # #=> { cpu: "x86_64", os: "darwin", version: "20" } + # + # This enables hash pattern matching: + # + # case Gem::Platform.new("x86_64-linux") + # in cpu: "x86_64", os: "linux" + # # Matches Linux on x86_64 + # end def deconstruct_keys(keys) { cpu: @cpu, os: @os, version: @version } end From 5465bea3b4f2e287f1ae398fc2ed4c6643535d81 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 11 Nov 2025 14:22:16 +0900 Subject: [PATCH 097/295] Support out-of-place build in ruby/ruby repo --- bundler/spec/support/builders.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bundler/spec/support/builders.rb b/bundler/spec/support/builders.rb index 4eaf40e1bf28..5ca227cf5b3a 100644 --- a/bundler/spec/support/builders.rb +++ b/bundler/spec/support/builders.rb @@ -425,13 +425,11 @@ def required_ruby_version=(*reqs) end class BundlerBuilder - SPEC = Gem::Specification.load(Spec::Path.relative_gemspec) - def initialize(context, name, version) raise "can only build bundler" unless name == "bundler" @context = context - @spec = SPEC.dup + @spec = Spec::Path.loaded_gemspec.dup @spec.version = version || Bundler::VERSION end From e40bafe9f1a819d89ebe6b32c6877046b97bee96 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 11 Nov 2025 14:45:35 -0800 Subject: [PATCH 098/295] Shell out fewer times This is a follow up to #9053. We can avoid shelling out for generating the gem index. --- bundler/spec/spec_helper.rb | 1 + bundler/spec/support/builders.rb | 10 ++-------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/bundler/spec/spec_helper.rb b/bundler/spec/spec_helper.rb index d750218452eb..a3a7b57356c7 100644 --- a/bundler/spec/spec_helper.rb +++ b/bundler/spec/spec_helper.rb @@ -27,6 +27,7 @@ require "rspec/expectations" require "rspec/mocks" require "rspec/support/differ" +require "rubygems/indexer" require_relative "support/builders" require_relative "support/checksums" diff --git a/bundler/spec/support/builders.rb b/bundler/spec/support/builders.rb index 5ca227cf5b3a..1283dc434882 100644 --- a/bundler/spec/support/builders.rb +++ b/bundler/spec/support/builders.rb @@ -279,14 +279,8 @@ def update_repo(path, build_compact_index: true) @_build_path = "#{path}/gems" @_build_repo = File.basename(path) yield - with_gem_path_as scoped_base_system_gem_path do - Dir[scoped_base_system_gem_path.join("gems/rubygems-generate_index*/lib")].first || - raise("Could not find rubygems-generate_index lib directory in #{scoped_base_system_gem_path}") - - command = "generate_index" - command += " --no-compact" if !build_compact_index && gem_command(command + " --help").include?("--[no-]compact") - gem_command command, dir: path - end + options = { build_compact: build_compact_index } + Gem::Indexer.new(path, options).generate_index ensure @_build_path = nil @_build_repo = nil From 8df0e4e63e2e1958c89cadc97424b9e0dca9ddd5 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 11 Nov 2025 16:05:28 -0800 Subject: [PATCH 099/295] add rubygems-generate_index as a dev dep --- tool/bundler/dev_gems.rb | 1 + tool/bundler/dev_gems.rb.lock | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/tool/bundler/dev_gems.rb b/tool/bundler/dev_gems.rb index 0d4dbd7f2ee0..0039a42171aa 100644 --- a/tool/bundler/dev_gems.rb +++ b/tool/bundler/dev_gems.rb @@ -12,6 +12,7 @@ gem "rspec-core", "~> 3.12" gem "rspec-expectations", "~> 3.12" gem "rspec-mocks", "~> 3.12" +gem "rubygems-generate_index", "~> 1.1" group :doc do gem "ronn-ng", "~> 0.10.1", platform: :ruby diff --git a/tool/bundler/dev_gems.rb.lock b/tool/bundler/dev_gems.rb.lock index bc1d2acfc98d..7f73c43f4cc1 100644 --- a/tool/bundler/dev_gems.rb.lock +++ b/tool/bundler/dev_gems.rb.lock @@ -1,6 +1,7 @@ GEM remote: https://rubygems.org/ specs: + compact_index (0.15.0) diff-lcs (1.6.1) kramdown (2.5.1) rexml (>= 3.3.9) @@ -54,6 +55,8 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.2) + rubygems-generate_index (1.1.3) + compact_index (~> 0.15.0) test-unit (3.6.7) power_assert turbo_tests (2.2.5) @@ -83,10 +86,12 @@ DEPENDENCIES rspec-core (~> 3.12) rspec-expectations (~> 3.12) rspec-mocks (~> 3.12) + rubygems-generate_index (~> 1.1) test-unit (~> 3.0) turbo_tests (~> 2.2.3) CHECKSUMS + compact_index (0.15.0) sha256=5c6c404afca8928a7d9f4dde9524f6e1610db17e675330803055db282da84a8b diff-lcs (1.6.1) sha256=12a5a83f3e37a8e2f4427268e305914d5f1879f22b4e73bb1a09f76a3dd86cd4 kramdown (2.5.1) sha256=87bbb6abd9d3cebe4fc1f33e367c392b4500e6f8fa19dd61c0972cf4afe7368c kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 @@ -115,6 +120,7 @@ CHECKSUMS rspec-expectations (3.13.3) sha256=0e6b5af59b900147698ea0ff80456c4f2e69cac4394fbd392fbd1ca561f66c58 rspec-mocks (3.13.2) sha256=2327335def0e1665325a9b617e3af9ae20272741d80ac550336309a7c59abdef rspec-support (3.13.2) sha256=cea3a2463fd9b84b9dcc9685efd80ea701aa8f7b3decb3b3ce795ed67737dbec + rubygems-generate_index (1.1.3) sha256=3571424322666598e9586a906485e1543b617f87644913eaf137d986a3393f5c test-unit (3.6.7) sha256=c342bb9f7334ea84a361b43c20b063f405c0bf3c7dbe3ff38f61a91661d29221 turbo_tests (2.2.5) sha256=3fa31497d12976d11ccc298add29107b92bda94a90d8a0a5783f06f05102509f From 4d8b1c77f4e3e6fdc4a24f70c5b809780e4cf121 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 11 Nov 2025 16:16:17 -0800 Subject: [PATCH 100/295] maybe this will work? --- bundler/spec/spec_helper.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/bundler/spec/spec_helper.rb b/bundler/spec/spec_helper.rb index a3a7b57356c7..96cd7be4720a 100644 --- a/bundler/spec/spec_helper.rb +++ b/bundler/spec/spec_helper.rb @@ -27,6 +27,7 @@ require "rspec/expectations" require "rspec/mocks" require "rspec/support/differ" +gem "rubygems-generate_index" require "rubygems/indexer" require_relative "support/builders" From 7108c8e86cea465b486a5cefaef41b598ede04d9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 12 Nov 2025 17:23:58 +0900 Subject: [PATCH 101/295] Split Ractor tests for Gem::Package --- test/rubygems/test_gem_package_tar_header.rb | 19 ---- .../test_gem_package_tar_header_ractor.rb | 92 +++++++++++++++++++ 2 files changed, 92 insertions(+), 19 deletions(-) create mode 100644 test/rubygems/test_gem_package_tar_header_ractor.rb diff --git a/test/rubygems/test_gem_package_tar_header.rb b/test/rubygems/test_gem_package_tar_header.rb index 34f92967e990..a3f95bb7704f 100644 --- a/test/rubygems/test_gem_package_tar_header.rb +++ b/test/rubygems/test_gem_package_tar_header.rb @@ -26,25 +26,6 @@ def setup @tar_header = Gem::Package::TarHeader.new header end - def test_decode_in_ractor - new_header = Ractor.new(@tar_header.to_s) do |str| - Gem::Package::TarHeader.from StringIO.new str - end.value - - assert_headers_equal @tar_header, new_header - end if defined?(Ractor) && Ractor.instance_methods.include?(:value) - - def test_encode_in_ractor - header_bytes = @tar_header.to_s - - new_header = Ractor.new(header_bytes) do |str| - header = Gem::Package::TarHeader.from StringIO.new str - header.to_s - end.value - - assert_headers_equal header_bytes, new_header - end if defined?(Ractor) && Ractor.instance_methods.include?(:value) - def test_self_from io = TempIO.new @tar_header.to_s diff --git a/test/rubygems/test_gem_package_tar_header_ractor.rb b/test/rubygems/test_gem_package_tar_header_ractor.rb new file mode 100644 index 000000000000..6f417f43f90c --- /dev/null +++ b/test/rubygems/test_gem_package_tar_header_ractor.rb @@ -0,0 +1,92 @@ +# frozen_string_literal: true +require_relative "package/tar_test_case" + +class TestGemPackageTarHeaderRactor < Gem::Package::TarTestCase + ASSERT_HEADERS_EQUAL = <<~RUBY + def assert_headers_equal(expected, actual) + expected = expected.to_s unless String === expected + actual = actual.to_s unless String === actual + + fields = %w[ + name 100 + mode 8 + uid 8 + gid 8 + size 12 + mtime 12 + checksum 8 + typeflag 1 + linkname 100 + magic 6 + version 2 + uname 32 + gname 32 + devmajor 8 + devminor 8 + prefix 155 + ] + + offset = 0 + + until fields.empty? do + name = fields.shift + length = fields.shift.to_i + + if name == "checksum" + chksum_off = offset + offset += length + next + end + + assert_equal expected[offset, length], actual[offset, length] + + offset += length + end + + assert_equal expected[chksum_off, 8], actual[chksum_off, 8] + end + RUBY + + SETUP = <<~RUBY + header = { + name: "x", + mode: 0o644, + uid: 1000, + gid: 10_000, + size: 100, + mtime: 12_345, + typeflag: "0", + linkname: "link", + uname: "user", + gname: "group", + devmajor: 1, + devminor: 2, + prefix: "y", + } + + tar_header = Gem::Package::TarHeader.new header + RUBY + + def test_decode_in_ractor + assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: ["rubygems/package", "stringio"]) + new_header = Ractor.new(tar_header.to_s) do |str| + Gem::Package::TarHeader.from StringIO.new str + end.value + + assert_headers_equal tar_header, new_header + RUBY + end + + def test_encode_in_ractor + assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: ["rubygems/package", "stringio"]) + header_bytes = tar_header.to_s + + new_header_bytes = Ractor.new(header_bytes) do |str| + new_header = Gem::Package::TarHeader.from StringIO.new str + new_header.to_s + end.value + + assert_headers_equal header_bytes, new_header_bytes + RUBY + end +end From be579a9c8cf9a3b37a7045f396a86ca412245df4 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 12 Nov 2025 19:26:47 +0900 Subject: [PATCH 102/295] Added test-unit-ruby-core for assert_ractor --- tool/bundler/dev_gems.rb | 1 + tool/bundler/dev_gems.rb.lock | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/tool/bundler/dev_gems.rb b/tool/bundler/dev_gems.rb index 0039a42171aa..91ac5628f1f3 100644 --- a/tool/bundler/dev_gems.rb +++ b/tool/bundler/dev_gems.rb @@ -3,6 +3,7 @@ source "https://rubygems.org/" gem "test-unit", "~> 3.0" +gem "test-unit-ruby-core" gem "rake", "~> 13.1" gem "rb_sys" diff --git a/tool/bundler/dev_gems.rb.lock b/tool/bundler/dev_gems.rb.lock index 7f73c43f4cc1..f2a5245ede23 100644 --- a/tool/bundler/dev_gems.rb.lock +++ b/tool/bundler/dev_gems.rb.lock @@ -59,6 +59,8 @@ GEM compact_index (~> 0.15.0) test-unit (3.6.7) power_assert + test-unit-ruby-core (1.0.13) + test-unit turbo_tests (2.2.5) parallel_tests (>= 3.3.0, < 5) rspec (>= 3.10) @@ -88,6 +90,7 @@ DEPENDENCIES rspec-mocks (~> 3.12) rubygems-generate_index (~> 1.1) test-unit (~> 3.0) + test-unit-ruby-core turbo_tests (~> 2.2.3) CHECKSUMS @@ -122,6 +125,7 @@ CHECKSUMS rspec-support (3.13.2) sha256=cea3a2463fd9b84b9dcc9685efd80ea701aa8f7b3decb3b3ce795ed67737dbec rubygems-generate_index (1.1.3) sha256=3571424322666598e9586a906485e1543b617f87644913eaf137d986a3393f5c test-unit (3.6.7) sha256=c342bb9f7334ea84a361b43c20b063f405c0bf3c7dbe3ff38f61a91661d29221 + test-unit-ruby-core (1.0.13) sha256=0c08e61b3b97060028a47d8fc4827de077fdbfc26ef80b4afd9035b9e15ecc5b turbo_tests (2.2.5) sha256=3fa31497d12976d11ccc298add29107b92bda94a90d8a0a5783f06f05102509f BUNDLED WITH From 47f41ce2dff4f506ec8bfb10a7bd750ea594457c Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 12 Nov 2025 19:27:14 +0900 Subject: [PATCH 103/295] Inject assert_ractor if TestGemPackageTarHeaderRactor is running under the ruby/rubygems repo --- test/rubygems/test_gem_package_tar_header_ractor.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/rubygems/test_gem_package_tar_header_ractor.rb b/test/rubygems/test_gem_package_tar_header_ractor.rb index 6f417f43f90c..d758d3dac230 100644 --- a/test/rubygems/test_gem_package_tar_header_ractor.rb +++ b/test/rubygems/test_gem_package_tar_header_ractor.rb @@ -1,6 +1,12 @@ # frozen_string_literal: true + require_relative "package/tar_test_case" +unless Gem::Package::TarTestCase.instance_methods.include?(:assert_ractor) + require "core_assertions" + Gem::Package::TarTestCase.include Test::Unit::CoreAssertions +end + class TestGemPackageTarHeaderRactor < Gem::Package::TarTestCase ASSERT_HEADERS_EQUAL = <<~RUBY def assert_headers_equal(expected, actual) From da0a14801aeea85fc74a3359cf022a1d56b0d466 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 12 Nov 2025 20:24:44 +0900 Subject: [PATCH 104/295] Support ruby_3_4 branch with assert_ractor argument --- test/rubygems/test_gem_package_tar_header_ractor.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/rubygems/test_gem_package_tar_header_ractor.rb b/test/rubygems/test_gem_package_tar_header_ractor.rb index d758d3dac230..49ea6daf234b 100644 --- a/test/rubygems/test_gem_package_tar_header_ractor.rb +++ b/test/rubygems/test_gem_package_tar_header_ractor.rb @@ -71,10 +71,12 @@ def assert_headers_equal(expected, actual) } tar_header = Gem::Package::TarHeader.new header + # Move this require to arguments of assert_ractor after Ruby 4.0 or updating core_assertions.rb at Ruby 3.4. + require "stringio" RUBY def test_decode_in_ractor - assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: ["rubygems/package", "stringio"]) + assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: "rubygems/package") new_header = Ractor.new(tar_header.to_s) do |str| Gem::Package::TarHeader.from StringIO.new str end.value @@ -84,7 +86,7 @@ def test_decode_in_ractor end def test_encode_in_ractor - assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: ["rubygems/package", "stringio"]) + assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: "rubygems/package") header_bytes = tar_header.to_s new_header_bytes = Ractor.new(header_bytes) do |str| From d7bc3a6d827112f0a3d75c6307a304a2b28898ad Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 12 Nov 2025 20:49:23 +0900 Subject: [PATCH 105/295] Workaround for test failure of ruby_3_4 branch --- test/rubygems/test_gem_package_tar_header_ractor.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/rubygems/test_gem_package_tar_header_ractor.rb b/test/rubygems/test_gem_package_tar_header_ractor.rb index 49ea6daf234b..07dce46f887d 100644 --- a/test/rubygems/test_gem_package_tar_header_ractor.rb +++ b/test/rubygems/test_gem_package_tar_header_ractor.rb @@ -73,6 +73,8 @@ def assert_headers_equal(expected, actual) tar_header = Gem::Package::TarHeader.new header # Move this require to arguments of assert_ractor after Ruby 4.0 or updating core_assertions.rb at Ruby 3.4. require "stringio" + # Remove this after Ruby 4.0 or updating core_assertions.rb at Ruby 3.4. + class Ractor; alias value take; end RUBY def test_decode_in_ractor From 831894043c465dff1226a971cf83b7e928fe64bd Mon Sep 17 00:00:00 2001 From: Edouard CHIN Date: Wed, 12 Nov 2025 19:19:05 +0100 Subject: [PATCH 106/295] Adjust the API_REQUEST_LIMIT: - ### Problem This limit is used when Bundler fallback to getting a dependency list from a server `/dependencies?gem=` endpoint. Bundler uses this API endpoint fallback when a server doesn't expose the compact index API. This is not used for Rubygems.org, only private servers. This limit is then divided by the number of dependency to get and the result is the number of request we'll be doing. The bottleneck on the client is the network roundtrip. On the server, getting the info of 50 or 100 gems is a bit more expensive but this operation is heavily cached. This is an example of Rubygems.org implementation at the time the dependencies API wasn't deprecated https://github.com/rubygems/rubygems.org/blob/5a3a3ec02acc3a4e3aba077953a393ad20a06842/app/models/gem_dependent.rb#L15 ### Context This limit used to be 100 a while ago but got changed to 50 in https://github.com/ruby/rubygems/commit/e745f8dc901dd419e7dc8aede3e8d49569fc7b1e I don't know why. ### Solution 50 gems to query seems arbitrary low. By doubling this number, we make twice as less API requests which ultimately can shove up to two seconds on application relying on a large number of gems. --- bundler/lib/bundler/source/rubygems.rb | 2 +- bundler/spec/bundler/fetcher/dependency_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bundler/lib/bundler/source/rubygems.rb b/bundler/lib/bundler/source/rubygems.rb index 2631c860a010..e420d8395f8b 100644 --- a/bundler/lib/bundler/source/rubygems.rb +++ b/bundler/lib/bundler/source/rubygems.rb @@ -8,7 +8,7 @@ class Rubygems < Source autoload :Remote, File.expand_path("rubygems/remote", __dir__) # Ask for X gems per API request - API_REQUEST_SIZE = 50 + API_REQUEST_SIZE = 100 attr_accessor :remotes diff --git a/bundler/spec/bundler/fetcher/dependency_spec.rb b/bundler/spec/bundler/fetcher/dependency_spec.rb index c420b7c07f20..61e32acfd969 100644 --- a/bundler/spec/bundler/fetcher/dependency_spec.rb +++ b/bundler/spec/bundler/fetcher/dependency_spec.rb @@ -212,7 +212,7 @@ let(:dep_api_uri) { double(:dep_api_uri) } let(:unmarshalled_gems) { double(:unmarshalled_gems) } let(:fetch_response) { double(:fetch_response, body: double(:body)) } - let(:rubygems_limit) { 50 } + let(:rubygems_limit) { 100 } before { allow(subject).to receive(:dependency_api_uri).with(gem_names).and_return(dep_api_uri) } From 0cf49e22af9a42d4e39571783e9cc41e7ecdad61 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 13 Nov 2025 07:09:20 +0900 Subject: [PATCH 107/295] Re-use assert_headers_equal from Gem::Package::TarTestCase --- test/rubygems/package/tar_test_case.rb | 38 +++++++------ .../test_gem_package_tar_header_ractor.rb | 53 +++---------------- 2 files changed, 27 insertions(+), 64 deletions(-) diff --git a/test/rubygems/package/tar_test_case.rb b/test/rubygems/package/tar_test_case.rb index e3d812bf3fd2..26135cf29672 100644 --- a/test/rubygems/package/tar_test_case.rb +++ b/test/rubygems/package/tar_test_case.rb @@ -6,23 +6,7 @@ ## # A test case for Gem::Package::Tar* classes -class Gem::Package::TarTestCase < Gem::TestCase - def ASCIIZ(str, length) - str + "\0" * (length - str.length) - end - - def SP(s) - s + " " - end - - def SP_Z(s) - s + " \0" - end - - def Z(s) - s + "\0" - end - +module Gem::Package::TarTestMethods def assert_headers_equal(expected, actual) expected = expected.to_s unless String === expected actual = actual.to_s unless String === actual @@ -66,6 +50,26 @@ def assert_headers_equal(expected, actual) assert_equal expected[chksum_off, 8], actual[chksum_off, 8] end +end + +class Gem::Package::TarTestCase < Gem::TestCase + include Gem::Package::TarTestMethods + + def ASCIIZ(str, length) + str + "\0" * (length - str.length) + end + + def SP(s) + s + " " + end + + def SP_Z(s) + s + " \0" + end + + def Z(s) + s + "\0" + end def calc_checksum(header) sum = header.sum(0) diff --git a/test/rubygems/test_gem_package_tar_header_ractor.rb b/test/rubygems/test_gem_package_tar_header_ractor.rb index 07dce46f887d..27d61feef0fe 100644 --- a/test/rubygems/test_gem_package_tar_header_ractor.rb +++ b/test/rubygems/test_gem_package_tar_header_ractor.rb @@ -8,51 +8,6 @@ end class TestGemPackageTarHeaderRactor < Gem::Package::TarTestCase - ASSERT_HEADERS_EQUAL = <<~RUBY - def assert_headers_equal(expected, actual) - expected = expected.to_s unless String === expected - actual = actual.to_s unless String === actual - - fields = %w[ - name 100 - mode 8 - uid 8 - gid 8 - size 12 - mtime 12 - checksum 8 - typeflag 1 - linkname 100 - magic 6 - version 2 - uname 32 - gname 32 - devmajor 8 - devminor 8 - prefix 155 - ] - - offset = 0 - - until fields.empty? do - name = fields.shift - length = fields.shift.to_i - - if name == "checksum" - chksum_off = offset - offset += length - next - end - - assert_equal expected[offset, length], actual[offset, length] - - offset += length - end - - assert_equal expected[chksum_off, 8], actual[chksum_off, 8] - end - RUBY - SETUP = <<~RUBY header = { name: "x", @@ -78,7 +33,9 @@ class Ractor; alias value take; end RUBY def test_decode_in_ractor - assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: "rubygems/package") + assert_ractor(SETUP + <<~RUBY, require: "rubygems/package", require_relative: "package/tar_test_case") + include Gem::Package::TarTestMethods + new_header = Ractor.new(tar_header.to_s) do |str| Gem::Package::TarHeader.from StringIO.new str end.value @@ -88,7 +45,9 @@ def test_decode_in_ractor end def test_encode_in_ractor - assert_ractor(ASSERT_HEADERS_EQUAL + SETUP + <<~RUBY, require: "rubygems/package") + assert_ractor(SETUP + <<~RUBY, require: "rubygems/package", require_relative: "package/tar_test_case") + include Gem::Package::TarTestMethods + header_bytes = tar_header.to_s new_header_bytes = Ractor.new(header_bytes) do |str| From fb65dc74e6f7ae8fc6f835ba1cab4f49981732a4 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Wed, 12 Nov 2025 22:19:08 +0900 Subject: [PATCH 108/295] Make alias `Ractor#value` only if undefined `Ractor#value` replaces `Ractor#take`; if the former is defined the latter is undefined, and vice versa. --- test/rubygems/test_gem_package_tar_header_ractor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/rubygems/test_gem_package_tar_header_ractor.rb b/test/rubygems/test_gem_package_tar_header_ractor.rb index 27d61feef0fe..98fac2802c31 100644 --- a/test/rubygems/test_gem_package_tar_header_ractor.rb +++ b/test/rubygems/test_gem_package_tar_header_ractor.rb @@ -29,7 +29,7 @@ class TestGemPackageTarHeaderRactor < Gem::Package::TarTestCase # Move this require to arguments of assert_ractor after Ruby 4.0 or updating core_assertions.rb at Ruby 3.4. require "stringio" # Remove this after Ruby 4.0 or updating core_assertions.rb at Ruby 3.4. - class Ractor; alias value take; end + class Ractor; alias value take unless method_defined?(:value); end RUBY def test_decode_in_ractor From 5cc0c34e64f174345a461c7af2c248ebf845d1c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Mon, 23 Jun 2025 13:26:52 +0200 Subject: [PATCH 109/295] We don't need to allow some warning because: Always build gems with RubyGems programmatically --- bundler/spec/commands/install_spec.rb | 2 +- bundler/spec/support/helpers.rb | 16 +--------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/bundler/spec/commands/install_spec.rb b/bundler/spec/commands/install_spec.rb index 8506005746a2..c3d0f281a0c1 100644 --- a/bundler/spec/commands/install_spec.rb +++ b/bundler/spec/commands/install_spec.rb @@ -118,7 +118,7 @@ it "does not state that it's constantly reinstalling empty gems" do build_repo4 do - build_gem "empty", "1.0.0", no_default: true, allowed_warning: "no files specified" + build_gem "empty", "1.0.0", no_default: true end install_gemfile <<~G diff --git a/bundler/spec/support/helpers.rb b/bundler/spec/support/helpers.rb index 719a6e65d262..12ff09b714a0 100644 --- a/bundler/spec/support/helpers.rb +++ b/bundler/spec/support/helpers.rb @@ -192,13 +192,7 @@ def gem_command(command, options = {}) # command is expired too. So give `gem install` commands a bit more time. options[:timeout] = 120 - allowed_warning = options.delete(:allowed_warning) - - output = sys_exec("#{Path.gem_bin} #{command}", options) - stderr = last_command.stderr - - raise stderr if stderr.include?("WARNING") && !allowed_rubygems_warning?(stderr, allowed_warning) - output + sys_exec("#{Path.gem_bin} #{command}", options) end def sys_exec(cmd, options = {}, &block) @@ -537,14 +531,6 @@ def empty_repo4 private - def allowed_rubygems_warning?(text, extra_allowed_warning) - allowed_warnings = ["open-ended", "is a symlink", "rake based", "expected RubyGems version"] - allowed_warnings << extra_allowed_warning if extra_allowed_warning - allowed_warnings.any? do |warning| - text.include?(warning) - end - end - def match_source(contents) match = /source ["']?(?http[^"']+)["']?/.match(contents) return unless match From 2244cb394edeb973780c379f4f9fc5d951e4d248 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 13 Nov 2025 14:04:20 +0900 Subject: [PATCH 110/295] Run all tests of test-all. We should test them for Ractor usage. --- .github/workflows/ruby-core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ruby-core.yml b/.github/workflows/ruby-core.yml index 8f5414afd1e7..19ae1a0038a8 100644 --- a/.github/workflows/ruby-core.yml +++ b/.github/workflows/ruby-core.yml @@ -50,7 +50,7 @@ jobs: mv spec/bundler/support/bundle spec/bin/bundle # TODO: fix `sync_default_gems.rb` script so we don't need to vendor the ruby-core binstub ourselves working-directory: ruby/ruby - name: Test RubyGems - run: make -j2 -s test-all TESTS="rubygems --no-retry" + run: make -j2 -s test-all TESTS="--no-retry" working-directory: ruby/ruby if: matrix.target == 'Rubygems' - name: Test Bundler From 6b6ff9e2318f774617e862ea2e93a37024e00de6 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 13 Nov 2025 14:08:33 +0900 Subject: [PATCH 111/295] Use parallel execution for test-all correctly --- .github/workflows/ruby-core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ruby-core.yml b/.github/workflows/ruby-core.yml index 19ae1a0038a8..4bd99b0a8878 100644 --- a/.github/workflows/ruby-core.yml +++ b/.github/workflows/ruby-core.yml @@ -50,7 +50,7 @@ jobs: mv spec/bundler/support/bundle spec/bin/bundle # TODO: fix `sync_default_gems.rb` script so we don't need to vendor the ruby-core binstub ourselves working-directory: ruby/ruby - name: Test RubyGems - run: make -j2 -s test-all TESTS="--no-retry" + run: make -s test-all TESTS="--no-retry -j4" working-directory: ruby/ruby if: matrix.target == 'Rubygems' - name: Test Bundler From 96395e1bf18f408b9da8d7c67bf9c961396caa70 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 13 Nov 2025 14:13:44 +0900 Subject: [PATCH 112/295] Increase make jobs --- .github/workflows/ruby-core.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ruby-core.yml b/.github/workflows/ruby-core.yml index 4bd99b0a8878..05efd9f591fb 100644 --- a/.github/workflows/ruby-core.yml +++ b/.github/workflows/ruby-core.yml @@ -38,7 +38,7 @@ jobs: run: | ./autogen.sh ./configure -C --disable-install-doc - make -j2 + make -j4 working-directory: ruby/ruby - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: From 6a0e3a614048d7cee1238c0a455be7472941e6b1 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 13 Nov 2025 14:49:49 +0900 Subject: [PATCH 113/295] Use nproc instead of hard-coded CPU number --- .github/workflows/ruby-core.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ruby-core.yml b/.github/workflows/ruby-core.yml index 05efd9f591fb..199f7fb7024b 100644 --- a/.github/workflows/ruby-core.yml +++ b/.github/workflows/ruby-core.yml @@ -36,9 +36,10 @@ jobs: sudo apt-get install --no-install-recommends -q -y build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev bison autoconf ruby - name: Build Ruby run: | + export GNUMAKEFLAGS="-j$((1 + $(nproc)))" ./autogen.sh ./configure -C --disable-install-doc - make -j4 + make working-directory: ruby/ruby - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: @@ -50,7 +51,7 @@ jobs: mv spec/bundler/support/bundle spec/bin/bundle # TODO: fix `sync_default_gems.rb` script so we don't need to vendor the ruby-core binstub ourselves working-directory: ruby/ruby - name: Test RubyGems - run: make -s test-all TESTS="--no-retry -j4" + run: make -s test-all TESTS="--no-retry -j$((1 + $(nproc)))" working-directory: ruby/ruby if: matrix.target == 'Rubygems' - name: Test Bundler From d3baf4110e4938b926a602d32fab0ffa4c007c63 Mon Sep 17 00:00:00 2001 From: Jimmy Lin Date: Sun, 5 Sep 2021 20:38:49 +0900 Subject: [PATCH 114/295] Fix triple spacing when generating lockfile --- bundler/lib/bundler/lockfile_generator.rb | 2 +- bundler/spec/bundler/definition_spec.rb | 8 +- bundler/spec/cache/git_spec.rb | 2 +- bundler/spec/commands/cache_spec.rb | 10 +- bundler/spec/commands/check_spec.rb | 6 +- bundler/spec/commands/install_spec.rb | 28 ++-- bundler/spec/commands/lock_spec.rb | 114 +++++++-------- bundler/spec/commands/outdated_spec.rb | 6 +- bundler/spec/commands/platform_spec.rb | 4 +- bundler/spec/commands/update_spec.rb | 50 +++---- bundler/spec/install/deploy_spec.rb | 2 +- .../gemfile/force_ruby_platform_spec.rb | 2 +- bundler/spec/install/gemfile/gemspec_spec.rb | 12 +- bundler/spec/install/gemfile/git_spec.rb | 4 +- .../spec/install/gemfile/install_if_spec.rb | 2 +- bundler/spec/install/gemfile/path_spec.rb | 18 +-- bundler/spec/install/gemfile/platform_spec.rb | 10 +- bundler/spec/install/gemfile/ruby_spec.rb | 2 +- bundler/spec/install/gemfile/sources_spec.rb | 10 +- .../install/gemfile/specific_platform_spec.rb | 86 +++++------ .../spec/install/gems/compact_index_spec.rb | 2 +- bundler/spec/install/gems/flex_spec.rb | 6 +- bundler/spec/install/gems/resolving_spec.rb | 16 +-- bundler/spec/install/git_spec.rb | 2 +- bundler/spec/install/yanked_spec.rb | 6 +- bundler/spec/lock/git_spec.rb | 10 +- bundler/spec/lock/lockfile_spec.rb | 136 +++++++++--------- bundler/spec/other/major_deprecation_spec.rb | 6 +- bundler/spec/plugins/source/example_spec.rb | 8 +- bundler/spec/runtime/inline_spec.rb | 4 +- bundler/spec/runtime/platform_spec.rb | 10 +- bundler/spec/runtime/setup_spec.rb | 4 +- bundler/spec/update/git_spec.rb | 2 +- 33 files changed, 295 insertions(+), 295 deletions(-) diff --git a/bundler/lib/bundler/lockfile_generator.rb b/bundler/lib/bundler/lockfile_generator.rb index 904552fa0c8e..6b6cf9d9eaee 100644 --- a/bundler/lib/bundler/lockfile_generator.rb +++ b/bundler/lib/bundler/lockfile_generator.rb @@ -95,7 +95,7 @@ def add_section(name, value) out << " #{key}: #{val}\n" end when String - out << " #{value}\n" + out << " #{value}\n" else raise ArgumentError, "#{value.inspect} can't be serialized in a lockfile" end diff --git a/bundler/spec/bundler/definition_spec.rb b/bundler/spec/bundler/definition_spec.rb index 67fc51e86af0..9524c70193eb 100644 --- a/bundler/spec/bundler/definition_spec.rb +++ b/bundler/spec/bundler/definition_spec.rb @@ -80,7 +80,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -137,7 +137,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G expect(lockfile).to eq(expected_lockfile) @@ -175,7 +175,7 @@ only_java #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -205,7 +205,7 @@ foo #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end end diff --git a/bundler/spec/cache/git_spec.rb b/bundler/spec/cache/git_spec.rb index 149fad283844..860f97d43421 100644 --- a/bundler/spec/cache/git_spec.rb +++ b/bundler/spec/cache/git_spec.rb @@ -418,7 +418,7 @@ foo! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L # Simulate an old incorrect situation where vendor/cache would be the install location of git gems diff --git a/bundler/spec/commands/cache_spec.rb b/bundler/spec/commands/cache_spec.rb index 1e90f01ce7f8..2414e1ca02e4 100644 --- a/bundler/spec/commands/cache_spec.rb +++ b/bundler/spec/commands/cache_spec.rb @@ -293,7 +293,7 @@ myrack-obama BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle :cache, raise_on_error: false expect(exitstatus).to eq(16) @@ -322,7 +322,7 @@ myrack BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L FileUtils.mkdir_p app_cache @@ -359,7 +359,7 @@ bar BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "cache --no-install" @@ -502,7 +502,7 @@ foo BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "x86_64-linux" do @@ -589,7 +589,7 @@ bcrypt_pbkdf BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "arm64-darwin-23" do diff --git a/bundler/spec/commands/check_spec.rb b/bundler/spec/commands/check_spec.rb index ecc23c772f18..72da24fb0b2d 100644 --- a/bundler/spec/commands/check_spec.rb +++ b/bundler/spec/commands/check_spec.rb @@ -336,7 +336,7 @@ myrack BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -411,7 +411,7 @@ depends_on_myrack! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -482,7 +482,7 @@ dex-dispatch-engine! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end diff --git a/bundler/spec/commands/install_spec.rb b/bundler/spec/commands/install_spec.rb index c3d0f281a0c1..3ab7d4ab8800 100644 --- a/bundler/spec/commands/install_spec.rb +++ b/bundler/spec/commands/install_spec.rb @@ -346,7 +346,7 @@ myrack BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install", raise_on_error: false @@ -764,10 +764,10 @@ DEPENDENCIES #{checksums} RUBY VERSION - #{Bundler::RubyVersion.system} + #{Bundler::RubyVersion.system} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -790,10 +790,10 @@ DEPENDENCIES #{checksums} RUBY VERSION - #{Bundler::RubyVersion.system} + #{Bundler::RubyVersion.system} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1330,7 +1330,7 @@ def run libv8 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform("x86_64-linux", &example) @@ -1357,7 +1357,7 @@ def run libv8 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1433,7 +1433,7 @@ def run #{Bundler::RubyVersion.system} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1474,10 +1474,10 @@ def run loofah (~> 2.12.0) #{checksums} RUBY VERSION - #{Bundler::RubyVersion.system} + #{Bundler::RubyVersion.system} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1507,7 +1507,7 @@ def run myrack_middleware BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1754,7 +1754,7 @@ def run zzz! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1845,7 +1845,7 @@ def run mypsych (~> 4.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<~G @@ -1868,7 +1868,7 @@ def run mypsych (~> 5.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end diff --git a/bundler/spec/commands/lock_spec.rb b/bundler/spec/commands/lock_spec.rb index b7f475f72a7f..6ba69d466a9b 100644 --- a/bundler/spec/commands/lock_spec.rb +++ b/bundler/spec/commands/lock_spec.rb @@ -46,7 +46,7 @@ weakling #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -95,7 +95,7 @@ weakling #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -294,7 +294,7 @@ foo #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L expect(out).to match(/Writing lockfile to.+CustomGemfile\.lock/) expect(read_lockfile("CustomGemfile.lock")).to eq(lockfile) @@ -339,7 +339,7 @@ warning BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock --update foo --lockfile=lock" @@ -399,7 +399,7 @@ weakling #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L expect(out).to match(/Writing lockfile to.+lock/) @@ -453,7 +453,7 @@ weakling #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile lockfile_with_outdated_rails_and_rake @@ -510,7 +510,7 @@ tapioca BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock --update tapioca --verbose" @@ -576,7 +576,7 @@ tapioca BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock --update tapioca" @@ -649,7 +649,7 @@ rake BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock --update rake --verbose" @@ -806,7 +806,7 @@ sequel BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app_gemfile) @@ -832,14 +832,14 @@ lockfile lockfile.sub(/(^\s*)#{Bundler::VERSION}($)/, '\11.0.0\2') bundle "lock --update --bundler --verbose", artifice: "compact_index", env: { "BUNDLER_SPEC_GEM_REPO" => gem_repo4.to_s } - expect(lockfile).to end_with("BUNDLED WITH\n 55\n") + expect(lockfile).to end_with("BUNDLED WITH\n 55\n") update_repo4 do build_gem "bundler", "99" end bundle "lock --update --bundler --verbose", artifice: "compact_index", env: { "BUNDLER_SPEC_GEM_REPO" => gem_repo4.to_s } - expect(lockfile).to end_with("BUNDLED WITH\n 99\n") + expect(lockfile).to end_with("BUNDLED WITH\n 99\n") end it "supports adding new platforms when there's no previous lockfile" do @@ -894,7 +894,7 @@ foo BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock --add-platform java" @@ -914,7 +914,7 @@ foo BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1010,7 +1010,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L checksums.delete("nokogiri", Gem::Platform::RUBY) @@ -1032,7 +1032,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1109,7 +1109,7 @@ mixlib-shellout #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G bundle "config set --local force_ruby_platform true" @@ -1141,7 +1141,7 @@ mixlib-shellout #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1178,7 +1178,7 @@ libv8 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G simulate_platform("x86_64-darwin-19") { bundle "lock --update" } @@ -1225,7 +1225,7 @@ libv8 #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1265,7 +1265,7 @@ libv8 #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G previous_lockfile = lockfile @@ -1318,7 +1318,7 @@ raygun-apm BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock --add-platform x86_64-linux" @@ -1352,7 +1352,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "x86_64-linux" do @@ -1374,7 +1374,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1404,7 +1404,7 @@ sorbet-static BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "x86_64-linux" do @@ -1446,7 +1446,7 @@ our_private_gem BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install", artifice: "compact_index", env: { "BUNDLER_SPEC_GEM_REPO" => gem_repo4.to_s } @@ -1510,7 +1510,7 @@ weakling #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L expect(read_lockfile).to eq(expected_lockfile) @@ -1564,7 +1564,7 @@ weakling #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L expect(read_lockfile).to eq(expected_lockfile) @@ -1618,7 +1618,7 @@ debug #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "arm64-darwin-22" do @@ -1641,7 +1641,7 @@ debug #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1699,7 +1699,7 @@ foo #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1802,7 +1802,7 @@ ransack (= 3.1.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L expected_error = <<~ERR.strip @@ -1944,7 +1944,7 @@ nogokiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "x86_64-linux" do @@ -1971,7 +1971,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2004,7 +2004,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "x86_64-linux" do @@ -2031,7 +2031,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2064,7 +2064,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "x86_64-linux" do @@ -2093,7 +2093,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2133,7 +2133,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2170,7 +2170,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2210,7 +2210,7 @@ warning #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2228,7 +2228,7 @@ warning BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L gemfile(<<~G) @@ -2261,7 +2261,7 @@ warning (18.0.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2342,7 +2342,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2372,7 +2372,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2407,7 +2407,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -2462,7 +2462,7 @@ govuk_app_config BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2498,7 +2498,7 @@ govuk_app_config #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -2534,7 +2534,7 @@ ffi BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2558,7 +2558,7 @@ ffi BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -2580,7 +2580,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2629,7 +2629,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2660,7 +2660,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2709,7 +2709,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2737,7 +2737,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2765,7 +2765,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2795,7 +2795,7 @@ sorbet-static BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/commands/outdated_spec.rb b/bundler/spec/commands/outdated_spec.rb index 3eeac7f624b6..d8633d12e82b 100644 --- a/bundler/spec/commands/outdated_spec.rb +++ b/bundler/spec/commands/outdated_spec.rb @@ -485,7 +485,7 @@ def test_group_option(group) zeitwerk BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "outdated zeitwerk", raise_on_error: false @@ -1297,7 +1297,7 @@ def test_group_option(group) nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L gemfile <<-G @@ -1351,7 +1351,7 @@ def test_group_option(group) mini_portile2 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/commands/platform_spec.rb b/bundler/spec/commands/platform_spec.rb index d42fa2adb365..71ccbb0909bd 100644 --- a/bundler/spec/commands/platform_spec.rb +++ b/bundler/spec/commands/platform_spec.rb @@ -227,7 +227,7 @@ ruby 1.0.0p127 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "platform --ruby" @@ -250,7 +250,7 @@ DEPENDENCIES BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "platform --ruby" diff --git a/bundler/spec/commands/update_spec.rb b/bundler/spec/commands/update_spec.rb index 299285ba8b01..92b9e4df0a6b 100644 --- a/bundler/spec/commands/update_spec.rb +++ b/bundler/spec/commands/update_spec.rb @@ -313,7 +313,7 @@ country_select #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L previous_lockfile = lockfile @@ -374,7 +374,7 @@ quickbooks-ruby BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "update --conservative --verbose" @@ -435,7 +435,7 @@ sneakers BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "update --verbose" @@ -480,7 +480,7 @@ solargraph (~> 0.56.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock --update solargraph" @@ -544,7 +544,7 @@ sidekiq (~> 6.5) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile original_lockfile @@ -656,7 +656,7 @@ activesupport (~> 6.0.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "update activesupport" @@ -708,7 +708,7 @@ myrack-obama BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -1037,7 +1037,7 @@ request_store BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1074,7 +1074,7 @@ request_store BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1321,7 +1321,7 @@ DEPENDENCIES #{checksums_section_when_enabled} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1353,10 +1353,10 @@ DEPENDENCIES #{checksums_section_when_enabled} RUBY VERSION - #{Bundler::RubyVersion.system} + #{Bundler::RubyVersion.system} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1398,7 +1398,7 @@ ruby 2.1.4p222 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L gemfile <<-G @@ -1423,10 +1423,10 @@ CHECKSUMS RUBY VERSION - #{Bundler::RubyVersion.system} + #{Bundler::RubyVersion.system} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1460,7 +1460,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile lockfile.sub(/(^\s*)#{Bundler::VERSION}($)/, '\11.0.0\2') @@ -1480,7 +1480,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L expect(the_bundle).to include_gem "myrack 1.0" @@ -1518,7 +1518,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L expect(the_bundle).to include_gem "myrack 1.0" @@ -1563,7 +1563,7 @@ myrack #{checksums} BUNDLED WITH - 999.0.0 + 999.0.0 L expect(the_bundle).to include_gems "bundler 999.0.0" @@ -1645,7 +1645,7 @@ myrack #{checksums} BUNDLED WITH - 9.9.9 + 9.9.9 L expect(the_bundle).to include_gems "bundler 9.9.9" @@ -1720,7 +1720,7 @@ myrack #{checksums} BUNDLED WITH - 9.0.0.dev + 9.0.0.dev L expect(out).to include("Using bundler 9.0.0.dev") @@ -1760,7 +1760,7 @@ myrack #{checksums} BUNDLED WITH - 9.0.0 + 9.0.0 L expect(out).to include("Using bundler 9.0.0") @@ -1953,7 +1953,7 @@ CHECKSUMS BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2014,7 +2014,7 @@ shared_owner_b #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2068,7 +2068,7 @@ nokogiri (>= 1.16.4) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/install/deploy_spec.rb b/bundler/spec/install/deploy_spec.rb index 7d10ef059407..6d845e03d190 100644 --- a/bundler/spec/install/deploy_spec.rb +++ b/bundler/spec/install/deploy_spec.rb @@ -251,7 +251,7 @@ bar BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle :install, env: { "BUNDLE_FROZEN" => "true" }, raise_on_error: false, artifice: "compact_index" diff --git a/bundler/spec/install/gemfile/force_ruby_platform_spec.rb b/bundler/spec/install/gemfile/force_ruby_platform_spec.rb index 926e7527e667..bcc1f3682304 100644 --- a/bundler/spec/install/gemfile/force_ruby_platform_spec.rb +++ b/bundler/spec/install/gemfile/force_ruby_platform_spec.rb @@ -117,7 +117,7 @@ platform_specific BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "x86-darwin-100" do diff --git a/bundler/spec/install/gemfile/gemspec_spec.rb b/bundler/spec/install/gemfile/gemspec_spec.rb index d9469e5ca8f0..daa977fc9b7f 100644 --- a/bundler/spec/install/gemfile/gemspec_spec.rb +++ b/bundler/spec/install/gemfile/gemspec_spec.rb @@ -380,7 +380,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -483,7 +483,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -524,7 +524,7 @@ platform_specific #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -569,7 +569,7 @@ indirect_platform_specific #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -657,7 +657,7 @@ chef! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile initial_lockfile @@ -720,7 +720,7 @@ jruby-openssl #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L gemspec = tmp("activeadmin/activeadmin.gemspec") diff --git a/bundler/spec/install/gemfile/git_spec.rb b/bundler/spec/install/gemfile/git_spec.rb index faf938383269..ed1c52f099e3 100644 --- a/bundler/spec/install/gemfile/git_spec.rb +++ b/bundler/spec/install/gemfile/git_spec.rb @@ -59,7 +59,7 @@ foo (1.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "config set frozen true" @@ -1638,7 +1638,7 @@ rake! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L with_path_as("") do diff --git a/bundler/spec/install/gemfile/install_if_spec.rb b/bundler/spec/install/gemfile/install_if_spec.rb index 170b58c4c0dc..05a6d1512960 100644 --- a/bundler/spec/install/gemfile/install_if_spec.rb +++ b/bundler/spec/install/gemfile/install_if_spec.rb @@ -45,7 +45,7 @@ thin #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end diff --git a/bundler/spec/install/gemfile/path_spec.rb b/bundler/spec/install/gemfile/path_spec.rb index b55fe3dbbf1e..13a8c663e093 100644 --- a/bundler/spec/install/gemfile/path_spec.rb +++ b/bundler/spec/install/gemfile/path_spec.rb @@ -109,7 +109,7 @@ demo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle :install, dir: lib_path("demo") @@ -346,7 +346,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile lockfile_path, original_lockfile @@ -661,7 +661,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G build_lib "foo", "1.0", path: lib_path("foo") do |s| @@ -689,7 +689,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G expect(the_bundle).to include_gems "myrack 0.9.1" @@ -728,7 +728,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G build_lib "foo", "1.0", path: lib_path("foo") do |s| @@ -761,7 +761,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G expect(the_bundle).to include_gems "myrack 0.9.1" @@ -789,7 +789,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock" @@ -815,7 +815,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end end @@ -860,7 +860,7 @@ nokogiri! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/install/gemfile/platform_spec.rb b/bundler/spec/install/gemfile/platform_spec.rb index 5ed5e6618552..6c5e5452c973 100644 --- a/bundler/spec/install/gemfile/platform_spec.rb +++ b/bundler/spec/install/gemfile/platform_spec.rb @@ -235,7 +235,7 @@ pry #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock --add-platform ruby" @@ -269,7 +269,7 @@ pry #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L expect(lockfile).to eq good_lockfile @@ -420,7 +420,7 @@ platform_specific #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end end @@ -486,7 +486,7 @@ tzinfo (~> 1.2) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install --verbose" @@ -589,7 +589,7 @@ myrack #{checksums_section_when_enabled} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/install/gemfile/ruby_spec.rb b/bundler/spec/install/gemfile/ruby_spec.rb index 313babc81d75..d937abd71417 100644 --- a/bundler/spec/install/gemfile/ruby_spec.rb +++ b/bundler/spec/install/gemfile/ruby_spec.rb @@ -86,7 +86,7 @@ def locked_ruby_version ruby 2.1.4 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app_gemfile) diff --git a/bundler/spec/install/gemfile/sources_spec.rb b/bundler/spec/install/gemfile/sources_spec.rb index c2a0905d2151..bdc61c2b2694 100644 --- a/bundler/spec/install/gemfile/sources_spec.rb +++ b/bundler/spec/install/gemfile/sources_spec.rb @@ -440,7 +440,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install --verbose", artifice: "compact_index" @@ -867,7 +867,7 @@ ruport (= 1.7.0.3)! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -925,7 +925,7 @@ ruport (= 1.7.0.3)! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -970,7 +970,7 @@ pdf-writer (= 1.1.8) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1038,7 +1038,7 @@ foo! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/install/gemfile/specific_platform_spec.rb b/bundler/spec/install/gemfile/specific_platform_spec.rb index 09ed9a4faaa7..39d2700474a7 100644 --- a/bundler/spec/install/gemfile/specific_platform_spec.rb +++ b/bundler/spec/install/gemfile/specific_platform_spec.rb @@ -54,7 +54,7 @@ sass-embedded BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install --verbose" @@ -88,7 +88,7 @@ google-protobuf BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L # force strict usage of the lockfile by setting frozen mode @@ -126,7 +126,7 @@ google-protobuf #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "update" @@ -151,7 +151,7 @@ google-protobuf #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -185,7 +185,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "arm64-darwin-22", &example @@ -235,7 +235,7 @@ libv8 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install --verbose" @@ -273,7 +273,7 @@ grpc BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install --verbose", artifice: "compact_index_precompiled_before" @@ -333,7 +333,7 @@ pg_array_parser! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "cache --all-platforms" @@ -433,7 +433,7 @@ sorbet-static (= 0.5.6403) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install --verbose" @@ -580,7 +580,7 @@ sorbet-static-and-runtime BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "update" @@ -611,7 +611,7 @@ sorbet-static-and-runtime #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -663,7 +663,7 @@ sorbet-static #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "x86_64-darwin-22" do @@ -685,7 +685,7 @@ sorbet-static #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -732,7 +732,7 @@ sorbet-static-and-runtime BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "update" @@ -763,7 +763,7 @@ sorbet-static-and-runtime #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -807,7 +807,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock" @@ -836,7 +836,7 @@ sorbet #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -881,7 +881,7 @@ sorbet-static BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "update" @@ -906,7 +906,7 @@ sorbet-static #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -949,7 +949,7 @@ sorbet-static (= 0.5.10549) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -968,7 +968,7 @@ sorbet-static (= 0.5.10549) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1005,7 +1005,7 @@ ibandit (~> 0.7.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock --update i18n" @@ -1025,7 +1025,7 @@ ibandit (~> 0.7.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1066,7 +1066,7 @@ tzinfo (~> 1.2) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile original_lockfile @@ -1110,7 +1110,7 @@ tzinfo (~> 1.2) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile original_lockfile @@ -1153,7 +1153,7 @@ concurrent-ruby #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock" @@ -1173,7 +1173,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1204,7 +1204,7 @@ my-precompiled-gem BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle :install @@ -1249,7 +1249,7 @@ nokogiri (= 1.14.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle :install @@ -1273,7 +1273,7 @@ nokogiri (= 1.14.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1307,7 +1307,7 @@ DEPENDENCIES BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock" @@ -1327,7 +1327,7 @@ sorbet BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1389,7 +1389,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L gemfile <<~G @@ -1426,7 +1426,7 @@ sorbet-static #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1481,7 +1481,7 @@ sass-embedded #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1523,7 +1523,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1570,7 +1570,7 @@ rcee_precompiled (= 0.5.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1617,7 +1617,7 @@ rcee_precompiled (= 0.5.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1655,7 +1655,7 @@ rcee_precompiled (= 0.5.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1684,7 +1684,7 @@ nokogiri! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "arm64-darwin-23" do @@ -1727,7 +1727,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile original_lockfile @@ -1778,7 +1778,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile original_lockfile @@ -1820,7 +1820,7 @@ google-protobuf (~> 3.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile original_lockfile diff --git a/bundler/spec/install/gems/compact_index_spec.rb b/bundler/spec/install/gems/compact_index_spec.rb index 32a42aa93a48..cd64f85f9295 100644 --- a/bundler/spec/install/gems/compact_index_spec.rb +++ b/bundler/spec/install/gems/compact_index_spec.rb @@ -905,7 +905,7 @@ def start DEPENDENCIES #{checksums_section} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/install/gems/flex_spec.rb b/bundler/spec/install/gems/flex_spec.rb index 522ee6b779c4..b34dbbfa2a57 100644 --- a/bundler/spec/install/gems/flex_spec.rb +++ b/bundler/spec/install/gems/flex_spec.rb @@ -289,7 +289,7 @@ myrack-obama #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -317,7 +317,7 @@ myrack-obama #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -358,7 +358,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end diff --git a/bundler/spec/install/gems/resolving_spec.rb b/bundler/spec/install/gems/resolving_spec.rb index 21e4a12107dd..f59bb70c7b3f 100644 --- a/bundler/spec/install/gems/resolving_spec.rb +++ b/bundler/spec/install/gems/resolving_spec.rb @@ -275,7 +275,7 @@ parallel_tests #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -299,7 +299,7 @@ parallel_tests #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -361,7 +361,7 @@ parallel_tests #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -388,7 +388,7 @@ rubocop #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -425,7 +425,7 @@ sorbet (= 0.5.10554) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -475,7 +475,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L gemfile <<~G @@ -517,7 +517,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -776,7 +776,7 @@ foo #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end diff --git a/bundler/spec/install/git_spec.rb b/bundler/spec/install/git_spec.rb index f9d96e488f9d..aa707a022290 100644 --- a/bundler/spec/install/git_spec.rb +++ b/bundler/spec/install/git_spec.rb @@ -157,7 +157,7 @@ test! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L # If GH#6743 is present, the first `bundle install` will change the diff --git a/bundler/spec/install/yanked_spec.rb b/bundler/spec/install/yanked_spec.rb index ffe962d9f37c..08d6bbdc2a3a 100644 --- a/bundler/spec/install/yanked_spec.rb +++ b/bundler/spec/install/yanked_spec.rb @@ -47,7 +47,7 @@ foo (= 1.0.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -154,7 +154,7 @@ bar BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L gemfile <<-G @@ -182,7 +182,7 @@ foo BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end diff --git a/bundler/spec/lock/git_spec.rb b/bundler/spec/lock/git_spec.rb index 4e416518305a..c9f76115dc51 100644 --- a/bundler/spec/lock/git_spec.rb +++ b/bundler/spec/lock/git_spec.rb @@ -60,7 +60,7 @@ foo! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install", raise_on_error: false @@ -123,7 +123,7 @@ foo! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -161,7 +161,7 @@ foo! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -206,7 +206,7 @@ activesupport BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L gemfile <<~G @@ -243,7 +243,7 @@ ruby-lsp! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L gemfile <<~G diff --git a/bundler/spec/lock/lockfile_spec.rb b/bundler/spec/lock/lockfile_spec.rb index d56f7834eb4f..dcefe9cc2a2e 100644 --- a/bundler/spec/lock/lockfile_spec.rb +++ b/bundler/spec/lock/lockfile_spec.rb @@ -29,7 +29,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -80,7 +80,7 @@ myrack BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -168,7 +168,7 @@ myrack (> 0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -215,7 +215,7 @@ myrack BUNDLED WITH - #{current_version} + #{current_version} G end @@ -246,7 +246,7 @@ myrack-obama #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -277,7 +277,7 @@ myrack-obama (>= 1.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -324,7 +324,7 @@ myrack-obama (>= 1.0)! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -371,7 +371,7 @@ myrack-obama (>= 1.0)! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile lockfile_without_credentials @@ -432,7 +432,7 @@ myrack-obama (>= 1.0)! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile lockfile_with_credentials @@ -468,7 +468,7 @@ net-sftp #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G expect(the_bundle).to include_gems "net-sftp 1.1.1", "net-ssh 1.0.0" @@ -504,7 +504,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -540,7 +540,7 @@ myrack BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -579,7 +579,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -615,7 +615,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -651,7 +651,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -710,7 +710,7 @@ ckeditor! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock" @@ -737,7 +737,7 @@ ckeditor! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -770,7 +770,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -806,7 +806,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -854,7 +854,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -882,7 +882,7 @@ myrack! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -925,7 +925,7 @@ thin #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -974,7 +974,7 @@ rails #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1015,7 +1015,7 @@ double_deps #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1046,7 +1046,7 @@ myrack-obama (>= 1.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1077,7 +1077,7 @@ myrack-obama (>= 1.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1112,7 +1112,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1147,7 +1147,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1182,7 +1182,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1215,7 +1215,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1237,7 +1237,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G install_gemfile <<-G @@ -1261,7 +1261,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1305,7 +1305,7 @@ google-protobuf #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -1340,7 +1340,7 @@ platform_specific #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end end @@ -1377,7 +1377,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1405,7 +1405,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1433,7 +1433,7 @@ myrack (= 1.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1461,7 +1461,7 @@ myrack (= 1.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1510,7 +1510,7 @@ myrack (> 0.9, < 1.0) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1538,10 +1538,10 @@ myrack (> 0.9, < 1.0) #{checksums} RUBY VERSION - #{Bundler::RubyVersion.system} + #{Bundler::RubyVersion.system} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1559,7 +1559,7 @@ myrack_middleware BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<-G @@ -1582,7 +1582,7 @@ myrack_middleware BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1600,7 +1600,7 @@ myrack_middleware BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<-G, env: { "BUNDLE_FROZEN" => "true" }, raise_on_error: false @@ -1628,7 +1628,7 @@ CHECKSUMS BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<-G, env: { "BUNDLE_FROZEN" => "true" }, raise_on_error: false @@ -1662,7 +1662,7 @@ myrack (0.9.1) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<-G, env: { "BUNDLE_FROZEN" => "true" }, raise_on_error: false @@ -1707,7 +1707,7 @@ other_dep BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<-G @@ -1734,7 +1734,7 @@ other_dep BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1769,7 +1769,7 @@ another_dep_middleware BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<-G @@ -1797,7 +1797,7 @@ myrack_middleware BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1829,7 +1829,7 @@ other_dep BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<-G, raise_on_error: false @@ -1872,7 +1872,7 @@ direct_dependency BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G install_gemfile <<-G @@ -1896,7 +1896,7 @@ direct_dependency BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -1914,7 +1914,7 @@ myrack_middleware BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<-G @@ -1937,7 +1937,7 @@ myrack_middleware BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1971,7 +1971,7 @@ foo! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -1994,7 +1994,7 @@ foo! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2028,7 +2028,7 @@ foo (= 1.0)! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -2051,7 +2051,7 @@ foo (= 1.0)! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2087,7 +2087,7 @@ net-smtp BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -2107,7 +2107,7 @@ net-smtp BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2148,7 +2148,7 @@ rack! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -2175,7 +2175,7 @@ rack! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2208,7 +2208,7 @@ minitest-bisect BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L cache_gems "minitest-bisect-1.6.0", "path_expander-1.1.1", gem_repo: gem_repo4 @@ -2229,7 +2229,7 @@ minitest-bisect BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -2274,7 +2274,7 @@ minitest-bisect BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install --verbose" @@ -2295,7 +2295,7 @@ minitest-bisect BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2395,7 +2395,7 @@ def set_lockfile_mtime_to_known_value myrack BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<-G, raise_on_error: false diff --git a/bundler/spec/other/major_deprecation_spec.rb b/bundler/spec/other/major_deprecation_spec.rb index dc96fb852a8b..24d4153dfabe 100644 --- a/bundler/spec/other/major_deprecation_spec.rb +++ b/bundler/spec/other/major_deprecation_spec.rb @@ -507,7 +507,7 @@ DEPENDENCIES BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install", raise_on_error: false @@ -562,7 +562,7 @@ myrack! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -594,7 +594,7 @@ rake BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/plugins/source/example_spec.rb b/bundler/spec/plugins/source/example_spec.rb index da64886f01d2..e64e4d633019 100644 --- a/bundler/spec/plugins/source/example_spec.rb +++ b/bundler/spec/plugins/source/example_spec.rb @@ -92,7 +92,7 @@ def install(spec, opts) a-path-gem! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -177,7 +177,7 @@ def install(spec, opts) a-path-gem! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -360,7 +360,7 @@ def installed? ma-gitp-gem! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end @@ -386,7 +386,7 @@ def installed? ma-gitp-gem! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end diff --git a/bundler/spec/runtime/inline_spec.rb b/bundler/spec/runtime/inline_spec.rb index cffaab35799a..e55d029a4b68 100644 --- a/bundler/spec/runtime/inline_spec.rb +++ b/bundler/spec/runtime/inline_spec.rb @@ -380,7 +380,7 @@ def confirm(msg, newline = nil) rake BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G script <<-RUBY @@ -414,7 +414,7 @@ def confirm(msg, newline = nil) rake BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G script <<-RUBY diff --git a/bundler/spec/runtime/platform_spec.rb b/bundler/spec/runtime/platform_spec.rb index cf1f85286f42..68b5626ed4f3 100644 --- a/bundler/spec/runtime/platform_spec.rb +++ b/bundler/spec/runtime/platform_spec.rb @@ -100,7 +100,7 @@ nokogiri (~> 1.11) #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L gemfile <<-G @@ -143,7 +143,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -282,7 +282,7 @@ platform_specific BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -316,7 +316,7 @@ libv8 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" @@ -344,7 +344,7 @@ platform_specific BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install" diff --git a/bundler/spec/runtime/setup_spec.rb b/bundler/spec/runtime/setup_spec.rb index 74ada2f8b3d5..9268d9d1cc45 100644 --- a/bundler/spec/runtime/setup_spec.rb +++ b/bundler/spec/runtime/setup_spec.rb @@ -1261,7 +1261,7 @@ def lock_with(ruby_version = nil) lock += <<~L BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lock @@ -1656,7 +1656,7 @@ def require(path) DEPENDENCIES BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/update/git_spec.rb b/bundler/spec/update/git_spec.rb index aaa039211e2b..526e988ab7c7 100644 --- a/bundler/spec/update/git_spec.rb +++ b/bundler/spec/update/git_spec.rb @@ -334,7 +334,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end end From a65a4b775ec2a94bf8411b4d89aa7e33841b06d2 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 13 Nov 2025 18:25:42 +0900 Subject: [PATCH 115/295] Re-generate lockfile with double spaces --- bundler/spec/realworld/fixtures/tapioca/Gemfile.lock | 2 +- bundler/spec/realworld/fixtures/warbler/Gemfile.lock | 2 +- tool/bundler/dev_gems.rb.lock | 2 +- tool/bundler/lint_gems.rb.lock | 2 +- tool/bundler/release_gems.rb.lock | 2 +- tool/bundler/rubocop_gems.rb.lock | 2 +- tool/bundler/standard_gems.rb.lock | 2 +- tool/bundler/test_gems.rb.lock | 2 +- tool/bundler/vendor_gems.rb.lock | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock index 1b6a649c1faa..2a6c3178ef05 100644 --- a/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock +++ b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock @@ -46,4 +46,4 @@ DEPENDENCIES tapioca BUNDLED WITH - 4.0.0.dev + 4.0.0.dev diff --git a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock index 3a8fb336ff82..7ba3fe68befa 100644 --- a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock +++ b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock @@ -36,4 +36,4 @@ DEPENDENCIES warbler! BUNDLED WITH - 4.0.0.dev + 4.0.0.dev diff --git a/tool/bundler/dev_gems.rb.lock b/tool/bundler/dev_gems.rb.lock index f2a5245ede23..1484573ade43 100644 --- a/tool/bundler/dev_gems.rb.lock +++ b/tool/bundler/dev_gems.rb.lock @@ -129,4 +129,4 @@ CHECKSUMS turbo_tests (2.2.5) sha256=3fa31497d12976d11ccc298add29107b92bda94a90d8a0a5783f06f05102509f BUNDLED WITH - 4.0.0.dev + 4.0.0.dev diff --git a/tool/bundler/lint_gems.rb.lock b/tool/bundler/lint_gems.rb.lock index 9ba2487db8d0..e9efc106de19 100644 --- a/tool/bundler/lint_gems.rb.lock +++ b/tool/bundler/lint_gems.rb.lock @@ -119,4 +119,4 @@ CHECKSUMS wmi-lite (1.0.7) sha256=116ef5bb470dbe60f58c2db9047af3064c16245d6562c646bc0d90877e27ddda BUNDLED WITH - 4.0.0.dev + 4.0.0.dev diff --git a/tool/bundler/release_gems.rb.lock b/tool/bundler/release_gems.rb.lock index 378b895144a0..a011e0181612 100644 --- a/tool/bundler/release_gems.rb.lock +++ b/tool/bundler/release_gems.rb.lock @@ -82,4 +82,4 @@ CHECKSUMS uri (1.0.3) sha256=e9f2244608eea2f7bc357d954c65c910ce0399ca5e18a7a29207ac22d8767011 BUNDLED WITH - 4.0.0.dev + 4.0.0.dev diff --git a/tool/bundler/rubocop_gems.rb.lock b/tool/bundler/rubocop_gems.rb.lock index 04a721296c5e..33297004ad3d 100644 --- a/tool/bundler/rubocop_gems.rb.lock +++ b/tool/bundler/rubocop_gems.rb.lock @@ -148,4 +148,4 @@ CHECKSUMS unicode-emoji (4.0.4) sha256=2c2c4ef7f353e5809497126285a50b23056cc6e61b64433764a35eff6c36532a BUNDLED WITH - 4.0.0.dev + 4.0.0.dev diff --git a/tool/bundler/standard_gems.rb.lock b/tool/bundler/standard_gems.rb.lock index a8a09541c80c..20625ff23856 100644 --- a/tool/bundler/standard_gems.rb.lock +++ b/tool/bundler/standard_gems.rb.lock @@ -168,4 +168,4 @@ CHECKSUMS unicode-emoji (4.0.4) sha256=2c2c4ef7f353e5809497126285a50b23056cc6e61b64433764a35eff6c36532a BUNDLED WITH - 4.0.0.dev + 4.0.0.dev diff --git a/tool/bundler/test_gems.rb.lock b/tool/bundler/test_gems.rb.lock index 6d68728a85ee..76da85f5e4ec 100644 --- a/tool/bundler/test_gems.rb.lock +++ b/tool/bundler/test_gems.rb.lock @@ -100,4 +100,4 @@ CHECKSUMS tilt (2.6.0) sha256=263d748466e0d83e510aa1a2e2281eff547937f0ef06be33d3632721e255f76b BUNDLED WITH - 4.0.0.dev + 4.0.0.dev diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index 0222bd962c42..e960972b0397 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -83,4 +83,4 @@ CHECKSUMS uri (1.0.4) sha256=34485d137c079f8753a0ca1d883841a7ba2e5fae556e3c30c2aab0dde616344b BUNDLED WITH - 4.0.0.dev + 4.0.0.dev From 17b2a26c8ebc62d41fdc88aeb3b19b309c7ea986 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 13 Nov 2025 18:40:11 +0900 Subject: [PATCH 116/295] Ractor support Windows platform. We need to skip only failing tests of RubyGems --- test/rubygems/test_gem_package_tar_header_ractor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/rubygems/test_gem_package_tar_header_ractor.rb b/test/rubygems/test_gem_package_tar_header_ractor.rb index 98fac2802c31..a829ec02121b 100644 --- a/test/rubygems/test_gem_package_tar_header_ractor.rb +++ b/test/rubygems/test_gem_package_tar_header_ractor.rb @@ -58,4 +58,4 @@ def test_encode_in_ractor assert_headers_equal header_bytes, new_header_bytes RUBY end -end +end unless RUBY_PLATFORM =~ /mingw|mswin/ From 93b8492bc0a963cf72c853710fafc757e5f2c439 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 13 Nov 2025 19:47:35 +0900 Subject: [PATCH 117/295] Fixed with Performance/RegexpMatch cop --- test/rubygems/test_gem_package_tar_header_ractor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/rubygems/test_gem_package_tar_header_ractor.rb b/test/rubygems/test_gem_package_tar_header_ractor.rb index a829ec02121b..8f4cfb0072e2 100644 --- a/test/rubygems/test_gem_package_tar_header_ractor.rb +++ b/test/rubygems/test_gem_package_tar_header_ractor.rb @@ -58,4 +58,4 @@ def test_encode_in_ractor assert_headers_equal header_bytes, new_header_bytes RUBY end -end unless RUBY_PLATFORM =~ /mingw|mswin/ +end unless RUBY_PLATFORM.match?(/mingw|mswin/) From 8f0ca5eefa9f20bf32e6ee7e944fff009cdaae71 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 09:57:52 +0900 Subject: [PATCH 118/295] Suppress gem build message of bundler like this: ``` $ rake spec:regular Successfully built RubyGem Name: bundler Version: 4.0.0.dev File: bundler-4.0.0.dev.gem ``` --- bundler/spec/support/builders.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bundler/spec/support/builders.rb b/bundler/spec/support/builders.rb index 1283dc434882..31d4f30a3b96 100644 --- a/bundler/spec/support/builders.rb +++ b/bundler/spec/support/builders.rb @@ -457,7 +457,9 @@ def _build(options = {}) Spec::BuildMetadata.write_build_metadata(dir: build_path, version: @spec.version.to_s) Dir.chdir build_path do - Gem::Package.build(@spec) + Gem::DefaultUserInteraction.use_ui(Gem::SilentUI.new) do + Gem::Package.build(@spec) + end end if block_given? From f02273e0ea7d5595a5740b20dada1aa41c49b260 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 10:10:49 +0900 Subject: [PATCH 119/295] We need to use --all option now --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 00fed0691e71..b93555712494 100644 --- a/Rakefile +++ b/Rakefile @@ -19,7 +19,7 @@ end desc "Update Rubygems dev environment" task :update do - Spec::Rubygems.dev_bundle "update" + Spec::Rubygems.dev_bundle "update", "--all" Dir.glob("tool/bundler/*_gems.rb").each do |file| name = File.basename(file, ".rb") next if name == "dev_gems" From 74c9eaf1f051974ed3cff5724fb6027a1653f18c Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 10:11:08 +0900 Subject: [PATCH 120/295] Update the all dependencies with rake update --- tool/bundler/dev_gems.rb.lock | 84 +++++++-------- tool/bundler/lint_gems.rb.lock | 64 +++++------ tool/bundler/release_gems.rb.lock | 77 ++++++------- tool/bundler/rubocop_gems.rb.lock | 148 +++++++++++++------------ tool/bundler/standard_gems.rb.lock | 168 +++++++++++++++-------------- tool/bundler/test_gems.rb.lock | 66 ++++++------ tool/bundler/vendor_gems.rb.lock | 4 +- 7 files changed, 316 insertions(+), 295 deletions(-) diff --git a/tool/bundler/dev_gems.rb.lock b/tool/bundler/dev_gems.rb.lock index 1484573ade43..dbb6218f9ca9 100644 --- a/tool/bundler/dev_gems.rb.lock +++ b/tool/bundler/dev_gems.rb.lock @@ -2,62 +2,62 @@ GEM remote: https://rubygems.org/ specs: compact_index (0.15.0) - diff-lcs (1.6.1) + diff-lcs (1.6.2) kramdown (2.5.1) rexml (>= 3.3.9) kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) - mini_portile2 (2.8.8) + mini_portile2 (2.8.9) mustache (1.1.1) - nokogiri (1.18.6) + nokogiri (1.18.10) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.18.6-aarch64-linux-gnu) + nokogiri (1.18.10-aarch64-linux-gnu) racc (~> 1.4) - nokogiri (1.18.6-arm-linux-gnu) + nokogiri (1.18.10-arm-linux-gnu) racc (~> 1.4) - nokogiri (1.18.6-arm64-darwin) + nokogiri (1.18.10-arm64-darwin) racc (~> 1.4) - nokogiri (1.18.6-java) + nokogiri (1.18.10-java) racc (~> 1.4) - nokogiri (1.18.6-x64-mingw-ucrt) + nokogiri (1.18.10-x64-mingw-ucrt) racc (~> 1.4) - nokogiri (1.18.6-x86_64-darwin) + nokogiri (1.18.10-x86_64-darwin) racc (~> 1.4) - nokogiri (1.18.6-x86_64-linux-gnu) + nokogiri (1.18.10-x86_64-linux-gnu) racc (~> 1.4) - parallel (1.26.3) + parallel (1.27.0) parallel_tests (4.10.1) parallel - power_assert (2.0.5) + power_assert (3.0.1) racc (1.8.1) racc (1.8.1-java) - rake (13.3.0) + rake (13.3.1) rake-compiler-dock (1.9.1) - rb_sys (0.9.111) + rb_sys (0.9.117) rake-compiler-dock (= 1.9.1) - rexml (3.4.1) + rexml (3.4.4) ronn-ng (0.10.1) kramdown (~> 2, >= 2.1) kramdown-parser-gfm (~> 1, >= 1.0.1) mustache (~> 1) nokogiri (~> 1, >= 1.14.3) - rspec (3.13.0) + rspec (3.13.2) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.3) + rspec-core (3.13.6) rspec-support (~> 3.13.0) - rspec-expectations (3.13.3) + rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.2) + rspec-mocks (3.13.7) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.2) + rspec-support (3.13.6) rubygems-generate_index (1.1.3) compact_index (~> 0.15.0) - test-unit (3.6.7) + test-unit (3.7.1) power_assert test-unit-ruby-core (1.0.13) test-unit @@ -95,36 +95,36 @@ DEPENDENCIES CHECKSUMS compact_index (0.15.0) sha256=5c6c404afca8928a7d9f4dde9524f6e1610db17e675330803055db282da84a8b - diff-lcs (1.6.1) sha256=12a5a83f3e37a8e2f4427268e305914d5f1879f22b4e73bb1a09f76a3dd86cd4 + diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 kramdown (2.5.1) sha256=87bbb6abd9d3cebe4fc1f33e367c392b4500e6f8fa19dd61c0972cf4afe7368c kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 - mini_portile2 (2.8.8) sha256=8e47136cdac04ce81750bb6c09733b37895bf06962554e4b4056d78168d70a75 + mini_portile2 (2.8.9) sha256=0cd7c7f824e010c072e33f68bc02d85a00aeb6fce05bb4819c03dfd3c140c289 mustache (1.1.1) sha256=90891fdd50b53919ca334c8c1031eada1215e78d226d5795e523d6123a2717d0 - nokogiri (1.18.6) sha256=4d283431d7829719ea1287ca388f24c6ce343af736bbcbd1365cbdb83bce41a4 - nokogiri (1.18.6-aarch64-linux-gnu) sha256=1b11f9a814068282cc2b47ebe61395b2a69d1918092d2ca3bd664074f72540e9 - nokogiri (1.18.6-arm-linux-gnu) sha256=2da07a07ef4c9d9e9da809b3dc0937ed90b031e32c2c658d9918941b85d68b95 - nokogiri (1.18.6-arm64-darwin) sha256=727a441d179d934b4b7c73e0e28e6723ee46463d96bb0cc6e2e33a13540962c4 - nokogiri (1.18.6-java) sha256=bf16c53446987007ff3e1deb29d65d20444073ba112cb5bddbd2671135ba293c - nokogiri (1.18.6-x64-mingw-ucrt) sha256=134f6d54f56edd46cb6db77c9d9de1704b3f83b3981a6763671e3cfbeba221f5 - nokogiri (1.18.6-x86_64-darwin) sha256=fb72568c97ccd90a8d68cb765b0ff0720b109bd62e3babbf372e854ef8fef995 - nokogiri (1.18.6-x86_64-linux-gnu) sha256=df065db6ba6e1e80f76ef04f860fcf260cc24685125fe33cdc3d1572a1c66b71 - parallel (1.26.3) sha256=d86babb7a2b814be9f4b81587bf0b6ce2da7d45969fab24d8ae4bf2bb4d4c7ef + nokogiri (1.18.10) sha256=d5cc0731008aa3b3a87b361203ea3d19b2069628cb55e46ac7d84a0445e69cc1 + nokogiri (1.18.10-aarch64-linux-gnu) sha256=7fb87235d729c74a2be635376d82b1d459230cc17c50300f8e4fcaabc6195344 + nokogiri (1.18.10-arm-linux-gnu) sha256=51f4f25ab5d5ba1012d6b16aad96b840a10b067b93f35af6a55a2c104a7ee322 + nokogiri (1.18.10-arm64-darwin) sha256=c2b0de30770f50b92c9323fa34a4e1cf5a0af322afcacd239cd66ee1c1b22c85 + nokogiri (1.18.10-java) sha256=cd431a09c45d84a2f870ba0b7e8f571199b3727d530f2b4888a73639f76510b5 + nokogiri (1.18.10-x64-mingw-ucrt) sha256=64f40d4a41af9f7f83a4e236ad0cf8cca621b97e31f727b1bebdae565a653104 + nokogiri (1.18.10-x86_64-darwin) sha256=536e74bed6db2b5076769cab5e5f5af0cd1dccbbd75f1b3e1fa69d1f5c2d79e2 + nokogiri (1.18.10-x86_64-linux-gnu) sha256=ff5ba26ba2dbce5c04b9ea200777fd225061d7a3930548806f31db907e500f72 + parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 parallel_tests (4.10.1) sha256=df05458c691462b210f7a41fc2651d4e4e8a881e8190e6d1e122c92c07735d70 - power_assert (2.0.5) sha256=63b511b85bb8ea57336d25156864498644f5bbf028699ceda27949e0125bc323 + power_assert (3.0.1) sha256=8ce9876716cc74e863fcd4cdcdc52d792bd983598d1af3447083a3a9a4d34103 racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f racc (1.8.1-java) sha256=54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98 - rake (13.3.0) sha256=96f5092d786ff412c62fde76f793cc0541bd84d2eb579caa529aa8a059934493 + rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c rake-compiler-dock (1.9.1) sha256=e73720a29aba9c114728ce39cc0d8eef69ba61d88e7978c57bac171724cd4d53 - rb_sys (0.9.111) sha256=65822fd8d57c248cd893db0efe01bc6edc15fcbea3ba6666091e35430c1cbaf0 - rexml (3.4.1) sha256=c74527a9a0a04b4ec31dbe0dc4ed6004b960af943d8db42e539edde3a871abca + rb_sys (0.9.117) sha256=755feaf6c640baceca7a9362dfb0ae87ff4ff16e3566d9ef86533896eb85cb59 + rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 ronn-ng (0.10.1) sha256=4eeb0185c0fbfa889efed923b5b50e949cd869e7d82ac74138acd0c9c7165ec0 - rspec (3.13.0) sha256=d490914ac1d5a5a64a0e1400c1d54ddd2a501324d703b8cfe83f458337bab993 - rspec-core (3.13.3) sha256=25136507f4f9cf2e8977a2851e64e438b4331646054e345998714108745cdfe4 - rspec-expectations (3.13.3) sha256=0e6b5af59b900147698ea0ff80456c4f2e69cac4394fbd392fbd1ca561f66c58 - rspec-mocks (3.13.2) sha256=2327335def0e1665325a9b617e3af9ae20272741d80ac550336309a7c59abdef - rspec-support (3.13.2) sha256=cea3a2463fd9b84b9dcc9685efd80ea701aa8f7b3decb3b3ce795ed67737dbec + rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 + rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d + rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 + rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c + rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2 rubygems-generate_index (1.1.3) sha256=3571424322666598e9586a906485e1543b617f87644913eaf137d986a3393f5c - test-unit (3.6.7) sha256=c342bb9f7334ea84a361b43c20b063f405c0bf3c7dbe3ff38f61a91661d29221 + test-unit (3.7.1) sha256=be595279c3427c00f57600db3dd59b6a9596e1f1e447864b158608d8e0d91570 test-unit-ruby-core (1.0.13) sha256=0c08e61b3b97060028a47d8fc4827de077fdbfc26ef80b4afd9035b9e15ecc5b turbo_tests (2.2.5) sha256=3fa31497d12976d11ccc298add29107b92bda94a90d8a0a5783f06f05102509f diff --git a/tool/bundler/lint_gems.rb.lock b/tool/bundler/lint_gems.rb.lock index e9efc106de19..0a219f309ecf 100644 --- a/tool/bundler/lint_gems.rb.lock +++ b/tool/bundler/lint_gems.rb.lock @@ -2,19 +2,19 @@ GEM remote: https://rubygems.org/ specs: ast (2.4.3) - chef-utils (18.7.10) + chef-utils (18.8.54) concurrent-ruby concurrent-ruby (1.3.5) ffi (1.17.2-x64-mingw-ucrt) ffi-win32-extensions (1.0.4) ffi - json (2.10.2) - json (2.10.2-java) + json (2.16.0) + json (2.16.0-java) kramdown (2.5.1) rexml (>= 3.3.9) kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) - language_server-protocol (3.17.0.4) + language_server-protocol (3.17.0.5) lint_roller (1.1.0) mdl (0.13.0) kramdown (~> 2.3) @@ -32,17 +32,17 @@ GEM ffi-win32-extensions (~> 1.0.3) win32-process (~> 0.9) wmi-lite (~> 1.0) - parallel (1.26.3) - parser (3.3.7.3) + parallel (1.27.0) + parser (3.3.10.0) ast (~> 2.4.1) racc - prism (1.4.0) + prism (1.6.0) racc (1.8.1) racc (1.8.1-java) rainbow (3.1.1) - regexp_parser (2.10.0) - rexml (3.4.1) - rubocop (1.75.1) + regexp_parser (2.11.3) + rexml (3.4.4) + rubocop (1.81.7) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -50,21 +50,21 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.43.0, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.43.0) + rubocop-ast (1.48.0) parser (>= 3.3.7.2) prism (~> 1.4) - rubocop-performance (1.24.0) + rubocop-performance (1.26.1) lint_roller (~> 1.1) - rubocop (>= 1.72.1, < 2.0) - rubocop-ast (>= 1.38.0, < 2.0) + rubocop (>= 1.75.0, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (1.13.0) tomlrb (2.0.3) - unicode-display_width (3.1.4) - unicode-emoji (~> 4.0, >= 4.0.4) - unicode-emoji (4.0.4) + unicode-display_width (3.2.0) + unicode-emoji (~> 4.1) + unicode-emoji (4.1.0) win32-process (0.10.0) ffi (>= 1.0.0) wmi-lite (1.0.7) @@ -85,36 +85,36 @@ DEPENDENCIES CHECKSUMS ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383 - chef-utils (18.7.10) sha256=cd93433e50d526d496a37f6ca3b07b65dc29f37b8c63231f22aa15924c4b99a4 + chef-utils (18.8.54) sha256=651c6c53291a520eddf636c7be598169fa52a07c41706b35e2e2a262c1eb0dc7 concurrent-ruby (1.3.5) sha256=813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6 ffi (1.17.2-x64-mingw-ucrt) sha256=15d2da54ee578657a333a6059ed16eaba1cbd794ceecd15944825b65c8381ac0 ffi-win32-extensions (1.0.4) sha256=9d01a511a7ea957d8f73a06892f3ccfa49dcb32be95c4edb86b5ba3103edea00 - json (2.10.2) sha256=34e0eada93022b2a0a3345bb0b5efddb6e9ff5be7c48e409cfb54ff8a36a8b06 - json (2.10.2-java) sha256=fe31faac61ea21ea1448c35450183f84e85c2b94cc6522c241959ba9d1362006 + json (2.16.0) sha256=ca5630320bb5ca23ebfd0bac84532fab56eb357575653b815b9df42c051e1525 + json (2.16.0-java) sha256=ee4c6fcc8f4efd156414b3e253e51675ec95bdfc79230b0bd5ec3a6139ed6d22 kramdown (2.5.1) sha256=87bbb6abd9d3cebe4fc1f33e367c392b4500e6f8fa19dd61c0972cf4afe7368c kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 - language_server-protocol (3.17.0.4) sha256=c484626478664fd13482d8180947c50a8590484b1258b99b7aedb3b69df89669 + language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 mdl (0.13.0) sha256=207a5e26a4c4e19095b39be0201834a69d31d838982a57eba343918dba1c86a8 mixlib-cli (2.1.8) sha256=e6f27be34d580f6ed71731ca46b967e57793a627131c1f6e1ed2dad39ea3bdf9 mixlib-config (3.0.27) sha256=d7748b1898e4f16502afec1de00b5ad65c6de405114b1b0c65ec61b1a9100148 mixlib-shellout (3.3.9) sha256=0edf5ee3b07526de8eb5219af051752fb8df2691dc030ce233e248dedf4fd388 mixlib-shellout (3.3.9-x64-mingw-ucrt) sha256=0169db7b7dc6304903c7205588ca1194b3d3aab722c1f0090c2a8f42f67a6c57 - parallel (1.26.3) sha256=d86babb7a2b814be9f4b81587bf0b6ce2da7d45969fab24d8ae4bf2bb4d4c7ef - parser (3.3.7.3) sha256=5803acc132cf1155fac2656bf02d3fb9223dccd66f1aa538dac095b785fa4d64 - prism (1.4.0) sha256=dc0e3e00e93160213dc2a65519d9002a4a1e7b962db57d444cf1a71565bb703e + parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 + parser (3.3.10.0) sha256=ce3587fa5cc55a88c4ba5b2b37621b3329aadf5728f9eafa36bbd121462aabd6 + prism (1.6.0) sha256=bfc0281a81718c4872346bc858dc84abd3a60cae78336c65ad35c8fbff641c6b racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f racc (1.8.1-java) sha256=54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98 rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a - regexp_parser (2.10.0) sha256=cb6f0ddde88772cd64bff1dbbf68df66d376043fe2e66a9ef77fcb1b0c548c61 - rexml (3.4.1) sha256=c74527a9a0a04b4ec31dbe0dc4ed6004b960af943d8db42e539edde3a871abca - rubocop (1.75.1) sha256=c12900c55b0b52e6ed1384f7f7575beb92047019ce37ca14b9572d80239adc29 - rubocop-ast (1.43.0) sha256=92cd649e336ce10212cb2f2b29028f487777ecc477f108f437a1dce1ee3db79a - rubocop-performance (1.24.0) sha256=e5bd39ff3e368395b9af886927cc37f5892f43db4bd6c8526594352d5b4440b5 + regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4 + rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 + rubocop (1.81.7) sha256=6fb5cc298c731691e2a414fe0041a13eb1beed7bab23aec131da1bcc527af094 + rubocop-ast (1.48.0) sha256=22df9bbf3f7a6eccde0fad54e68547ae1e2a704bf8719e7c83813a99c05d2e76 + rubocop-performance (1.26.1) sha256=cd19b936ff196df85829d264b522fd4f98b6c89ad271fa52744a8c11b8f71834 ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33 tomlrb (2.0.3) sha256=c2736acf24919f793334023a4ff396c0647d93fce702a73c9d348deaa815d4f7 - unicode-display_width (3.1.4) sha256=8caf2af1c0f2f07ec89ef9e18c7d88c2790e217c482bfc78aaa65eadd5415ac1 - unicode-emoji (4.0.4) sha256=2c2c4ef7f353e5809497126285a50b23056cc6e61b64433764a35eff6c36532a + unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42 + unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5 win32-process (0.10.0) sha256=ad2d401c62f56f922f3fabb7a55fd2b65ea85becbad3b5d9093ffe59c386f542 wmi-lite (1.0.7) sha256=116ef5bb470dbe60f58c2db9047af3064c16245d6562c646bc0d90877e27ddda diff --git a/tool/bundler/release_gems.rb.lock b/tool/bundler/release_gems.rb.lock index a011e0181612..9ae886283832 100644 --- a/tool/bundler/release_gems.rb.lock +++ b/tool/bundler/release_gems.rb.lock @@ -3,47 +3,50 @@ GEM specs: addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) - aws-eventstream (1.3.2) - aws-partitions (1.1075.0) - aws-sdk-core (3.221.0) + aws-eventstream (1.4.0) + aws-partitions (1.1181.0) + aws-sdk-core (3.237.0) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) aws-sigv4 (~> 1.9) base64 + bigdecimal jmespath (~> 1, >= 1.6.1) logger - aws-sdk-kms (1.99.0) - aws-sdk-core (~> 3, >= 3.216.0) + aws-sdk-kms (1.117.0) + aws-sdk-core (~> 3, >= 3.234.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.182.0) - aws-sdk-core (~> 3, >= 3.216.0) + aws-sdk-s3 (1.203.1) + aws-sdk-core (~> 3, >= 3.234.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sigv4 (1.11.0) + aws-sigv4 (1.12.1) aws-eventstream (~> 1, >= 1.0.2) - base64 (0.2.0) - faraday (2.12.2) + base64 (0.3.0) + bigdecimal (3.3.1) + bigdecimal (3.3.1-java) + faraday (2.14.0) faraday-net_http (>= 2.0, < 3.5) json logger - faraday-net_http (3.4.0) - net-http (>= 0.5.0) - faraday-retry (2.2.1) + faraday-net_http (3.4.2) + net-http (~> 0.5) + faraday-retry (2.3.2) faraday (~> 2.0) jmespath (1.6.2) - json (2.10.2) - json (2.10.2-java) + json (2.16.0) + json (2.16.0-java) logger (1.7.0) - net-http (0.6.0) - uri + net-http (0.8.0) + uri (>= 0.11.1) octokit (7.2.0) faraday (>= 1, < 3) sawyer (~> 0.9) - public_suffix (6.0.1) - sawyer (0.9.2) + public_suffix (6.0.2) + sawyer (0.9.3) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) - uri (1.0.3) + uri (1.1.1) PLATFORMS aarch64-darwin @@ -61,25 +64,27 @@ DEPENDENCIES CHECKSUMS addressable (2.8.7) sha256=462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232 - aws-eventstream (1.3.2) sha256=7e2c3a55ca70d7861d5d3c98e47daa463ed539c349caba22b48305b8919572d7 - aws-partitions (1.1075.0) sha256=71d89cb59d40d7417f03d177e02d838313ed6df216c50a1f4a342914a41467c9 - aws-sdk-core (3.221.0) sha256=5ecad719dc2a15a76efd17071a43de5ac703aaa74e713af54cc949645c46ad4a - aws-sdk-kms (1.99.0) sha256=ba292fc3ffd672532aae2601fe55ff424eee78da8e23c23ba6ce4037138275a8 - aws-sdk-s3 (1.182.0) sha256=d0fc3579395cb6cb69bf6e975240ce031fc673190e74c8dddbdd6c18572b450d - aws-sigv4 (1.11.0) sha256=50a8796991a862324442036ad7a395920572b84bb6cd29b945e5e1800e8da1db - base64 (0.2.0) sha256=0f25e9b21a02a0cc0cea8ef92b2041035d39350946e8789c562b2d1a3da01507 - faraday (2.12.2) sha256=157339c25c7b8bcb739f5cf1207cb0cefe8fa1c65027266bcbc34c90c84b9ad6 - faraday-net_http (3.4.0) sha256=a1f1e4cd6a2cf21599c8221595e27582d9936819977bbd4089a601f24c64e54a - faraday-retry (2.2.1) sha256=4146fed14549c0580bf14591fca419a40717de0dd24f267a8ec2d9a728677608 + aws-eventstream (1.4.0) sha256=116bf85c436200d1060811e6f5d2d40c88f65448f2125bc77ffce5121e6e183b + aws-partitions (1.1181.0) sha256=ad818435b31c5ed60f9332896dc83bfa7eff9661af93935b468f012e07c8ea7d + aws-sdk-core (3.237.0) sha256=9a8b14167a75be07ba7cfd9d27075aa12f1ed897d6eaed808a1c6a20963af32b + aws-sdk-kms (1.117.0) sha256=d3d655ae825ca0d6715555e2543e062fe14ccacf30bace04f3aefd6005b76c14 + aws-sdk-s3 (1.203.1) sha256=edaa6ecc641ffa8564f38df237876876ac679b937ca8cd7873f6f9857d8f99b9 + aws-sigv4 (1.12.1) sha256=6973ff95cb0fd0dc58ba26e90e9510a2219525d07620c8babeb70ef831826c00 + base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b + bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218 + bigdecimal (3.3.1-java) sha256=ed496e9c075dd501d58a519707bf704dba82a0cef658c719c929789551ec7d85 + faraday (2.14.0) sha256=8699cfe5d97e55268f2596f9a9d5a43736808a943714e3d9a53e6110593941cd + faraday-net_http (3.4.2) sha256=f147758260d3526939bf57ecf911682f94926a3666502e24c69992765875906c + faraday-retry (2.3.2) sha256=2402d2029032ebd238a2046221e67f6ef0da78c5a8ce8cd4f8b9c62e4d6451d1 jmespath (1.6.2) sha256=238d774a58723d6c090494c8879b5e9918c19485f7e840f2c1c7532cf84ebcb1 - json (2.10.2) sha256=34e0eada93022b2a0a3345bb0b5efddb6e9ff5be7c48e409cfb54ff8a36a8b06 - json (2.10.2-java) sha256=fe31faac61ea21ea1448c35450183f84e85c2b94cc6522c241959ba9d1362006 + json (2.16.0) sha256=ca5630320bb5ca23ebfd0bac84532fab56eb357575653b815b9df42c051e1525 + json (2.16.0-java) sha256=ee4c6fcc8f4efd156414b3e253e51675ec95bdfc79230b0bd5ec3a6139ed6d22 logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 - net-http (0.6.0) sha256=9621b20c137898af9d890556848c93603716cab516dc2c89b01a38b894e259fb + net-http (0.8.0) sha256=df42c47ce9f9e95ad32a317c97c12f945bc1af365288837ea4ff259876ecb46d octokit (7.2.0) sha256=7032d968d03177ee7a29e3bd4782fc078215cca4743db0dfc66a49feb9411907 - public_suffix (6.0.1) sha256=61d44e1cab5cbbbe5b31068481cf16976dd0dc1b6b07bd95617ef8c5e3e00c6f - sawyer (0.9.2) sha256=fa3a72d62a4525517b18857ddb78926aab3424de0129be6772a8e2ba240e7aca - uri (1.0.3) sha256=e9f2244608eea2f7bc357d954c65c910ce0399ca5e18a7a29207ac22d8767011 + public_suffix (6.0.2) sha256=bfa7cd5108066f8c9602e0d6d4114999a5df5839a63149d3e8b0f9c1d3558394 + sawyer (0.9.3) sha256=0d0f19298408047037638639fe62f4794483fb04320269169bd41af2bdcf5e41 + uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 BUNDLED WITH 4.0.0.dev diff --git a/tool/bundler/rubocop_gems.rb.lock b/tool/bundler/rubocop_gems.rb.lock index 33297004ad3d..84ce9bd4fda5 100644 --- a/tool/bundler/rubocop_gems.rb.lock +++ b/tool/bundler/rubocop_gems.rb.lock @@ -2,64 +2,68 @@ GEM remote: https://rubygems.org/ specs: ast (2.4.3) - date (3.4.1) - date (3.4.1-java) - diff-lcs (1.6.1) - io-console (0.8.0) - io-console (0.8.0-java) - irb (1.15.1) + date (3.5.0) + date (3.5.0-java) + diff-lcs (1.6.2) + erb (6.0.0) + erb (6.0.0-java) + io-console (0.8.1) + io-console (0.8.1-java) + irb (1.15.3) pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) jar-dependencies (0.5.5) - json (2.10.2) - json (2.10.2-java) - language_server-protocol (3.17.0.4) + json (2.16.0) + json (2.16.0-java) + language_server-protocol (3.17.0.5) lint_roller (1.1.0) - minitest (5.25.5) - parallel (1.26.3) - parser (3.3.7.3) + minitest (5.26.1) + parallel (1.27.0) + parser (3.3.10.0) ast (~> 2.4.1) racc - power_assert (2.0.5) - pp (0.6.2) + power_assert (3.0.1) + pp (0.6.3) prettyprint prettyprint (0.2.0) - prism (1.4.0) - psych (5.2.3) + prism (1.6.0) + psych (5.2.6) date stringio - psych (5.2.3-java) + psych (5.2.6-java) date jar-dependencies (>= 0.1.7) racc (1.8.1) racc (1.8.1-java) rainbow (3.1.1) - rake (13.3.0) - rake-compiler (1.2.9) + rake (13.3.1) + rake-compiler (1.3.0) rake rake-compiler-dock (1.9.1) - rb_sys (0.9.111) + rb_sys (0.9.117) rake-compiler-dock (= 1.9.1) - rdoc (6.13.0) + rdoc (6.15.1) + erb psych (>= 4.0.0) - regexp_parser (2.10.0) - reline (0.6.0) + tsort + regexp_parser (2.11.3) + reline (0.6.3) io-console (~> 0.5) - rspec (3.13.0) + rspec (3.13.2) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.3) + rspec-core (3.13.6) rspec-support (~> 3.13.0) - rspec-expectations (3.13.3) + rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.2) + rspec-mocks (3.13.7) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.2) - rubocop (1.75.1) + rspec-support (3.13.6) + rubocop (1.81.7) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -67,19 +71,20 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.43.0, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.43.0) + rubocop-ast (1.48.0) parser (>= 3.3.7.2) prism (~> 1.4) ruby-progressbar (1.13.0) - stringio (3.1.6) - test-unit (3.6.7) + stringio (3.1.8) + test-unit (3.7.1) power_assert - unicode-display_width (3.1.4) - unicode-emoji (~> 4.0, >= 4.0.4) - unicode-emoji (4.0.4) + tsort (0.2.0) + unicode-display_width (3.2.0) + unicode-emoji (~> 4.1) + unicode-emoji (4.1.0) PLATFORMS aarch64-darwin @@ -104,48 +109,51 @@ DEPENDENCIES CHECKSUMS ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383 - date (3.4.1) sha256=bf268e14ef7158009bfeaec40b5fa3c7271906e88b196d958a89d4b408abe64f - date (3.4.1-java) sha256=74740d914c65a922a15657c25ff0e203c16f1d0f7aa910a9ebed712afe9819c4 - diff-lcs (1.6.1) sha256=12a5a83f3e37a8e2f4427268e305914d5f1879f22b4e73bb1a09f76a3dd86cd4 - io-console (0.8.0) sha256=cd6a9facbc69871d69b2cb8b926fc6ea7ef06f06e505e81a64f14a470fddefa2 - io-console (0.8.0-java) sha256=3cc6fd5c66e587145c1fdf8dc40c2e3d851e90722a5d0cc3f38da352f06fe1bd - irb (1.15.1) sha256=d9bca745ac4207a8b728a52b98b766ca909b86ff1a504bcde3d6f8c84faae890 + date (3.5.0) sha256=5e74fd6c04b0e65d97ad4f3bb5cb2d8efb37f386cc848f46310b4593ffc46ee5 + date (3.5.0-java) sha256=d6876651299185b935e1b834a353e3a1d1db054be478967e8104e30a9a8f1127 + diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 + erb (6.0.0) sha256=2730893f9d8c9733f16cab315a4e4b71c1afa9cabc1a1e7ad1403feba8f52579 + erb (6.0.0-java) sha256=6537c84b596d889c4e20d87da41b38664e79bfe0af812ba7ea2a82a7ebf0ed62 + io-console (0.8.1) sha256=1e15440a6b2f67b6ea496df7c474ed62c860ad11237f29b3bd187f054b925fcb + io-console (0.8.1-java) sha256=9457a61a7b23aab11e9e9ff67f71ae81d7f1a6a2e582bb5d65d754cbb546c06f + irb (1.15.3) sha256=4349edff1efa7ff7bfd34cb9df74a133a588ba88c2718098b3b4468b81184aaa jar-dependencies (0.5.5) sha256=2972b9fcba4b014e6446a84b5c09674a3e8648b95b71768e729f0e8e40568059 - json (2.10.2) sha256=34e0eada93022b2a0a3345bb0b5efddb6e9ff5be7c48e409cfb54ff8a36a8b06 - json (2.10.2-java) sha256=fe31faac61ea21ea1448c35450183f84e85c2b94cc6522c241959ba9d1362006 - language_server-protocol (3.17.0.4) sha256=c484626478664fd13482d8180947c50a8590484b1258b99b7aedb3b69df89669 + json (2.16.0) sha256=ca5630320bb5ca23ebfd0bac84532fab56eb357575653b815b9df42c051e1525 + json (2.16.0-java) sha256=ee4c6fcc8f4efd156414b3e253e51675ec95bdfc79230b0bd5ec3a6139ed6d22 + language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 - minitest (5.25.5) sha256=391b6c6cb43a4802bfb7c93af1ebe2ac66a210293f4a3fb7db36f2fc7dc2c756 - parallel (1.26.3) sha256=d86babb7a2b814be9f4b81587bf0b6ce2da7d45969fab24d8ae4bf2bb4d4c7ef - parser (3.3.7.3) sha256=5803acc132cf1155fac2656bf02d3fb9223dccd66f1aa538dac095b785fa4d64 - power_assert (2.0.5) sha256=63b511b85bb8ea57336d25156864498644f5bbf028699ceda27949e0125bc323 - pp (0.6.2) sha256=947ec3120c6f92195f8ee8aa25a7b2c5297bb106d83b41baa02983686577b6ff + minitest (5.26.1) sha256=f16a63d4278e230bba342c3bda3006a69c5216d46461b77dd57f7c7c529b5a96 + parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 + parser (3.3.10.0) sha256=ce3587fa5cc55a88c4ba5b2b37621b3329aadf5728f9eafa36bbd121462aabd6 + power_assert (3.0.1) sha256=8ce9876716cc74e863fcd4cdcdc52d792bd983598d1af3447083a3a9a4d34103 + pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6 prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193 - prism (1.4.0) sha256=dc0e3e00e93160213dc2a65519d9002a4a1e7b962db57d444cf1a71565bb703e - psych (5.2.3) sha256=84a54bb952d14604fea22d99938348814678782f58b12648fcdfa4d2fce859ee - psych (5.2.3-java) sha256=3e5425b9e8a2f41cc2707d5ef14fdc1ae908abbafb12fe45727bd63900056585 + prism (1.6.0) sha256=bfc0281a81718c4872346bc858dc84abd3a60cae78336c65ad35c8fbff641c6b + psych (5.2.6) sha256=814328aa5dcb6d604d32126a20bc1cbcf05521a5b49dbb1a8b30a07e580f316e + psych (5.2.6-java) sha256=0a5f65d47ed1ae3475d062b254e7b2035a259eac578038016d62172dd4cfbd91 racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f racc (1.8.1-java) sha256=54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98 rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a - rake (13.3.0) sha256=96f5092d786ff412c62fde76f793cc0541bd84d2eb579caa529aa8a059934493 - rake-compiler (1.2.9) sha256=5a3213a5dda977dfdf73e28beed6f4cd6a2cc86ac640bb662728eb7049a23607 + rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c + rake-compiler (1.3.0) sha256=eec272ef6d4dad27b36f5cdcf5b9ee4df2193751f4082b095f981ebf9cdf4127 rake-compiler-dock (1.9.1) sha256=e73720a29aba9c114728ce39cc0d8eef69ba61d88e7978c57bac171724cd4d53 - rb_sys (0.9.111) sha256=65822fd8d57c248cd893db0efe01bc6edc15fcbea3ba6666091e35430c1cbaf0 - rdoc (6.13.0) sha256=32c2139ae43ed91b7c43032fe5423d21d57718829cc5a11e5c9710d2aa5e0329 - regexp_parser (2.10.0) sha256=cb6f0ddde88772cd64bff1dbbf68df66d376043fe2e66a9ef77fcb1b0c548c61 - reline (0.6.0) sha256=57620375dcbe56ec09bac7192bfb7460c716bbf0054dc94345ecaa5438e539d2 - rspec (3.13.0) sha256=d490914ac1d5a5a64a0e1400c1d54ddd2a501324d703b8cfe83f458337bab993 - rspec-core (3.13.3) sha256=25136507f4f9cf2e8977a2851e64e438b4331646054e345998714108745cdfe4 - rspec-expectations (3.13.3) sha256=0e6b5af59b900147698ea0ff80456c4f2e69cac4394fbd392fbd1ca561f66c58 - rspec-mocks (3.13.2) sha256=2327335def0e1665325a9b617e3af9ae20272741d80ac550336309a7c59abdef - rspec-support (3.13.2) sha256=cea3a2463fd9b84b9dcc9685efd80ea701aa8f7b3decb3b3ce795ed67737dbec - rubocop (1.75.1) sha256=c12900c55b0b52e6ed1384f7f7575beb92047019ce37ca14b9572d80239adc29 - rubocop-ast (1.43.0) sha256=92cd649e336ce10212cb2f2b29028f487777ecc477f108f437a1dce1ee3db79a + rb_sys (0.9.117) sha256=755feaf6c640baceca7a9362dfb0ae87ff4ff16e3566d9ef86533896eb85cb59 + rdoc (6.15.1) sha256=28bfac73cd8b226a8079f53a564ceaccdb5b4480e34335100001570ddb1a481a + regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4 + reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 + rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 + rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d + rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 + rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c + rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2 + rubocop (1.81.7) sha256=6fb5cc298c731691e2a414fe0041a13eb1beed7bab23aec131da1bcc527af094 + rubocop-ast (1.48.0) sha256=22df9bbf3f7a6eccde0fad54e68547ae1e2a704bf8719e7c83813a99c05d2e76 ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33 - stringio (3.1.6) sha256=292c495d1657adfcdf0a32eecf12a60e6691317a500c3112ad3b2e31068274f5 - test-unit (3.6.7) sha256=c342bb9f7334ea84a361b43c20b063f405c0bf3c7dbe3ff38f61a91661d29221 - unicode-display_width (3.1.4) sha256=8caf2af1c0f2f07ec89ef9e18c7d88c2790e217c482bfc78aaa65eadd5415ac1 - unicode-emoji (4.0.4) sha256=2c2c4ef7f353e5809497126285a50b23056cc6e61b64433764a35eff6c36532a + stringio (3.1.8) sha256=99c43c3a9302843cca223fd985bfc503dd50a4b1723d3e4a9eb1d9c37d99e4ec + test-unit (3.7.1) sha256=be595279c3427c00f57600db3dd59b6a9596e1f1e447864b158608d8e0d91570 + tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f + unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42 + unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5 BUNDLED WITH 4.0.0.dev diff --git a/tool/bundler/standard_gems.rb.lock b/tool/bundler/standard_gems.rb.lock index 20625ff23856..e8a2cbd53e8b 100644 --- a/tool/bundler/standard_gems.rb.lock +++ b/tool/bundler/standard_gems.rb.lock @@ -2,64 +2,68 @@ GEM remote: https://rubygems.org/ specs: ast (2.4.3) - date (3.4.1) - date (3.4.1-java) - diff-lcs (1.6.1) - io-console (0.8.0) - io-console (0.8.0-java) - irb (1.15.1) + date (3.5.0) + date (3.5.0-java) + diff-lcs (1.6.2) + erb (6.0.0) + erb (6.0.0-java) + io-console (0.8.1) + io-console (0.8.1-java) + irb (1.15.3) pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) jar-dependencies (0.5.5) - json (2.10.2) - json (2.10.2-java) - language_server-protocol (3.17.0.4) + json (2.16.0) + json (2.16.0-java) + language_server-protocol (3.17.0.5) lint_roller (1.1.0) - minitest (5.25.5) - parallel (1.26.3) - parser (3.3.7.3) + minitest (5.26.1) + parallel (1.27.0) + parser (3.3.10.0) ast (~> 2.4.1) racc - power_assert (2.0.5) - pp (0.6.2) + power_assert (3.0.1) + pp (0.6.3) prettyprint prettyprint (0.2.0) - prism (1.4.0) - psych (5.2.3) + prism (1.6.0) + psych (5.2.6) date stringio - psych (5.2.3-java) + psych (5.2.6-java) date jar-dependencies (>= 0.1.7) racc (1.8.1) racc (1.8.1-java) rainbow (3.1.1) - rake (13.3.0) - rake-compiler (1.2.9) + rake (13.3.1) + rake-compiler (1.3.0) rake rake-compiler-dock (1.9.1) - rb_sys (0.9.111) + rb_sys (0.9.117) rake-compiler-dock (= 1.9.1) - rdoc (6.13.0) + rdoc (6.15.1) + erb psych (>= 4.0.0) - regexp_parser (2.10.0) - reline (0.6.0) + tsort + regexp_parser (2.11.3) + reline (0.6.3) io-console (~> 0.5) - rspec (3.13.0) + rspec (3.13.2) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.3) + rspec-core (3.13.6) rspec-support (~> 3.13.0) - rspec-expectations (3.13.3) + rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.2) + rspec-mocks (3.13.7) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.2) - rubocop (1.73.2) + rspec-support (3.13.6) + rubocop (1.80.2) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -67,35 +71,36 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.38.0, < 2.0) + rubocop-ast (>= 1.46.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.43.0) + rubocop-ast (1.48.0) parser (>= 3.3.7.2) prism (~> 1.4) - rubocop-performance (1.24.0) + rubocop-performance (1.25.0) lint_roller (~> 1.1) - rubocop (>= 1.72.1, < 2.0) + rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.38.0, < 2.0) ruby-progressbar (1.13.0) - standard (1.47.0) + standard (1.51.1) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.0) - rubocop (~> 1.73.0) + rubocop (~> 1.80.2) standard-custom (~> 1.0.0) - standard-performance (~> 1.7) + standard-performance (~> 1.8) standard-custom (1.0.2) lint_roller (~> 1.0) rubocop (~> 1.50) - standard-performance (1.7.0) + standard-performance (1.8.0) lint_roller (~> 1.1) - rubocop-performance (~> 1.24.0) - stringio (3.1.6) - test-unit (3.6.7) + rubocop-performance (~> 1.25.0) + stringio (3.1.8) + test-unit (3.7.1) power_assert - unicode-display_width (3.1.4) - unicode-emoji (~> 4.0, >= 4.0.4) - unicode-emoji (4.0.4) + tsort (0.2.0) + unicode-display_width (3.2.0) + unicode-emoji (~> 4.1) + unicode-emoji (4.1.0) PLATFORMS aarch64-darwin @@ -120,52 +125,55 @@ DEPENDENCIES CHECKSUMS ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383 - date (3.4.1) sha256=bf268e14ef7158009bfeaec40b5fa3c7271906e88b196d958a89d4b408abe64f - date (3.4.1-java) sha256=74740d914c65a922a15657c25ff0e203c16f1d0f7aa910a9ebed712afe9819c4 - diff-lcs (1.6.1) sha256=12a5a83f3e37a8e2f4427268e305914d5f1879f22b4e73bb1a09f76a3dd86cd4 - io-console (0.8.0) sha256=cd6a9facbc69871d69b2cb8b926fc6ea7ef06f06e505e81a64f14a470fddefa2 - io-console (0.8.0-java) sha256=3cc6fd5c66e587145c1fdf8dc40c2e3d851e90722a5d0cc3f38da352f06fe1bd - irb (1.15.1) sha256=d9bca745ac4207a8b728a52b98b766ca909b86ff1a504bcde3d6f8c84faae890 + date (3.5.0) sha256=5e74fd6c04b0e65d97ad4f3bb5cb2d8efb37f386cc848f46310b4593ffc46ee5 + date (3.5.0-java) sha256=d6876651299185b935e1b834a353e3a1d1db054be478967e8104e30a9a8f1127 + diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 + erb (6.0.0) sha256=2730893f9d8c9733f16cab315a4e4b71c1afa9cabc1a1e7ad1403feba8f52579 + erb (6.0.0-java) sha256=6537c84b596d889c4e20d87da41b38664e79bfe0af812ba7ea2a82a7ebf0ed62 + io-console (0.8.1) sha256=1e15440a6b2f67b6ea496df7c474ed62c860ad11237f29b3bd187f054b925fcb + io-console (0.8.1-java) sha256=9457a61a7b23aab11e9e9ff67f71ae81d7f1a6a2e582bb5d65d754cbb546c06f + irb (1.15.3) sha256=4349edff1efa7ff7bfd34cb9df74a133a588ba88c2718098b3b4468b81184aaa jar-dependencies (0.5.5) sha256=2972b9fcba4b014e6446a84b5c09674a3e8648b95b71768e729f0e8e40568059 - json (2.10.2) sha256=34e0eada93022b2a0a3345bb0b5efddb6e9ff5be7c48e409cfb54ff8a36a8b06 - json (2.10.2-java) sha256=fe31faac61ea21ea1448c35450183f84e85c2b94cc6522c241959ba9d1362006 - language_server-protocol (3.17.0.4) sha256=c484626478664fd13482d8180947c50a8590484b1258b99b7aedb3b69df89669 + json (2.16.0) sha256=ca5630320bb5ca23ebfd0bac84532fab56eb357575653b815b9df42c051e1525 + json (2.16.0-java) sha256=ee4c6fcc8f4efd156414b3e253e51675ec95bdfc79230b0bd5ec3a6139ed6d22 + language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87 - minitest (5.25.5) sha256=391b6c6cb43a4802bfb7c93af1ebe2ac66a210293f4a3fb7db36f2fc7dc2c756 - parallel (1.26.3) sha256=d86babb7a2b814be9f4b81587bf0b6ce2da7d45969fab24d8ae4bf2bb4d4c7ef - parser (3.3.7.3) sha256=5803acc132cf1155fac2656bf02d3fb9223dccd66f1aa538dac095b785fa4d64 - power_assert (2.0.5) sha256=63b511b85bb8ea57336d25156864498644f5bbf028699ceda27949e0125bc323 - pp (0.6.2) sha256=947ec3120c6f92195f8ee8aa25a7b2c5297bb106d83b41baa02983686577b6ff + minitest (5.26.1) sha256=f16a63d4278e230bba342c3bda3006a69c5216d46461b77dd57f7c7c529b5a96 + parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130 + parser (3.3.10.0) sha256=ce3587fa5cc55a88c4ba5b2b37621b3329aadf5728f9eafa36bbd121462aabd6 + power_assert (3.0.1) sha256=8ce9876716cc74e863fcd4cdcdc52d792bd983598d1af3447083a3a9a4d34103 + pp (0.6.3) sha256=2951d514450b93ccfeb1df7d021cae0da16e0a7f95ee1e2273719669d0ab9df6 prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193 - prism (1.4.0) sha256=dc0e3e00e93160213dc2a65519d9002a4a1e7b962db57d444cf1a71565bb703e - psych (5.2.3) sha256=84a54bb952d14604fea22d99938348814678782f58b12648fcdfa4d2fce859ee - psych (5.2.3-java) sha256=3e5425b9e8a2f41cc2707d5ef14fdc1ae908abbafb12fe45727bd63900056585 + prism (1.6.0) sha256=bfc0281a81718c4872346bc858dc84abd3a60cae78336c65ad35c8fbff641c6b + psych (5.2.6) sha256=814328aa5dcb6d604d32126a20bc1cbcf05521a5b49dbb1a8b30a07e580f316e + psych (5.2.6-java) sha256=0a5f65d47ed1ae3475d062b254e7b2035a259eac578038016d62172dd4cfbd91 racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f racc (1.8.1-java) sha256=54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98 rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a - rake (13.3.0) sha256=96f5092d786ff412c62fde76f793cc0541bd84d2eb579caa529aa8a059934493 - rake-compiler (1.2.9) sha256=5a3213a5dda977dfdf73e28beed6f4cd6a2cc86ac640bb662728eb7049a23607 + rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c + rake-compiler (1.3.0) sha256=eec272ef6d4dad27b36f5cdcf5b9ee4df2193751f4082b095f981ebf9cdf4127 rake-compiler-dock (1.9.1) sha256=e73720a29aba9c114728ce39cc0d8eef69ba61d88e7978c57bac171724cd4d53 - rb_sys (0.9.111) sha256=65822fd8d57c248cd893db0efe01bc6edc15fcbea3ba6666091e35430c1cbaf0 - rdoc (6.13.0) sha256=32c2139ae43ed91b7c43032fe5423d21d57718829cc5a11e5c9710d2aa5e0329 - regexp_parser (2.10.0) sha256=cb6f0ddde88772cd64bff1dbbf68df66d376043fe2e66a9ef77fcb1b0c548c61 - reline (0.6.0) sha256=57620375dcbe56ec09bac7192bfb7460c716bbf0054dc94345ecaa5438e539d2 - rspec (3.13.0) sha256=d490914ac1d5a5a64a0e1400c1d54ddd2a501324d703b8cfe83f458337bab993 - rspec-core (3.13.3) sha256=25136507f4f9cf2e8977a2851e64e438b4331646054e345998714108745cdfe4 - rspec-expectations (3.13.3) sha256=0e6b5af59b900147698ea0ff80456c4f2e69cac4394fbd392fbd1ca561f66c58 - rspec-mocks (3.13.2) sha256=2327335def0e1665325a9b617e3af9ae20272741d80ac550336309a7c59abdef - rspec-support (3.13.2) sha256=cea3a2463fd9b84b9dcc9685efd80ea701aa8f7b3decb3b3ce795ed67737dbec - rubocop (1.73.2) sha256=35cd1b1365ba97234323fe771abcecd09c9b77098464cd726c76aa7d9bc12b5d - rubocop-ast (1.43.0) sha256=92cd649e336ce10212cb2f2b29028f487777ecc477f108f437a1dce1ee3db79a - rubocop-performance (1.24.0) sha256=e5bd39ff3e368395b9af886927cc37f5892f43db4bd6c8526594352d5b4440b5 + rb_sys (0.9.117) sha256=755feaf6c640baceca7a9362dfb0ae87ff4ff16e3566d9ef86533896eb85cb59 + rdoc (6.15.1) sha256=28bfac73cd8b226a8079f53a564ceaccdb5b4480e34335100001570ddb1a481a + regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4 + reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 + rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 + rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d + rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 + rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c + rspec-support (3.13.6) sha256=2e8de3702427eab064c9352fe74488cc12a1bfae887ad8b91cba480ec9f8afb2 + rubocop (1.80.2) sha256=6485f30fefcf5c199db3b91e5e253b1ef43f7e564784e2315255809a3dd9abf4 + rubocop-ast (1.48.0) sha256=22df9bbf3f7a6eccde0fad54e68547ae1e2a704bf8719e7c83813a99c05d2e76 + rubocop-performance (1.25.0) sha256=6f7d03568a770054117a78d0a8e191cefeffb703b382871ca7743831b1a52ec1 ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33 - standard (1.47.0) sha256=b0da6b71d8dec53e760c7216b723e3507ebdcd6962f7ce7c37c016a36c7cc190 + standard (1.51.1) sha256=6d0d98a1fac26d660393f37b3d9c864632bb934b17abfa23811996b20f87faf2 standard-custom (1.0.2) sha256=424adc84179a074f1a2a309bb9cf7cd6bfdb2b6541f20c6bf9436c0ba22a652b - standard-performance (1.7.0) sha256=c46a9aef3348c0cfc03053ed9a1c1f73b967f7e4edcdf30dac0101b143897314 - stringio (3.1.6) sha256=292c495d1657adfcdf0a32eecf12a60e6691317a500c3112ad3b2e31068274f5 - test-unit (3.6.7) sha256=c342bb9f7334ea84a361b43c20b063f405c0bf3c7dbe3ff38f61a91661d29221 - unicode-display_width (3.1.4) sha256=8caf2af1c0f2f07ec89ef9e18c7d88c2790e217c482bfc78aaa65eadd5415ac1 - unicode-emoji (4.0.4) sha256=2c2c4ef7f353e5809497126285a50b23056cc6e61b64433764a35eff6c36532a + standard-performance (1.8.0) sha256=ed17b7d0e061b2a19a91dd434bef629439e2f32310f22f26acb451addc92b788 + stringio (3.1.8) sha256=99c43c3a9302843cca223fd985bfc503dd50a4b1723d3e4a9eb1d9c37d99e4ec + test-unit (3.7.1) sha256=be595279c3427c00f57600db3dd59b6a9596e1f1e447864b158608d8e0d91570 + tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f + unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42 + unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5 BUNDLED WITH 4.0.0.dev diff --git a/tool/bundler/test_gems.rb.lock b/tool/bundler/test_gems.rb.lock index 76da85f5e4ec..ffcfb7a3e129 100644 --- a/tool/bundler/test_gems.rb.lock +++ b/tool/bundler/test_gems.rb.lock @@ -1,51 +1,51 @@ GEM remote: https://rubygems.org/ specs: - base64 (0.2.0) + base64 (0.3.0) builder (3.3.0) compact_index (0.15.0) - date (3.4.1) - date (3.4.1-java) - etc (1.4.5) - fiddle (1.1.6) + date (3.5.0) + date (3.5.0-java) + etc (1.4.6) + fiddle (1.1.8) jar-dependencies (0.5.5) logger (1.7.0) - mustermann (3.0.3) + mustermann (3.0.4) ruby2_keywords (~> 0.0.1) open3 (0.2.1) - psych (5.2.3) + psych (5.2.6) date stringio - psych (5.2.3-java) + psych (5.2.6-java) date jar-dependencies (>= 0.1.7) - rack (3.1.15) - rack-protection (4.1.1) + rack (3.2.4) + rack-protection (4.2.1) base64 (>= 0.1.0) logger (>= 1.6.0) rack (>= 3.0.0, < 4) - rack-session (2.1.0) + rack-session (2.1.1) base64 (>= 0.1.0) rack (>= 3.0.0) rack-test (2.2.0) rack (>= 1.3) - rake (13.3.0) + rake (13.3.1) rake-compiler-dock (1.9.1) - rb_sys (0.9.111) + rb_sys (0.9.117) rake-compiler-dock (= 1.9.1) ruby2_keywords (0.0.5) rubygems-generate_index (1.1.3) compact_index (~> 0.15.0) shellwords (0.2.2) - sinatra (4.1.1) + sinatra (4.2.1) logger (>= 1.6.0) mustermann (~> 3.0) rack (>= 3.0.0, < 4) - rack-protection (= 4.1.1) + rack-protection (= 4.2.1) rack-session (>= 2.0.0, < 3) tilt (~> 2.0) - stringio (3.1.6) - tilt (2.6.0) + stringio (3.1.8) + tilt (2.6.1) PLATFORMS java @@ -72,32 +72,32 @@ DEPENDENCIES sinatra (~> 4.1) CHECKSUMS - base64 (0.2.0) sha256=0f25e9b21a02a0cc0cea8ef92b2041035d39350946e8789c562b2d1a3da01507 + base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f compact_index (0.15.0) sha256=5c6c404afca8928a7d9f4dde9524f6e1610db17e675330803055db282da84a8b - date (3.4.1) sha256=bf268e14ef7158009bfeaec40b5fa3c7271906e88b196d958a89d4b408abe64f - date (3.4.1-java) sha256=74740d914c65a922a15657c25ff0e203c16f1d0f7aa910a9ebed712afe9819c4 - etc (1.4.5) sha256=0d854e7b97a40390b048ba51230c30886931931b9dba955e85985d7d3bccf26c - fiddle (1.1.6) sha256=79e8d909e602d979434cf9fccfa6e729cb16432bb00e39c7596abe6bee1249ab + date (3.5.0) sha256=5e74fd6c04b0e65d97ad4f3bb5cb2d8efb37f386cc848f46310b4593ffc46ee5 + date (3.5.0-java) sha256=d6876651299185b935e1b834a353e3a1d1db054be478967e8104e30a9a8f1127 + etc (1.4.6) sha256=0f7e9e7842ea5e3c3bd9bc81746ebb8c65ea29e4c42a93520a0d638129c7de01 + fiddle (1.1.8) sha256=7fa8ee3627271497f3add5503acdbc3f40b32f610fc1cf49634f083ef3f32eee jar-dependencies (0.5.5) sha256=2972b9fcba4b014e6446a84b5c09674a3e8648b95b71768e729f0e8e40568059 logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 - mustermann (3.0.3) sha256=d1f8e9ba2ddaed47150ddf81f6a7ea046826b64c672fbc92d83bce6b70657e88 + mustermann (3.0.4) sha256=85fadcb6b3c6493a8b511b42426f904b7f27b282835502233dd154daab13aa22 open3 (0.2.1) sha256=8e2d7d2113526351201438c1aa35c8139f0141c9e8913baa007c898973bf3952 - psych (5.2.3) sha256=84a54bb952d14604fea22d99938348814678782f58b12648fcdfa4d2fce859ee - psych (5.2.3-java) sha256=3e5425b9e8a2f41cc2707d5ef14fdc1ae908abbafb12fe45727bd63900056585 - rack (3.1.15) sha256=d12b3e9960d18a26ded961250f2c0e3b375b49ff40dbe6786e9c3b160cbffca4 - rack-protection (4.1.1) sha256=51a254a5d574a7f0ca4f0672025ce2a5ef7c8c3bd09c431349d683e825d7d16a - rack-session (2.1.0) sha256=437c3916535b58ef71c816ce4a2dee0a01c8a52ae6077dc2b6cd19085760a290 + psych (5.2.6) sha256=814328aa5dcb6d604d32126a20bc1cbcf05521a5b49dbb1a8b30a07e580f316e + psych (5.2.6-java) sha256=0a5f65d47ed1ae3475d062b254e7b2035a259eac578038016d62172dd4cfbd91 + rack (3.2.4) sha256=5d74b6f75082a643f43c1e76b419c40f0e5527fcfee1e669ac1e6b73c0ccb6f6 + rack-protection (4.2.1) sha256=cf6e2842df8c55f5e4d1a4be015e603e19e9bc3a7178bae58949ccbb58558bac + rack-session (2.1.1) sha256=0b6dc07dea7e4b583f58a48e8b806d4c9f1c6c9214ebc202ec94562cbea2e4e9 rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463 - rake (13.3.0) sha256=96f5092d786ff412c62fde76f793cc0541bd84d2eb579caa529aa8a059934493 + rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c rake-compiler-dock (1.9.1) sha256=e73720a29aba9c114728ce39cc0d8eef69ba61d88e7978c57bac171724cd4d53 - rb_sys (0.9.111) sha256=65822fd8d57c248cd893db0efe01bc6edc15fcbea3ba6666091e35430c1cbaf0 + rb_sys (0.9.117) sha256=755feaf6c640baceca7a9362dfb0ae87ff4ff16e3566d9ef86533896eb85cb59 ruby2_keywords (0.0.5) sha256=ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef rubygems-generate_index (1.1.3) sha256=3571424322666598e9586a906485e1543b617f87644913eaf137d986a3393f5c shellwords (0.2.2) sha256=b8695a791de2f71472de5abdc3f4332f6535a4177f55d8f99e7e44266cd32f94 - sinatra (4.1.1) sha256=4e997b859aa1b5d2e624f85d5b0fd0f0b3abc0da44daa6cbdf10f7c0da9f4d00 - stringio (3.1.6) sha256=292c495d1657adfcdf0a32eecf12a60e6691317a500c3112ad3b2e31068274f5 - tilt (2.6.0) sha256=263d748466e0d83e510aa1a2e2281eff547937f0ef06be33d3632721e255f76b + sinatra (4.2.1) sha256=b7aeb9b11d046b552972ade834f1f9be98b185fa8444480688e3627625377080 + stringio (3.1.8) sha256=99c43c3a9302843cca223fd985bfc503dd50a4b1723d3e4a9eb1d9c37d99e4ec + tilt (2.6.1) sha256=35a99bba2adf7c1e362f5b48f9b581cce4edfba98117e34696dde6d308d84770 BUNDLED WITH 4.0.0.dev diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index e960972b0397..606c49d09cb0 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -30,7 +30,7 @@ GIT GEM remote: https://rubygems.org/ specs: - connection_pool (2.5.0) + connection_pool (2.5.4) fileutils (1.7.3) net-protocol (0.2.2) timeout @@ -67,7 +67,7 @@ DEPENDENCIES uri (= 1.0.4) CHECKSUMS - connection_pool (2.5.0) sha256=233b92f8d38e038c1349ccea65dd3772727d669d6d2e71f9897c8bf5cd53ebfc + connection_pool (2.5.4) sha256=e9e1922327416091f3f6542f5f4446c2a20745276b9aa796dd0bb2fd0ea1e70a fileutils (1.7.3) sha256=57271e854b694a87755d76f836f5c57b2c9538ebbaf4b2154bb66addf15eb5da molinillo (0.8.0) net-http (0.6.0) From be3b09c786d329c51eb0fde5c84c2eab2f470510 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 10:50:25 +0900 Subject: [PATCH 121/295] bin/rubocop -a --only Style/RedundantParentheses --- bundler/lib/bundler/digest.rb | 2 +- bundler/lib/bundler/source/git/git_proxy.rb | 2 +- lib/rubygems/commands/cert_command.rb | 2 +- lib/rubygems/config_file.rb | 2 +- lib/rubygems/doctor.rb | 2 +- lib/rubygems/security/signer.rb | 2 +- .../test_gem_commands_cert_command.rb | 8 +-- test/rubygems/test_gem_package.rb | 2 +- test/rubygems/test_gem_package_old.rb | 2 +- test/rubygems/test_gem_platform.rb | 70 +++++++++---------- test/rubygems/test_gem_security_trust_dir.rb | 6 +- test/rubygems/test_gem_specification.rb | 18 ++--- 12 files changed, 59 insertions(+), 59 deletions(-) diff --git a/bundler/lib/bundler/digest.rb b/bundler/lib/bundler/digest.rb index 2c6d971f1b95..158803033d8a 100644 --- a/bundler/lib/bundler/digest.rb +++ b/bundler/lib/bundler/digest.rb @@ -26,7 +26,7 @@ def sha1(string) end a, b, c, d, e = *words (16..79).each do |i| - w[i] = SHA1_MASK & rotate((w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]), 1) + w[i] = SHA1_MASK & rotate(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16], 1) end 0.upto(79) do |i| case i diff --git a/bundler/lib/bundler/source/git/git_proxy.rb b/bundler/lib/bundler/source/git/git_proxy.rb index 02ec121abeca..cd352c22a7ab 100644 --- a/bundler/lib/bundler/source/git/git_proxy.rb +++ b/bundler/lib/bundler/source/git/git_proxy.rb @@ -121,7 +121,7 @@ def copy_to(destination, submodules = false) FileUtils.rm_rf(p) end git "clone", "--no-checkout", "--quiet", path.to_s, destination.to_s - File.chmod(((File.stat(destination).mode | 0o777) & ~File.umask), destination) + File.chmod((File.stat(destination).mode | 0o777) & ~File.umask, destination) rescue Errno::EEXIST => e file_path = e.message[%r{.*?((?:[a-zA-Z]:)?/.*)}, 1] raise GitError, "Bundler could not install a gem because it needs to " \ diff --git a/lib/rubygems/commands/cert_command.rb b/lib/rubygems/commands/cert_command.rb index 72dcf1dd170b..fe03841ddb44 100644 --- a/lib/rubygems/commands/cert_command.rb +++ b/lib/rubygems/commands/cert_command.rb @@ -158,7 +158,7 @@ def build_cert(email, key) # :nodoc: cert = Gem::Security.create_cert_email( email, key, - (Gem::Security::ONE_DAY * expiration_length_days) + Gem::Security::ONE_DAY * expiration_length_days ) Gem::Security.write cert, "gem-public_cert.pem" diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb index a2bcb6dfbc24..e58a83f6b75a 100644 --- a/lib/rubygems/config_file.rb +++ b/lib/rubygems/config_file.rb @@ -345,7 +345,7 @@ def set_api_key(host, api_key) require "fileutils" FileUtils.mkdir_p(dirname) - permissions = 0o600 & (~File.umask) + permissions = 0o600 & ~File.umask File.open(credentials_path, "w", permissions) do |f| f.write self.class.dump_with_rubygems_yaml(config) end diff --git a/lib/rubygems/doctor.rb b/lib/rubygems/doctor.rb index 56b7c081eb0e..4f26260d836a 100644 --- a/lib/rubygems/doctor.rb +++ b/lib/rubygems/doctor.rb @@ -113,7 +113,7 @@ def doctor_child(sub_directory, extension) # :nodoc: next if installed_specs.include? basename next if /^rubygems-\d/.match?(basename) next if sub_directory == "specifications" && basename == "default" - next if sub_directory == "plugins" && Gem.plugin_suffix_regexp =~ (basename) + next if sub_directory == "plugins" && Gem.plugin_suffix_regexp =~ basename type = File.directory?(child) ? "directory" : "file" diff --git a/lib/rubygems/security/signer.rb b/lib/rubygems/security/signer.rb index 5732fb57fdf5..eeeeb52906cb 100644 --- a/lib/rubygems/security/signer.rb +++ b/lib/rubygems/security/signer.rb @@ -52,7 +52,7 @@ def self.re_sign_cert(expired_cert, expired_cert_path, private_key) re_signed_cert = Gem::Security.re_sign( expired_cert, private_key, - (Gem::Security::ONE_DAY * Gem.configuration.cert_expiration_length_days) + Gem::Security::ONE_DAY * Gem.configuration.cert_expiration_length_days ) Gem::Security.write(re_signed_cert, expired_cert_path) diff --git a/test/rubygems/test_gem_commands_cert_command.rb b/test/rubygems/test_gem_commands_cert_command.rb index c17346793513..39fda73ebac4 100644 --- a/test/rubygems/test_gem_commands_cert_command.rb +++ b/test/rubygems/test_gem_commands_cert_command.rb @@ -498,7 +498,7 @@ def test_execute_sign assert_equal "/CN=nobody/DC=example", cert.issuer.to_s - mask = 0o100600 & (~File.umask) + mask = 0o100600 & ~File.umask assert_equal mask, File.stat(path).mode unless Gem.win_platform? end @@ -527,7 +527,7 @@ def test_execute_sign_encrypted_key assert_equal "/CN=nobody/DC=example", cert.issuer.to_s - mask = 0o100600 & (~File.umask) + mask = 0o100600 & ~File.umask assert_equal mask, File.stat(path).mode unless Gem.win_platform? end @@ -559,7 +559,7 @@ def test_execute_sign_default assert_equal "/CN=nobody/DC=example", cert.issuer.to_s - mask = 0o100600 & (~File.umask) + mask = 0o100600 & ~File.umask assert_equal mask, File.stat(path).mode unless Gem.win_platform? end @@ -591,7 +591,7 @@ def test_execute_sign_default_encrypted_key assert_equal "/CN=nobody/DC=example", cert.issuer.to_s - mask = 0o100600 & (~File.umask) + mask = 0o100600 & ~File.umask assert_equal mask, File.stat(path).mode unless Gem.win_platform? end diff --git a/test/rubygems/test_gem_package.rb b/test/rubygems/test_gem_package.rb index 34fa65b1e030..2ad63acd03bb 100644 --- a/test/rubygems/test_gem_package.rb +++ b/test/rubygems/test_gem_package.rb @@ -506,7 +506,7 @@ def test_extract_files extracted = File.join @destination, "lib/code.rb" assert_path_exist extracted - mask = 0o100666 & (~File.umask) + mask = 0o100666 & ~File.umask assert_equal mask.to_s(8), File.stat(extracted).mode.to_s(8) unless Gem.win_platform? diff --git a/test/rubygems/test_gem_package_old.rb b/test/rubygems/test_gem_package_old.rb index 7582dbedd40f..e532fa25e1b1 100644 --- a/test/rubygems/test_gem_package_old.rb +++ b/test/rubygems/test_gem_package_old.rb @@ -39,7 +39,7 @@ def test_extract_files extracted = File.join @destination, "lib/foo.rb" assert_path_exist extracted - mask = 0o100644 & (~File.umask) + mask = 0o100644 & ~File.umask assert_equal mask, File.stat(extracted).mode unless Gem.win_platform? end diff --git a/test/rubygems/test_gem_platform.rb b/test/rubygems/test_gem_platform.rb index 0f1a715ab81a..bb0f9ba8fd20 100644 --- a/test/rubygems/test_gem_platform.rb +++ b/test/rubygems/test_gem_platform.rb @@ -263,19 +263,19 @@ def test_equals3_cpu x86_darwin8 = Gem::Platform.new "i686-darwin8.0" util_set_arch "powerpc-darwin8" - assert((ppc_darwin8 === Gem::Platform.local), "powerpc =~ universal") - assert((uni_darwin8 === Gem::Platform.local), "powerpc =~ universal") - refute((x86_darwin8 === Gem::Platform.local), "powerpc =~ universal") + assert(ppc_darwin8 === Gem::Platform.local, "powerpc =~ universal") + assert(uni_darwin8 === Gem::Platform.local, "powerpc =~ universal") + refute(x86_darwin8 === Gem::Platform.local, "powerpc =~ universal") util_set_arch "i686-darwin8" - refute((ppc_darwin8 === Gem::Platform.local), "powerpc =~ universal") - assert((uni_darwin8 === Gem::Platform.local), "x86 =~ universal") - assert((x86_darwin8 === Gem::Platform.local), "powerpc =~ universal") + refute(ppc_darwin8 === Gem::Platform.local, "powerpc =~ universal") + assert(uni_darwin8 === Gem::Platform.local, "x86 =~ universal") + assert(x86_darwin8 === Gem::Platform.local, "powerpc =~ universal") util_set_arch "universal-darwin8" - assert((ppc_darwin8 === Gem::Platform.local), "universal =~ ppc") - assert((uni_darwin8 === Gem::Platform.local), "universal =~ universal") - assert((x86_darwin8 === Gem::Platform.local), "universal =~ x86") + assert(ppc_darwin8 === Gem::Platform.local, "universal =~ ppc") + assert(uni_darwin8 === Gem::Platform.local, "universal =~ universal") + assert(x86_darwin8 === Gem::Platform.local, "universal =~ x86") end def test_nil_cpu_arch_is_treated_as_universal @@ -283,18 +283,18 @@ def test_nil_cpu_arch_is_treated_as_universal with_uni_arch = Gem::Platform.new ["universal", "mingw32"] with_x86_arch = Gem::Platform.new ["x86", "mingw32"] - assert((with_nil_arch === with_uni_arch), "nil =~ universal") - assert((with_uni_arch === with_nil_arch), "universal =~ nil") - assert((with_nil_arch === with_x86_arch), "nil =~ x86") - assert((with_x86_arch === with_nil_arch), "x86 =~ nil") + assert(with_nil_arch === with_uni_arch, "nil =~ universal") + assert(with_uni_arch === with_nil_arch, "universal =~ nil") + assert(with_nil_arch === with_x86_arch, "nil =~ x86") + assert(with_x86_arch === with_nil_arch, "x86 =~ nil") end def test_nil_version_is_treated_as_any_version x86_darwin_8 = Gem::Platform.new "i686-darwin8.0" x86_darwin_nil = Gem::Platform.new "i686-darwin" - assert((x86_darwin_8 === x86_darwin_nil), "8.0 =~ nil") - assert((x86_darwin_nil === x86_darwin_8), "nil =~ 8.0") + assert(x86_darwin_8 === x86_darwin_nil, "8.0 =~ nil") + assert(x86_darwin_nil === x86_darwin_8, "nil =~ 8.0") end def test_nil_version_is_stricter_for_linux_os @@ -388,24 +388,24 @@ def test_equals3_cpu_arm arm64 = Gem::Platform.new "arm64-linux" util_set_arch "armv5-linux" - assert((arm === Gem::Platform.local), "arm === armv5") - assert((armv5 === Gem::Platform.local), "armv5 === armv5") - refute((armv7 === Gem::Platform.local), "armv7 === armv5") - refute((arm64 === Gem::Platform.local), "arm64 === armv5") - refute((Gem::Platform.local === arm), "armv5 === arm") + assert(arm === Gem::Platform.local, "arm === armv5") + assert(armv5 === Gem::Platform.local, "armv5 === armv5") + refute(armv7 === Gem::Platform.local, "armv7 === armv5") + refute(arm64 === Gem::Platform.local, "arm64 === armv5") + refute(Gem::Platform.local === arm, "armv5 === arm") util_set_arch "armv7-linux" - assert((arm === Gem::Platform.local), "arm === armv7") - refute((armv5 === Gem::Platform.local), "armv5 === armv7") - assert((armv7 === Gem::Platform.local), "armv7 === armv7") - refute((arm64 === Gem::Platform.local), "arm64 === armv7") - refute((Gem::Platform.local === arm), "armv7 === arm") + assert(arm === Gem::Platform.local, "arm === armv7") + refute(armv5 === Gem::Platform.local, "armv5 === armv7") + assert(armv7 === Gem::Platform.local, "armv7 === armv7") + refute(arm64 === Gem::Platform.local, "arm64 === armv7") + refute(Gem::Platform.local === arm, "armv7 === arm") util_set_arch "arm64-linux" - refute((arm === Gem::Platform.local), "arm === arm64") - refute((armv5 === Gem::Platform.local), "armv5 === arm64") - refute((armv7 === Gem::Platform.local), "armv7 === arm64") - assert((arm64 === Gem::Platform.local), "arm64 === arm64") + refute(arm === Gem::Platform.local, "arm === arm64") + refute(armv5 === Gem::Platform.local, "armv5 === arm64") + refute(armv7 === Gem::Platform.local, "armv7 === arm64") + assert(arm64 === Gem::Platform.local, "arm64 === arm64") end def test_equals3_universal_mingw @@ -413,8 +413,8 @@ def test_equals3_universal_mingw mingw_ucrt = Gem::Platform.new "x64-mingw-ucrt" util_set_arch "x64-mingw-ucrt" - assert((uni_mingw === Gem::Platform.local), "uni_mingw === mingw_ucrt") - assert((mingw_ucrt === Gem::Platform.local), "mingw_ucrt === mingw_ucrt") + assert(uni_mingw === Gem::Platform.local, "uni_mingw === mingw_ucrt") + assert(mingw_ucrt === Gem::Platform.local, "mingw_ucrt === mingw_ucrt") end def test_equals3_version @@ -425,11 +425,11 @@ def test_equals3_version x86_darwin8 = Gem::Platform.new ["x86", "darwin", "8"] x86_darwin9 = Gem::Platform.new ["x86", "darwin", "9"] - assert((x86_darwin === Gem::Platform.local), "x86_darwin === x86_darwin8") - assert((x86_darwin8 === Gem::Platform.local), "x86_darwin8 === x86_darwin8") + assert(x86_darwin === Gem::Platform.local, "x86_darwin === x86_darwin8") + assert(x86_darwin8 === Gem::Platform.local, "x86_darwin8 === x86_darwin8") - refute((x86_darwin7 === Gem::Platform.local), "x86_darwin7 === x86_darwin8") - refute((x86_darwin9 === Gem::Platform.local), "x86_darwin9 === x86_darwin8") + refute(x86_darwin7 === Gem::Platform.local, "x86_darwin7 === x86_darwin8") + refute(x86_darwin9 === Gem::Platform.local, "x86_darwin9 === x86_darwin8") end def test_equals_tilde diff --git a/test/rubygems/test_gem_security_trust_dir.rb b/test/rubygems/test_gem_security_trust_dir.rb index cfde8e9d48a6..bd3dfb86c231 100644 --- a/test/rubygems/test_gem_security_trust_dir.rb +++ b/test/rubygems/test_gem_security_trust_dir.rb @@ -56,7 +56,7 @@ def test_trust_cert assert_path_exist trusted - mask = 0o100600 & (~File.umask) + mask = 0o100600 & ~File.umask assert_equal mask, File.stat(trusted).mode unless Gem.win_platform? @@ -70,7 +70,7 @@ def test_verify assert_path_exist @dest_dir - mask = 0o040700 & (~File.umask) + mask = 0o040700 & ~File.umask mask |= 0o200000 if RUBY_PLATFORM.include?("aix") assert_equal mask, File.stat(@dest_dir).mode unless Gem.win_platform? @@ -91,7 +91,7 @@ def test_verify_wrong_permissions @trust_dir.verify - mask = 0o40700 & (~File.umask) + mask = 0o40700 & ~File.umask mask |= 0o200000 if RUBY_PLATFORM.include?("aix") assert_equal mask, File.stat(@dest_dir).mode unless Gem.win_platform? diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index 3a325c439c1c..2d55e9992be2 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -2216,9 +2216,9 @@ def test_spaceship_name s1 = util_spec "a", "1" s2 = util_spec "b", "1" - assert_equal(-1, (s1 <=> s2)) - assert_equal(0, (s1 <=> s1)) # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands - assert_equal(1, (s2 <=> s1)) + assert_equal(-1, s1 <=> s2) + assert_equal(0, s1 <=> s1) # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands + assert_equal(1, s2 <=> s1) end def test_spaceship_platform @@ -2227,18 +2227,18 @@ def test_spaceship_platform s.platform = Gem::Platform.new "x86-my_platform1" end - assert_equal(-1, (s1 <=> s2)) - assert_equal(0, (s1 <=> s1)) # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands - assert_equal(1, (s2 <=> s1)) + assert_equal(-1, s1 <=> s2) + assert_equal(0, s1 <=> s1) # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands + assert_equal(1, s2 <=> s1) end def test_spaceship_version s1 = util_spec "a", "1" s2 = util_spec "a", "2" - assert_equal(-1, (s1 <=> s2)) - assert_equal(0, (s1 <=> s1)) # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands - assert_equal(1, (s2 <=> s1)) + assert_equal(-1, s1 <=> s2) + assert_equal(0, s1 <=> s1) # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands + assert_equal(1, s2 <=> s1) end def test_spec_file From b291070b3bb3c13d19b205e93a16997a6e63e18a Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Fri, 14 Nov 2025 10:57:18 +0900 Subject: [PATCH 122/295] Use `method_defined?` instead of `instance_methods.include?` While the latter creates an intermediate array of all method names including all ancestors, the former just traverse the inheritance chain and can stop if found once. --- test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb | 2 +- test/rubygems/test_gem_package_tar_header_ractor.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb b/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb index a3fef50d54ef..3693f63df6f5 100644 --- a/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb +++ b/test/rubygems/test_gem_ext_cargo_builder_link_flag_converter.rb @@ -25,7 +25,7 @@ class TestGemExtCargoBuilderLinkFlagConverter < Gem::TestCase }.freeze CASES.each do |test_name, (arg, expected)| - raise "duplicate test name" if instance_methods.include?(test_name) + raise "duplicate test name" if method_defined?(test_name) define_method(test_name) do assert_equal(expected, Gem::Ext::CargoBuilder::LinkFlagConverter.convert(arg)) diff --git a/test/rubygems/test_gem_package_tar_header_ractor.rb b/test/rubygems/test_gem_package_tar_header_ractor.rb index 8f4cfb0072e2..57140648052e 100644 --- a/test/rubygems/test_gem_package_tar_header_ractor.rb +++ b/test/rubygems/test_gem_package_tar_header_ractor.rb @@ -2,7 +2,7 @@ require_relative "package/tar_test_case" -unless Gem::Package::TarTestCase.instance_methods.include?(:assert_ractor) +unless Gem::Package::TarTestCase.method_defined?(:assert_ractor) require "core_assertions" Gem::Package::TarTestCase.include Test::Unit::CoreAssertions end From 3f5330c9fc0a9cfbabf55553dfceb18de2966927 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 11:57:27 +0900 Subject: [PATCH 123/295] Update vendored version of connection_pool to 2.5.4 --- .../connection_pool/lib/connection_pool.rb | 56 +++++++++++++++++-- .../lib/connection_pool/timed_stack.rb | 49 ++++++++-------- .../lib/connection_pool/version.rb | 2 +- 3 files changed, 77 insertions(+), 30 deletions(-) diff --git a/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb b/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb index cb4485e463b5..8cb81be7301a 100644 --- a/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb +++ b/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool.rb @@ -39,7 +39,7 @@ class TimeoutError < ::Gem::Timeout::Error; end # - :auto_reload_after_fork - automatically drop all connections after fork, defaults to true # class Bundler::ConnectionPool - DEFAULTS = {size: 5, timeout: 5, auto_reload_after_fork: true} + DEFAULTS = {size: 5, timeout: 5, auto_reload_after_fork: true}.freeze def self.wrap(options, &block) Wrapper.new(options, &block) @@ -99,7 +99,8 @@ def initialize(options = {}, &block) @available = TimedStack.new(@size, &block) @key = :"pool-#{@available.object_id}" @key_count = :"pool-#{@available.object_id}-count" - INSTANCES[self] = self if INSTANCES + @discard_key = :"pool-#{@available.object_id}-discard" + INSTANCES[self] = self if @auto_reload_after_fork && INSTANCES end def with(options = {}) @@ -116,20 +117,65 @@ def with(options = {}) end alias_method :then, :with + ## + # Marks the current thread's checked-out connection for discard. + # + # When a connection is marked for discard, it will not be returned to the pool + # when checked in. Instead, the connection will be discarded. + # This is useful when a connection has become invalid or corrupted + # and should not be reused. + # + # Takes an optional block that will be called with the connection to be discarded. + # The block should perform any necessary clean-up on the connection. + # + # @yield [conn] + # @yieldparam conn [Object] The connection to be discarded. + # @yieldreturn [void] + # + # + # Note: This only affects the connection currently checked out by the calling thread. + # The connection will be discarded when +checkin+ is called. + # + # @return [void] + # + # @example + # pool.with do |conn| + # begin + # conn.execute("SELECT 1") + # rescue SomeConnectionError + # pool.discard_current_connection # Mark connection as bad + # raise + # end + # end + def discard_current_connection(&block) + ::Thread.current[@discard_key] = block || proc { |conn| conn } + end + def checkout(options = {}) if ::Thread.current[@key] ::Thread.current[@key_count] += 1 ::Thread.current[@key] else ::Thread.current[@key_count] = 1 - ::Thread.current[@key] = @available.pop(options[:timeout] || @timeout) + ::Thread.current[@key] = @available.pop(options[:timeout] || @timeout, options) end end def checkin(force: false) if ::Thread.current[@key] if ::Thread.current[@key_count] == 1 || force - @available.push(::Thread.current[@key]) + if ::Thread.current[@discard_key] + begin + @available.decrement_created + ::Thread.current[@discard_key].call(::Thread.current[@key]) + rescue + nil + ensure + ::Thread.current[@discard_key] = nil + end + else + @available.push(::Thread.current[@key]) + end ::Thread.current[@key] = nil ::Thread.current[@key_count] = nil else @@ -146,7 +192,6 @@ def checkin(force: false) # Shuts down the Bundler::ConnectionPool by passing each connection to +block+ and # then removing it from the pool. Attempting to checkout a connection after # shutdown will raise +Bundler::ConnectionPool::PoolShuttingDownError+. - def shutdown(&block) @available.shutdown(&block) end @@ -155,7 +200,6 @@ def shutdown(&block) # Reloads the Bundler::ConnectionPool by passing each connection to +block+ and then # removing it the pool. Subsequent checkouts will create new connections as # needed. - def reload(&block) @available.shutdown(reload: true, &block) end diff --git a/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb b/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb index 02e4485eb29d..364662d801b4 100644 --- a/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb +++ b/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/timed_stack.rb @@ -1,8 +1,8 @@ ## # The TimedStack manages a pool of homogeneous connections (or any resource -# you wish to manage). Connections are created lazily up to a given maximum +# you wish to manage). Connections are created lazily up to a given maximum # number. - +# # Examples: # # ts = TimedStack.new(1) { MyConnection.new } @@ -16,14 +16,12 @@ # conn = ts.pop # ts.pop timeout: 5 # #=> raises Bundler::ConnectionPool::TimeoutError after 5 seconds - class Bundler::ConnectionPool::TimedStack attr_reader :max ## # Creates a new pool with +size+ connections that are created from the given # +block+. - def initialize(size = 0, &block) @create_block = block @created = 0 @@ -35,9 +33,8 @@ def initialize(size = 0, &block) end ## - # Returns +obj+ to the stack. +options+ is ignored in TimedStack but may be + # Returns +obj+ to the stack. +options+ is ignored in TimedStack but may be # used by subclasses that extend TimedStack. - def push(obj, options = {}) @mutex.synchronize do if @shutdown_block @@ -53,14 +50,13 @@ def push(obj, options = {}) alias_method :<<, :push ## - # Retrieves a connection from the stack. If a connection is available it is - # immediately returned. If no connection is available within the given + # Retrieves a connection from the stack. If a connection is available it is + # immediately returned. If no connection is available within the given # timeout a Bundler::ConnectionPool::TimeoutError is raised. # # +:timeout+ is the only checked entry in +options+ and is preferred over - # the +timeout+ argument (which will be removed in a future release). Other + # the +timeout+ argument (which will be removed in a future release). Other # options may be used by subclasses that extend TimedStack. - def pop(timeout = 0.5, options = {}) options, timeout = timeout, 0.5 if Hash === timeout timeout = options.fetch :timeout, timeout @@ -69,7 +65,9 @@ def pop(timeout = 0.5, options = {}) @mutex.synchronize do loop do raise Bundler::ConnectionPool::PoolShuttingDownError if @shutdown_block - return fetch_connection(options) if connection_stored?(options) + if (conn = try_fetch_connection(options)) + return conn + end connection = try_create(options) return connection if connection @@ -86,7 +84,6 @@ def pop(timeout = 0.5, options = {}) # removing it from the pool. Attempting to checkout a connection after # shutdown will raise +Bundler::ConnectionPool::PoolShuttingDownError+ unless # +:reload+ is +true+. - def shutdown(reload: false, &block) raise ArgumentError, "shutdown must receive a block" unless block @@ -121,14 +118,12 @@ def reap(idle_seconds, &block) ## # Returns +true+ if there are no available connections. - def empty? (@created - @que.length) >= @max end ## # The number of connections available on the stack. - def length @max - @created + @que.length end @@ -139,6 +134,12 @@ def idle @que.length end + ## + # Reduce the created count + def decrement_created + @created -= 1 unless @created == 0 + end + private def current_time @@ -148,8 +149,17 @@ def current_time ## # This is an extension point for TimedStack and is called with a mutex. # - # This method must returns true if a connection is available on the stack. + # This method must returns a connection from the stack if one exists. Allows + # subclasses with expensive match/search algorithms to avoid double-handling + # their stack. + def try_fetch_connection(options = nil) + connection_stored?(options) && fetch_connection(options) + end + ## + # This is an extension point for TimedStack and is called with a mutex. + # + # This method must returns true if a connection is available on the stack. def connection_stored?(options = nil) !@que.empty? end @@ -158,7 +168,6 @@ def connection_stored?(options = nil) # This is an extension point for TimedStack and is called with a mutex. # # This method must return a connection from the stack. - def fetch_connection(options = nil) @que.pop&.first end @@ -167,10 +176,8 @@ def fetch_connection(options = nil) # This is an extension point for TimedStack and is called with a mutex. # # This method must shut down all connections on the stack. - def shutdown_connections(options = nil) - while connection_stored?(options) - conn = fetch_connection(options) + while (conn = try_fetch_connection(options)) @created -= 1 unless @created == 0 @shutdown_block.call(conn) end @@ -181,7 +188,6 @@ def shutdown_connections(options = nil) # # This method returns the oldest idle connection if it has been idle for more than idle_seconds. # This requires that the stack is kept in order of checked in time (oldest first). - def reserve_idle_connection(idle_seconds) return unless idle_connections?(idle_seconds) @@ -194,7 +200,6 @@ def reserve_idle_connection(idle_seconds) # This is an extension point for TimedStack and is called with a mutex. # # Returns true if the first connection in the stack has been idle for more than idle_seconds - def idle_connections?(idle_seconds) connection_stored? && (current_time - @que.first.last > idle_seconds) end @@ -203,7 +208,6 @@ def idle_connections?(idle_seconds) # This is an extension point for TimedStack and is called with a mutex. # # This method must return +obj+ to the stack. - def store_connection(obj, options = nil) @que.push [obj, current_time] end @@ -213,7 +217,6 @@ def store_connection(obj, options = nil) # # This method must create a connection if and only if the total number of # connections allowed has not been met. - def try_create(options = nil) unless @created == @max object = @create_block.call diff --git a/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb b/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb index 88a3714fb895..cbac68b3dc83 100644 --- a/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb +++ b/bundler/lib/bundler/vendor/connection_pool/lib/connection_pool/version.rb @@ -1,3 +1,3 @@ class Bundler::ConnectionPool - VERSION = "2.5.0" + VERSION = "2.5.4" end From cd772eb33f47a0e71210055369acaa756ba6ff22 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 12:02:44 +0900 Subject: [PATCH 124/295] Check only under the lib dir --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 00fed0691e71..8c5cfd846636 100644 --- a/Rakefile +++ b/Rakefile @@ -146,7 +146,7 @@ task postrelease: %w[upload guides:publish blog:publish bundler:build_metadata:c desc "Check for deprecated methods with expired deprecation horizon" task :check_deprecations do if v.segments[1] == 0 && v.segments[2] == 0 - sh("bin/rubocop -r ./tool/cops/deprecations --only Rubygems/Deprecations") + sh("bin/rubocop -r ./tool/cops/deprecations --only Rubygems/Deprecations lib") else puts "Skipping deprecation checks since not releasing a major version." end From c9563498888b9a33d22932393ddbfe99ded007ae Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 12:09:28 +0900 Subject: [PATCH 125/295] Handle rubygems_deprecate with version constraint --- tool/cops/deprecations.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tool/cops/deprecations.rb b/tool/cops/deprecations.rb index 7cce56a17ca6..c48ef23d84e5 100644 --- a/tool/cops/deprecations.rb +++ b/tool/cops/deprecations.rb @@ -19,8 +19,22 @@ class Deprecations < Base RESTRICT_ON_SEND = [:rubygems_deprecate, :rubygems_deprecate_command].freeze def on_send(node) + if node.method_name == :rubygems_deprecate && node.arguments.size >= 3 + version_arg = node.arguments[2] + if version_arg&.str_type? + target_version = version_arg.str_content + return if current_version < Gem::Version.new(target_version) + end + end + add_offense(node, message: format(MSG, method_name: node.method_name)) end + + private + + def current_version + @current_version ||= Gem::Version.new(Gem::VERSION) + end end end end From 60f0b87d47c1b7708b15c3582bbedfda360fc6cf Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 10:31:27 +0900 Subject: [PATCH 126/295] Removed deprecated Gem::BasicSpecification.default_specifications_dir --- lib/rubygems/basic_specification.rb | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lib/rubygems/basic_specification.rb b/lib/rubygems/basic_specification.rb index 591b5557250b..0ed7fc60bbe4 100644 --- a/lib/rubygems/basic_specification.rb +++ b/lib/rubygems/basic_specification.rb @@ -34,15 +34,6 @@ def initialize internal_init end - def self.default_specifications_dir - Gem.default_specifications_dir - end - - class << self - extend Gem::Deprecate - rubygems_deprecate :default_specifications_dir, "Gem.default_specifications_dir" - end - ## # The path to the gem.build_complete file within the extension install # directory. From 96cef34041e254af74876139dac1c482b3ab54a9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 10:36:28 +0900 Subject: [PATCH 127/295] Removed deprecated Gem::Installer#unpack --- lib/rubygems/installer.rb | 11 ----------- test/rubygems/test_gem_installer.rb | 13 ------------- 2 files changed, 24 deletions(-) diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index 52a352162e89..ffd728d6d1e1 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -8,7 +8,6 @@ require_relative "installer_uninstaller_utils" require_relative "exceptions" -require_relative "deprecate" require_relative "package" require_relative "ext" require_relative "user_interaction" @@ -27,7 +26,6 @@ # file. See Gem.pre_install and Gem.post_install for details. class Gem::Installer - extend Gem::Deprecate ## # Paths where env(1) might live. Some systems are broken and have it in @@ -381,15 +379,6 @@ def installation_satisfies_dependency?(dependency) !dependency.matching_specs.empty? end - ## - # Unpacks the gem into the given directory. - - def unpack(directory) - @gem_dir = directory - extract_files - end - rubygems_deprecate :unpack - ## # The location of the spec file that is installed. # diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index 3fa617ef50e0..293fe1e823dd 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -2279,19 +2279,6 @@ def test_shebang_custom_with_expands_and_arguments assert_equal "#!1 #{bin_env} 2 #{Gem.ruby} -ws 3 executable", shebang end - def test_unpack - installer = util_setup_installer - - dest = File.join @gemhome, "gems", @spec.full_name - - Gem::Deprecate.skip_during do - installer.unpack dest - end - - assert_path_exist File.join dest, "lib", "code.rb" - assert_path_exist File.join dest, "bin", "executable" - end - def test_write_build_info_file installer = setup_base_installer From f4b4f12f91bc5e7daa9803ac505c5a80373c8307 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 10:48:48 +0900 Subject: [PATCH 128/295] Removed deprecated Gem::Platform.match --- lib/rubygems/platform.rb | 11 ----------- test/rubygems/test_gem_platform.rb | 18 ------------------ 2 files changed, 29 deletions(-) diff --git a/lib/rubygems/platform.rb b/lib/rubygems/platform.rb index f0eae47c5428..367b00e7e1a2 100644 --- a/lib/rubygems/platform.rb +++ b/lib/rubygems/platform.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require_relative "deprecate" - ## # Available list of platforms for targeting Gem installations. # @@ -21,15 +19,6 @@ def self.local(refresh: false) end end - def self.match(platform) - match_platforms?(platform, Gem.platforms) - end - - class << self - extend Gem::Deprecate - rubygems_deprecate :match, "Gem::Platform.match_spec? or match_gem?" - end - def self.match_platforms?(platform, platforms) platform = Gem::Platform.new(platform) unless platform.is_a?(Gem::Platform) platforms.any? do |local_platform| diff --git a/test/rubygems/test_gem_platform.rb b/test/rubygems/test_gem_platform.rb index 0f1a715ab81a..ca826a0a4746 100644 --- a/test/rubygems/test_gem_platform.rb +++ b/test/rubygems/test_gem_platform.rb @@ -11,15 +11,6 @@ def test_self_local assert_equal Gem::Platform.new(%w[x86 darwin 8]), Gem::Platform.local end - def test_self_match - Gem::Deprecate.skip_during do - assert Gem::Platform.match(nil), "nil == ruby" - assert Gem::Platform.match(Gem::Platform.local), "exact match" - assert Gem::Platform.match(Gem::Platform.local.to_s), "=~ match" - assert Gem::Platform.match(Gem::Platform::RUBY), "ruby" - end - end - def test_self_match_gem? assert Gem::Platform.match_gem?(nil, "json"), "nil == ruby" assert Gem::Platform.match_gem?(Gem::Platform.local, "json"), "exact match" @@ -502,15 +493,6 @@ def test_inspect assert_equal 1, result.scan(/@version=/).size end - def test_gem_platform_match_with_string_argument - util_set_arch "x86_64-linux-musl" - - Gem::Deprecate.skip_during do - assert(Gem::Platform.match(Gem::Platform.new("x86_64-linux")), "should match Gem::Platform") - assert(Gem::Platform.match("x86_64-linux"), "should match String platform") - end - end - def test_constants assert_equal [nil, "java", nil], Gem::Platform::JAVA.to_a assert_equal ["x86", "mswin32", nil], Gem::Platform::MSWIN.to_a From 84ceaff1b78c8ccc0b4d18cae23a1630577b0b89 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 10:55:16 +0900 Subject: [PATCH 129/295] Removed deprecated Gem::Specification#default_executable --- lib/rubygems/specification.rb | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index ea7b58f20e23..408ccc823604 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -735,14 +735,6 @@ def extensions_dir attr_accessor :autorequire # :nodoc: - ## - # Sets the default executable for this gem. - # - # Deprecated: You must now specify the executable name to Gem.bin_path. - - attr_writer :default_executable - rubygems_deprecate :default_executable= - ## # Allows deinstallation of gems with legacy platforms. @@ -1714,24 +1706,6 @@ def date=(date) end end - ## - # The default executable for this gem. - # - # Deprecated: The name of the gem is assumed to be the name of the - # executable now. See Gem.bin_path. - - def default_executable # :nodoc: - if defined?(@default_executable) && @default_executable - result = @default_executable - elsif @executables && @executables.size == 1 - result = Array(@executables).first - else - result = nil - end - result - end - rubygems_deprecate :default_executable - ## # The default value for specification attribute +name+ @@ -2429,7 +2403,6 @@ def to_ruby :specification_version, :version, :has_rdoc, - :default_executable, :metadata, :signing_key, ] From fbf38fc1908ea9d219b2893c0ae8c3e729db469b Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 12:01:10 +0900 Subject: [PATCH 130/295] Removed deprecated Gem::Specification#validate_metadata, validate_dependencies and validate_permissions --- lib/rubygems/specification.rb | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 408ccc823604..15821c5c7952 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -7,7 +7,6 @@ # See LICENSE.txt for permissions. #++ -require_relative "deprecate" require_relative "basic_specification" require_relative "stub_specification" require_relative "platform" @@ -38,7 +37,6 @@ # items you may add to a specification. class Gem::Specification < Gem::BasicSpecification - extend Gem::Deprecate # REFACTOR: Consider breaking out this version stuff into a separate # module. There's enough special stuff around it that it may justify @@ -2540,21 +2538,6 @@ def validate_for_resolution Gem::SpecificationPolicy.new(self).validate_for_resolution end - def validate_metadata - Gem::SpecificationPolicy.new(self).validate_metadata - end - rubygems_deprecate :validate_metadata - - def validate_dependencies - Gem::SpecificationPolicy.new(self).validate_dependencies - end - rubygems_deprecate :validate_dependencies - - def validate_permissions - Gem::SpecificationPolicy.new(self).validate_permissions - end - rubygems_deprecate :validate_permissions - ## # Set the version to +version+. From 728269cc4a8e7be0bc11b63158a5b8b010352817 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 12:04:08 +0900 Subject: [PATCH 131/295] Removed deprecated Gem::Util.silent_system --- lib/rubygems/util.rb | 22 ---------------------- test/rubygems/test_gem_util.rb | 11 ----------- 2 files changed, 33 deletions(-) diff --git a/lib/rubygems/util.rb b/lib/rubygems/util.rb index 51f9c2029f33..ee4106c6cea0 100644 --- a/lib/rubygems/util.rb +++ b/lib/rubygems/util.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require_relative "deprecate" - ## # This module contains various utility methods as module methods. @@ -56,26 +54,6 @@ def self.popen(*command) IO.popen command, &:read end - ## - # Invokes system, but silences all output. - - def self.silent_system(*command) - opt = { out: IO::NULL, err: [:child, :out] } - if Hash === command.last - opt.update(command.last) - cmds = command[0...-1] - else - cmds = command.dup - end - system(*(cmds << opt)) - end - - class << self - extend Gem::Deprecate - - rubygems_deprecate :silent_system - end - ## # Enumerates the parents of +directory+. diff --git a/test/rubygems/test_gem_util.rb b/test/rubygems/test_gem_util.rb index 608210a9031e..9688d066db24 100644 --- a/test/rubygems/test_gem_util.rb +++ b/test/rubygems/test_gem_util.rb @@ -13,17 +13,6 @@ def test_class_popen end end - def test_silent_system - pend if Gem.java_platform? - Gem::Deprecate.skip_during do - out, err = capture_output do - Gem::Util.silent_system(*ruby_with_rubygems_in_load_path, "-e", 'puts "hello"; warn "hello"') - end - assert_empty out - assert_empty err - end - end - def test_traverse_parents FileUtils.mkdir_p "a/b/c" From 94d4e633d116040a4b26ad5a42591d5e83ac802a Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 13:45:05 +0900 Subject: [PATCH 132/295] bin/rubocop -a --only Layout/EmptyLinesAroundClassBody --- lib/rubygems/installer.rb | 1 - lib/rubygems/specification.rb | 1 - 2 files changed, 2 deletions(-) diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index ffd728d6d1e1..4c3038770d48 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -26,7 +26,6 @@ # file. See Gem.pre_install and Gem.post_install for details. class Gem::Installer - ## # Paths where env(1) might live. Some systems are broken and have it in # /bin diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 15821c5c7952..75750a5a2cb5 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -37,7 +37,6 @@ # items you may add to a specification. class Gem::Specification < Gem::BasicSpecification - # REFACTOR: Consider breaking out this version stuff into a separate # module. There's enough special stuff around it that it may justify # a separate class. From 1b3f3bf1940daf0488b55a1f7ca068dac2b9f7ec Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 13:50:30 +0900 Subject: [PATCH 133/295] Removed deprecated Gem::DependencyInstaller#find_gems_with_sources --- lib/rubygems/dependency_installer.rb | 72 ------------ .../rubygems/test_gem_dependency_installer.rb | 111 ------------------ 2 files changed, 183 deletions(-) diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_installer.rb index 6fbfe53643a2..de86d9bf7e9b 100644 --- a/lib/rubygems/dependency_installer.rb +++ b/lib/rubygems/dependency_installer.rb @@ -119,78 +119,6 @@ def consider_remote? @domain == :both || @domain == :remote end - ## - # Returns a list of pairs of gemspecs and source_uris that match - # Gem::Dependency +dep+ from both local (Dir.pwd) and remote (Gem.sources) - # sources. Gems are sorted with newer gems preferred over older gems, and - # local gems preferred over remote gems. - - def find_gems_with_sources(dep, best_only = false) # :nodoc: - set = Gem::AvailableSet.new - - if consider_local? - sl = Gem::Source::Local.new - - if spec = sl.find_gem(dep.name) - if dep.matches_spec? spec - set.add spec, sl - end - end - end - - if consider_remote? - begin - # This is pulled from #spec_for_dependency to allow - # us to filter tuples before fetching specs. - tuples, errors = Gem::SpecFetcher.fetcher.search_for_dependency dep - - if best_only && !tuples.empty? - tuples.sort! do |a,b| - if b[0].version == a[0].version - if b[0].platform != Gem::Platform::RUBY - 1 - else - -1 - end - else - b[0].version <=> a[0].version - end - end - tuples = [tuples.first] - end - - specs = [] - tuples.each do |tup, source| - spec = source.fetch_spec(tup) - rescue Gem::RemoteFetcher::FetchError => e - errors << Gem::SourceFetchProblem.new(source, e) - else - specs << [spec, source] - end - - if @errors - @errors += errors - else - @errors = errors - end - - set << specs - rescue Gem::RemoteFetcher::FetchError => e - # FIX if there is a problem talking to the network, we either need to always tell - # the user (no really_verbose) or fail hard, not silently tell them that we just - # couldn't find their requested gem. - verbose do - "Error fetching remote data:\t\t#{e.message}\n" \ - "Falling back to local-only install" - end - @domain = :local - end - end - - set - end - rubygems_deprecate :find_gems_with_sources - def in_background(what) # :nodoc: fork_happened = false if @build_docs_in_background && Process.respond_to?(:fork) diff --git a/test/rubygems/test_gem_dependency_installer.rb b/test/rubygems/test_gem_dependency_installer.rb index f84881579a6b..3e10c0883aae 100644 --- a/test/rubygems/test_gem_dependency_installer.rb +++ b/test/rubygems/test_gem_dependency_installer.rb @@ -1114,117 +1114,6 @@ def spec.validate(*args); end assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&:full_name) end - def test_find_gems_gems_with_sources - util_setup_gems - - inst = Gem::DependencyInstaller.new - dep = Gem::Dependency.new "b", ">= 0" - - Gem::Specification.reset - - set = Gem::Deprecate.skip_during do - inst.find_gems_with_sources(dep) - end - - assert_kind_of Gem::AvailableSet, set - - s = set.set.first - - assert_equal @b1, s.spec - assert_equal Gem::Source.new(@gem_repo), s.source - end - - def test_find_gems_with_sources_local - util_setup_gems - - FileUtils.mv @a1_gem, @tempdir - inst = Gem::DependencyInstaller.new - dep = Gem::Dependency.new "a", ">= 0" - set = nil - - Dir.chdir @tempdir do - set = Gem::Deprecate.skip_during do - inst.find_gems_with_sources dep - end - end - - gems = set.sorted - - assert_equal 2, gems.length - - remote, local = gems - - assert_equal "a-1", local.spec.full_name, "local spec" - assert_equal File.join(@tempdir, @a1.file_name), - local.source.download(local.spec), "local path" - - assert_equal "a-1", remote.spec.full_name, "remote spec" - assert_equal Gem::Source.new(@gem_repo), remote.source, "remote path" - end - - def test_find_gems_with_sources_prerelease - util_setup_gems - - installer = Gem::DependencyInstaller.new - - dependency = Gem::Dependency.new("a", Gem::Requirement.default) - - set = Gem::Deprecate.skip_during do - installer.find_gems_with_sources(dependency) - end - - releases = set.all_specs - - assert releases.any? {|s| s.name == "a" && s.version.to_s == "1" } - refute releases.any? {|s| s.name == "a" && s.version.to_s == "1.a" } - - dependency.prerelease = true - - set = Gem::Deprecate.skip_during do - installer.find_gems_with_sources(dependency) - end - - prereleases = set.all_specs - - assert_equal [@a1_pre, @a1], prereleases - end - - def test_find_gems_with_sources_with_best_only_and_platform - util_setup_gems - a1_x86_mingw32, = util_gem "a", "1" do |s| - s.platform = "x86-mingw32" - end - util_setup_spec_fetcher @a1, a1_x86_mingw32 - Gem.platforms << Gem::Platform.new("x86-mingw32") - - installer = Gem::DependencyInstaller.new - - dependency = Gem::Dependency.new("a", Gem::Requirement.default) - - set = Gem::Deprecate.skip_during do - installer.find_gems_with_sources(dependency, true) - end - - releases = set.all_specs - - assert_equal [a1_x86_mingw32], releases - end - - def test_find_gems_with_sources_with_bad_source - Gem.sources.replace ["http://not-there.nothing/"] - - installer = Gem::DependencyInstaller.new - - dep = Gem::Dependency.new("a") - - out = Gem::Deprecate.skip_during do - installer.find_gems_with_sources(dep) - end - - assert out.empty? - assert_kind_of Gem::SourceFetchProblem, installer.errors.first - end - def test_resolve_dependencies util_setup_gems From de269cfbb67e536e05187e56812b10b0dbc5151e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 13:44:25 +0900 Subject: [PATCH 134/295] Removed files for `gem query` --- Manifest.txt | 1 - lib/rubygems/command_manager.rb | 1 - lib/rubygems/commands/query_command.rb | 43 - test/rubygems/test_gem_command_manager.rb | 41 - .../test_gem_commands_query_command.rb | 830 ------------------ test/rubygems/test_gem_gem_runner.rb | 11 - 6 files changed, 927 deletions(-) delete mode 100644 lib/rubygems/commands/query_command.rb delete mode 100644 test/rubygems/test_gem_commands_query_command.rb diff --git a/Manifest.txt b/Manifest.txt index 463a0b486b47..16860895ae7f 100644 --- a/Manifest.txt +++ b/Manifest.txt @@ -384,7 +384,6 @@ lib/rubygems/commands/outdated_command.rb lib/rubygems/commands/owner_command.rb lib/rubygems/commands/pristine_command.rb lib/rubygems/commands/push_command.rb -lib/rubygems/commands/query_command.rb lib/rubygems/commands/rdoc_command.rb lib/rubygems/commands/rebuild_command.rb lib/rubygems/commands/search_command.rb diff --git a/lib/rubygems/command_manager.rb b/lib/rubygems/command_manager.rb index 8521517a24ef..76b2fba83550 100644 --- a/lib/rubygems/command_manager.rb +++ b/lib/rubygems/command_manager.rb @@ -58,7 +58,6 @@ class Gem::CommandManager :owner, :pristine, :push, - :query, :rdoc, :rebuild, :search, diff --git a/lib/rubygems/commands/query_command.rb b/lib/rubygems/commands/query_command.rb deleted file mode 100644 index 3b527974a3af..000000000000 --- a/lib/rubygems/commands/query_command.rb +++ /dev/null @@ -1,43 +0,0 @@ -# frozen_string_literal: true - -require_relative "../command" -require_relative "../query_utils" -require_relative "../deprecate" - -class Gem::Commands::QueryCommand < Gem::Command - extend Gem::Deprecate - rubygems_deprecate_command - - include Gem::QueryUtils - - alias_method :warning_without_suggested_alternatives, :deprecation_warning - def deprecation_warning - warning_without_suggested_alternatives - - message = "It is recommended that you use `gem search` or `gem list` instead.\n" - alert_warning message unless Gem::Deprecate.skip - end - - def initialize(name = "query", summary = "Query gem information in local or remote repositories") - super name, summary, - domain: :local, details: false, versions: true, - installed: nil, version: Gem::Requirement.default - - add_option("-n", "--name-matches REGEXP", - "Name of gem(s) to query on matches the", - "provided REGEXP") do |value, options| - options[:name] = /#{value}/i - end - - add_query_options - end - - def description # :nodoc: - <<-EOF -The query command is the basis for the list and search commands. - -You should really use the list and search commands instead. This command -is too hard to use. - EOF - end -end diff --git a/test/rubygems/test_gem_command_manager.rb b/test/rubygems/test_gem_command_manager.rb index f980e7d63bd0..889d5ce9e66a 100644 --- a/test/rubygems/test_gem_command_manager.rb +++ b/test/rubygems/test_gem_command_manager.rb @@ -287,47 +287,6 @@ def test_process_args_build assert_equal "foobar.rb", check_options[:args].first end - # HACK: move to query command test - def test_process_args_query - # capture all query options - check_options = nil - @command_manager["query"].when_invoked do |options| - check_options = options - true - end - - # check defaults - Gem::Deprecate.skip_during do - @command_manager.process_args %w[query] - end - assert_nil(check_options[:name]) - assert_equal :local, check_options[:domain] - assert_equal false, check_options[:details] - - # check settings - check_options = nil - Gem::Deprecate.skip_during do - @command_manager.process_args %w[query --name foobar --local --details] - end - assert_equal(/foobar/i, check_options[:name]) - assert_equal :local, check_options[:domain] - assert_equal true, check_options[:details] - - # remote domain - check_options = nil - Gem::Deprecate.skip_during do - @command_manager.process_args %w[query --remote] - end - assert_equal :remote, check_options[:domain] - - # both (local/remote) domains - check_options = nil - Gem::Deprecate.skip_during do - @command_manager.process_args %w[query --both] - end - assert_equal :both, check_options[:domain] - end - # HACK: move to update command test def test_process_args_update # capture all update options diff --git a/test/rubygems/test_gem_commands_query_command.rb b/test/rubygems/test_gem_commands_query_command.rb deleted file mode 100644 index 8e590df12441..000000000000 --- a/test/rubygems/test_gem_commands_query_command.rb +++ /dev/null @@ -1,830 +0,0 @@ -# frozen_string_literal: true - -require_relative "helper" -require "rubygems/commands/query_command" - -module TestGemCommandsQueryCommandSetup - def setup - super - - @cmd = Gem::Commands::QueryCommand.new - - @specs = add_gems_to_fetcher - @stub_ui = Gem::MockGemUi.new - @stub_fetcher = Gem::FakeFetcher.new - - @stub_fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] = proc do - raise Gem::RemoteFetcher::FetchError - end - end -end - -class TestGemCommandsQueryCommandWithInstalledGems < Gem::TestCase - include TestGemCommandsQueryCommandSetup - - def test_execute - spec_fetcher(&:legacy_platform) - - @cmd.handle_options %w[-r] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_all - spec_fetcher(&:legacy_platform) - - @cmd.handle_options %w[-r --all] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2, 1) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_all_prerelease - spec_fetcher(&:legacy_platform) - - @cmd.handle_options %w[-r --all --prerelease] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (3.a, 2, 1) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_details - spec_fetcher do |fetcher| - fetcher.spec "a", 2 do |s| - s.summary = "This is a lot of text. " * 4 - s.authors = ["Abraham Lincoln", "Hirohito"] - s.homepage = "http://a.example.com/" - end - - fetcher.legacy_platform - end - - @cmd.handle_options %w[-r -d] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2) - Authors: Abraham Lincoln, Hirohito - Homepage: http://a.example.com/ - - This is a lot of text. This is a lot of text. This is a lot of text. - This is a lot of text. - -pl (1) - Platform: i386-linux - Author: A User - Homepage: http://example.com - - this is a summary - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_details_cleans_text - spec_fetcher do |fetcher| - fetcher.spec "a", 2 do |s| - s.summary = "This is a lot of text. " * 4 - s.authors = ["Abraham Lincoln \x01", "\x02 Hirohito"] - s.homepage = "http://a.example.com//x03" - end - - fetcher.legacy_platform - end - - @cmd.handle_options %w[-r -d] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2) - Authors: Abraham Lincoln ., . Hirohito - Homepage: http://a.example.com/. - - This is a lot of text. This is a lot of text. This is a lot of text. - This is a lot of text. - -pl (1) - Platform: i386-linux - Author: A User - Homepage: http://example.com - - this is a summary - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_details_truncates_summary - spec_fetcher do |fetcher| - fetcher.spec "a", 2 do |s| - s.summary = "This is a lot of text. " * 10_000 - s.authors = ["Abraham Lincoln \x01", "\x02 Hirohito"] - s.homepage = "http://a.example.com//x03" - end - - fetcher.legacy_platform - end - - @cmd.handle_options %w[-r -d] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2) - Authors: Abraham Lincoln ., . Hirohito - Homepage: http://a.example.com/. - - Truncating the summary for a-2 to 100,000 characters: -#{" This is a lot of text. This is a lot of text. This is a lot of text.\n" * 1449} This is a lot of te - -pl (1) - Platform: i386-linux - Author: A User - Homepage: http://example.com - - this is a summary - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_installed - @cmd.handle_options %w[-n a --installed] - - assert_raise Gem::MockGemUi::SystemExitException do - use_ui @stub_ui do - @cmd.execute - end - end - - assert_equal "true\n", @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_installed_inverse - @cmd.handle_options %w[-n a --no-installed] - - e = assert_raise Gem::MockGemUi::TermError do - use_ui @stub_ui do - @cmd.execute - end - end - - assert_equal "false\n", @stub_ui.output - assert_equal "", @stub_ui.error - - assert_equal 1, e.exit_code - end - - def test_execute_installed_inverse_not_installed - @cmd.handle_options %w[-n not_installed --no-installed] - - assert_raise Gem::MockGemUi::SystemExitException do - use_ui @stub_ui do - @cmd.execute - end - end - - assert_equal "true\n", @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_installed_no_name - @cmd.handle_options %w[--installed] - - e = assert_raise Gem::MockGemUi::TermError do - use_ui @stub_ui do - @cmd.execute - end - end - - assert_equal "", @stub_ui.output - assert_equal "ERROR: You must specify a gem name\n", @stub_ui.error - - assert_equal 4, e.exit_code - end - - def test_execute_installed_not_installed - @cmd.handle_options %w[-n not_installed --installed] - - e = assert_raise Gem::MockGemUi::TermError do - use_ui @stub_ui do - @cmd.execute - end - end - - assert_equal "false\n", @stub_ui.output - assert_equal "", @stub_ui.error - - assert_equal 1, e.exit_code - end - - def test_execute_installed_version - @cmd.handle_options %w[-n a --installed --version 2] - - assert_raise Gem::MockGemUi::SystemExitException do - use_ui @stub_ui do - @cmd.execute - end - end - - assert_equal "true\n", @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_installed_version_not_installed - @cmd.handle_options %w[-n c --installed --version 2] - - e = assert_raise Gem::MockGemUi::TermError do - use_ui @stub_ui do - @cmd.execute - end - end - - assert_equal "false\n", @stub_ui.output - assert_equal "", @stub_ui.error - - assert_equal 1, e.exit_code - end - - def test_execute_local - spec_fetcher(&:legacy_platform) - - @cmd.options[:domain] = :local - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** LOCAL GEMS *** - -a (3.a, 2, 1) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_local_notty - spec_fetcher(&:legacy_platform) - - @cmd.handle_options %w[] - - @stub_ui.outs.tty = false - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF -a (3.a, 2, 1) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_local_quiet - spec_fetcher(&:legacy_platform) - - @cmd.options[:domain] = :local - Gem.configuration.verbose = false - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF -a (3.a, 2, 1) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_no_versions - spec_fetcher(&:legacy_platform) - - @cmd.handle_options %w[-r --no-versions] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a -pl - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_notty - spec_fetcher(&:legacy_platform) - - @cmd.handle_options %w[-r] - - @stub_ui.outs.tty = false - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF -a (2) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_prerelease - @cmd.handle_options %w[-r --prerelease] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (3.a) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_prerelease_local - spec_fetcher(&:legacy_platform) - - @cmd.handle_options %w[-l --prerelease] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** LOCAL GEMS *** - -a (3.a, 2, 1) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - end - - def test_execute_no_prerelease_local - spec_fetcher(&:legacy_platform) - - @cmd.handle_options %w[-l --no-prerelease] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** LOCAL GEMS *** - -a (2, 1) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - end - - def test_execute_remote - spec_fetcher(&:legacy_platform) - - @cmd.options[:domain] = :remote - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_remote_notty - spec_fetcher(&:legacy_platform) - - @cmd.handle_options %w[] - - @stub_ui.outs.tty = false - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF -a (3.a, 2, 1) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_remote_quiet - spec_fetcher(&:legacy_platform) - - @cmd.options[:domain] = :remote - Gem.configuration.verbose = false - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF -a (2) -pl (1 i386-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_make_entry - a_2_name = @specs["a-2"].original_name - - @stub_fetcher.data.delete \ - "#{@gem_repo}quick/Marshal.#{Gem.marshal_version}/#{a_2_name}.gemspec.rz" - - a2 = @specs["a-2"] - entry_tuples = [ - [Gem::NameTuple.new(a2.name, a2.version, a2.platform), - Gem.sources.first], - ] - - platforms = { a2.version => [a2.platform] } - - entry = @cmd.send :make_entry, entry_tuples, platforms - - assert_equal "a (2)", entry - end - - # Test for multiple args handling! - def test_execute_multiple_args - spec_fetcher(&:legacy_platform) - - @cmd.handle_options %w[a pl] - - use_ui @stub_ui do - @cmd.execute - end - - assert_match(/^a /, @stub_ui.output) - assert_match(/^pl /, @stub_ui.output) - assert_equal "", @stub_ui.error - end - - def test_show_gems - @cmd.options[:name] = // - @cmd.options[:domain] = :remote - - use_ui @stub_ui do - @cmd.send :show_gems, /a/i - end - - assert_match(/^a /, @stub_ui.output) - refute_match(/^pl /, @stub_ui.output) - assert_empty @stub_ui.error - end - - private - - def add_gems_to_fetcher - spec_fetcher do |fetcher| - fetcher.spec "a", 1 - fetcher.spec "a", 2 - fetcher.spec "a", "3.a" - end - end -end - -class TestGemCommandsQueryCommandWithoutInstalledGems < Gem::TestCase - include TestGemCommandsQueryCommandSetup - - def test_execute_platform - spec_fetcher do |fetcher| - fetcher.spec "a", 1 - fetcher.spec "a", 1 do |s| - s.platform = "x86-linux" - end - - fetcher.spec "a", 2 do |s| - s.platform = "universal-darwin" - end - end - - @cmd.handle_options %w[-r -a] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -a (2 universal-darwin, 1 ruby x86-linux) - EOF - - assert_equal expected, @stub_ui.output - assert_equal "", @stub_ui.error - end - - def test_execute_show_default_gems - spec_fetcher {|fetcher| fetcher.spec "a", 2 } - - a1 = new_default_spec "a", 1 - install_default_gems a1 - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** LOCAL GEMS *** - -a (2, default: 1) -EOF - - assert_equal expected, @stub_ui.output - end - - def test_execute_show_default_gems_with_platform - a1 = new_default_spec "a", 1 - a1.platform = "java" - install_default_gems a1 - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** LOCAL GEMS *** - -a (default: 1 java) -EOF - - assert_equal expected, @stub_ui.output - end - - def test_execute_default_details - spec_fetcher do |fetcher| - fetcher.spec "a", 2 - end - - a1 = new_default_spec "a", 1 - install_default_gems a1 - - @cmd.handle_options %w[-l -d] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** LOCAL GEMS *** - -a (2, 1) - Author: A User - Homepage: http://example.com - Installed at (2): #{@gemhome} - (1, default): #{a1.base_dir} - - this is a summary - EOF - - assert_equal expected, @stub_ui.output - end - - def test_execute_local_details - spec_fetcher do |fetcher| - fetcher.spec "a", 1 do |s| - s.platform = "x86-linux" - end - - fetcher.spec "a", 2 do |s| - s.summary = "This is a lot of text. " * 4 - s.authors = ["Abraham Lincoln", "Hirohito"] - s.homepage = "http://a.example.com/" - s.platform = "universal-darwin" - end - - fetcher.legacy_platform - end - - @cmd.handle_options %w[-l -d] - - use_ui @stub_ui do - @cmd.execute - end - - str = @stub_ui.output - - str.gsub!(/\(\d\): [^\n]*/, "-") - str.gsub!(/at: [^\n]*/, "at: -") - - expected = <<-EOF - -*** LOCAL GEMS *** - -a (2, 1) - Platforms: - 1: x86-linux - 2: universal-darwin - Authors: Abraham Lincoln, Hirohito - Homepage: http://a.example.com/ - Installed at - - - - - This is a lot of text. This is a lot of text. This is a lot of text. - This is a lot of text. - -pl (1) - Platform: i386-linux - Author: A User - Homepage: http://example.com - Installed at: - - - this is a summary - EOF - - assert_equal expected, @stub_ui.output - end - - def test_execute_exact_remote - spec_fetcher do |fetcher| - fetcher.spec "coolgem-omg", 3 - fetcher.spec "coolgem", "4.2.1" - fetcher.spec "wow_coolgem", 1 - end - - @cmd.handle_options %w[--remote --exact coolgem] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** REMOTE GEMS *** - -coolgem (4.2.1) - EOF - - assert_equal expected, @stub_ui.output - end - - def test_execute_exact_local - spec_fetcher do |fetcher| - fetcher.spec "coolgem-omg", 3 - fetcher.spec "coolgem", "4.2.1" - fetcher.spec "wow_coolgem", 1 - end - - @cmd.handle_options %w[--exact coolgem] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** LOCAL GEMS *** - -coolgem (4.2.1) - EOF - - assert_equal expected, @stub_ui.output - end - - def test_execute_exact_multiple - spec_fetcher do |fetcher| - fetcher.spec "coolgem-omg", 3 - fetcher.spec "coolgem", "4.2.1" - fetcher.spec "wow_coolgem", 1 - - fetcher.spec "othergem-omg", 3 - fetcher.spec "othergem", "1.2.3" - fetcher.spec "wow_othergem", 1 - end - - @cmd.handle_options %w[--exact coolgem othergem] - - use_ui @stub_ui do - @cmd.execute - end - - expected = <<-EOF - -*** LOCAL GEMS *** - -coolgem (4.2.1) - -*** LOCAL GEMS *** - -othergem (1.2.3) - EOF - - assert_equal expected, @stub_ui.output - end - - def test_depprecated - assert @cmd.deprecated? - end - - private - - def add_gems_to_fetcher - spec_fetcher do |fetcher| - fetcher.download "a", 1 - fetcher.download "a", 2 - fetcher.download "a", "3.a" - end - end -end diff --git a/test/rubygems/test_gem_gem_runner.rb b/test/rubygems/test_gem_gem_runner.rb index 4fb205040c33..9cc2fac61910 100644 --- a/test/rubygems/test_gem_gem_runner.rb +++ b/test/rubygems/test_gem_gem_runner.rb @@ -82,17 +82,6 @@ def test_extract_build_args assert_equal %w[--foo], args end - def test_query_is_deprecated - args = %w[query] - - use_ui @ui do - @runner.run(args) - end - - assert_match(/WARNING: query command is deprecated. It will be removed in Rubygems [0-9]+/, @ui.error) - assert_match(/WARNING: It is recommended that you use `gem search` or `gem list` instead/, @ui.error) - end - def test_info_succeeds args = %w[info] From b043538576793b42e8928b94f695f9bbc89b9bc7 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 15:14:33 +0900 Subject: [PATCH 135/295] Removed deprecated Gem::Specification#has_rdoc, has_rdoc= and has_rdoc? --- lib/rubygems/specification.rb | 26 +------------------------ test/rubygems/test_gem_specification.rb | 1 - 2 files changed, 1 insertion(+), 26 deletions(-) diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 75750a5a2cb5..4c5ecb8f794f 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -1308,7 +1308,7 @@ def self._load(str) spec.instance_variable_set :@authors, array[12] spec.instance_variable_set :@description, array[13] spec.instance_variable_set :@homepage, array[14] - spec.instance_variable_set :@has_rdoc, array[15] + # offset due to has_rdoc removal spec.instance_variable_set :@licenses, array[17] spec.instance_variable_set :@metadata, array[18] spec.instance_variable_set :@loaded, false @@ -1884,29 +1884,6 @@ def gems_dir @gems_dir ||= File.join(base_dir, "gems") end - ## - # Deprecated and ignored, defaults to true. - # - # Formerly used to indicate this gem was RDoc-capable. - - def has_rdoc # :nodoc: - true - end - rubygems_deprecate :has_rdoc - - ## - # Deprecated and ignored. - # - # Formerly used to indicate this gem was RDoc-capable. - - def has_rdoc=(ignored) # :nodoc: - @has_rdoc = true - end - rubygems_deprecate :has_rdoc= - - alias_method :has_rdoc?, :has_rdoc # :nodoc: - rubygems_deprecate :has_rdoc? - ## # True if this gem has files in test_files @@ -2399,7 +2376,6 @@ def to_ruby :required_rubygems_version, :specification_version, :version, - :has_rdoc, :metadata, :signing_key, ] diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index 2d55e9992be2..05138e570ebe 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -33,7 +33,6 @@ class TestGemSpecification < Gem::TestCase Gem::Specification.new do |s| s.name = %q{keyedlist} s.version = %q{0.4.0} - s.has_rdoc = true s.summary = %q{A Hash which automatically computes keys.} s.files = [%q{lib/keyedlist.rb}] s.require_paths = [%q{lib}] From ded5e909c23dd5d1448cb56e1712f20a0024944a Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Sun, 16 Nov 2025 15:53:00 -0800 Subject: [PATCH 136/295] Undeprecate `Gem::Version.new(nil)` It seems like we were trying to deprecate passing `nil` to Gem::Version.new. This breaks existing code, and I don't think there is a good reason to deprecate this usage. I believe what we want to prevent is the following code: ```ruby Gem::Specification.new do |spec| spec.version = nil # suddenly the spec version is 0! p spec.version end ``` This commit allows people to manually construct `Gem::Version.new(nil)`, but when someone assigns `nil` as the Gem specification version, it sets the spec version to `nil` (making the specification invalid). People who manually construct `Gem::Version` objects and use nil should be allowed to do it, and `Gem::Version.new(nil) == Gem::Version.new("0")`, but people who assign `nil` in a gemspec will get an invalid gemspec. I think deprecation started [here](https://github.com/ruby/rubygems/pull/2203) but there doesn't seem to be a reason to do it. Fixes #9052 --- lib/rubygems/specification.rb | 2 +- lib/rubygems/version.rb | 19 ++------------ test/rubygems/test_gem_requirement.rb | 22 +++------------- test/rubygems/test_gem_specification.rb | 35 +++++++++++++++++++++---- test/rubygems/test_gem_version.rb | 20 +++++--------- 5 files changed, 43 insertions(+), 55 deletions(-) diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 4c5ecb8f794f..a9ec6aa3a3c8 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -2517,7 +2517,7 @@ def validate_for_resolution # Set the version to +version+. def version=(version) - @version = Gem::Version.create(version) + @version = version.nil? ? version : Gem::Version.create(version) end def stubbed? diff --git a/lib/rubygems/version.rb b/lib/rubygems/version.rb index 25c412be4b6b..c9fffc1cb7ca 100644 --- a/lib/rubygems/version.rb +++ b/lib/rubygems/version.rb @@ -171,9 +171,7 @@ def version # True if the +version+ string matches RubyGems' requirements. def self.correct?(version) - nil_versions_are_discouraged! if version.nil? - - ANCHORED_VERSION_PATTERN.match?(version.to_s) + version.nil? || ANCHORED_VERSION_PATTERN.match?(version.to_s) end ## @@ -182,15 +180,10 @@ def self.correct?(version) # # ver1 = Version.create('1.3.17') # -> (Version object) # ver2 = Version.create(ver1) # -> (ver1) - # ver3 = Version.create(nil) # -> nil def self.create(input) if self === input # check yourself before you wreck yourself input - elsif input.nil? - nil_versions_are_discouraged! - - nil else new input end @@ -206,14 +199,6 @@ def self.new(version) # :nodoc: @@all[version] ||= super end - def self.nil_versions_are_discouraged! - unless Gem::Deprecate.skip - warn "nil versions are discouraged and will be deprecated in Rubygems 4" - end - end - - private_class_method :nil_versions_are_discouraged! - ## # Constructs a Version from the +version+ string. A version string is a # series of digits or ASCII letters separated by dots. @@ -224,7 +209,7 @@ def initialize(version) end # If version is an empty string convert it to 0 - version = 0 if version.is_a?(String) && /\A\s*\Z/.match?(version) + version = 0 if version.nil? || (version.is_a?(String) && /\A\s*\Z/.match?(version)) @version = version.to_s diff --git a/test/rubygems/test_gem_requirement.rb b/test/rubygems/test_gem_requirement.rb index de0d11ec00b6..00634dc7f43f 100644 --- a/test/rubygems/test_gem_requirement.rb +++ b/test/rubygems/test_gem_requirement.rb @@ -137,11 +137,7 @@ def test_satisfied_by_eh_bang_equal refute_satisfied_by "1.2", r assert_satisfied_by "1.3", r - assert_raise ArgumentError do - Gem::Deprecate.skip_during do - assert_satisfied_by nil, r - end - end + assert_satisfied_by nil, r end def test_satisfied_by_eh_blank @@ -151,11 +147,7 @@ def test_satisfied_by_eh_blank assert_satisfied_by "1.2", r refute_satisfied_by "1.3", r - assert_raise ArgumentError do - Gem::Deprecate.skip_during do - assert_satisfied_by nil, r - end - end + refute_satisfied_by nil, r end def test_satisfied_by_eh_equal @@ -165,11 +157,7 @@ def test_satisfied_by_eh_equal assert_satisfied_by "1.2", r refute_satisfied_by "1.3", r - assert_raise ArgumentError do - Gem::Deprecate.skip_during do - assert_satisfied_by nil, r - end - end + refute_satisfied_by nil, r end def test_satisfied_by_eh_gt @@ -179,9 +167,7 @@ def test_satisfied_by_eh_gt refute_satisfied_by "1.2", r assert_satisfied_by "1.3", r - assert_raise ArgumentError do - r.satisfied_by? nil - end + refute_satisfied_by nil, r end def test_satisfied_by_eh_gte diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index 05138e570ebe..e8c2c0eb4702 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -1247,12 +1247,37 @@ def test_initialize_prerelease_version_before_name end def test_initialize_nil_version - expected = "nil versions are discouraged and will be deprecated in Rubygems 4\n" - actual_stdout, actual_stderr = capture_output do - Gem::Specification.new.version = nil + spec = Gem::Specification.new + spec.name = "test-name" + + assert_nil spec.version + spec.version = nil + assert_nil spec.version + + spec.summary = "test gem" + spec.authors = ["test author"] + e = assert_raise Gem::InvalidSpecificationException do + spec.validate end - assert_empty actual_stdout - assert_equal(expected, actual_stderr) + assert_match("missing value for attribute version", e.message) + end + + def test_set_version_to_nil_after_setting_version + spec = Gem::Specification.new + spec.name = "test-name" + + assert_nil spec.version + spec.version = "1.0.0" + assert_equal "1.0.0", spec.version.to_s + spec.version = nil + assert_nil spec.version + + spec.summary = "test gem" + spec.authors = ["test author"] + e = assert_raise Gem::InvalidSpecificationException do + spec.validate + end + assert_match("missing value for attribute version", e.message) end def test__dump diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb index cf771bc5a14a..1d963daa65ba 100644 --- a/test/rubygems/test_gem_version.rb +++ b/test/rubygems/test_gem_version.rb @@ -7,6 +7,11 @@ class TestGemVersion < Gem::TestCase class V < ::Gem::Version end + def test_nil_is_zero + zero = Gem::Version.create nil + assert_equal Gem::Version.create(0), zero + end + def test_bump assert_bumped_version_equal "5.3", "5.2.4" end @@ -35,13 +40,6 @@ def test_class_create assert_same real, Gem::Version.create(real) - expected = "nil versions are discouraged and will be deprecated in Rubygems 4\n" - actual_stdout, actual_stderr = capture_output do - assert_nil Gem::Version.create(nil) - end - assert_empty actual_stdout - assert_equal(expected, actual_stderr) - assert_equal v("5.1"), Gem::Version.create("5.1") ver = "1.1" @@ -51,13 +49,7 @@ def test_class_create def test_class_correct assert_equal true, Gem::Version.correct?("5.1") assert_equal false, Gem::Version.correct?("an incorrect version") - - expected = "nil versions are discouraged and will be deprecated in Rubygems 4\n" - actual_stdout, actual_stderr = capture_output do - Gem::Version.correct?(nil) - end - assert_empty actual_stdout - assert_equal(expected, actual_stderr) + assert_equal true, Gem::Version.correct?(nil) end def test_class_new_subclass From 3471646d43cb5d47f7d69a23b7a9562f3e9525ed Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 17 Nov 2025 11:17:19 +0900 Subject: [PATCH 137/295] Removed deprecated -C option from gem build --- lib/rubygems/commands/build_command.rb | 7 ------- test/rubygems/test_gem_commands_build_command.rb | 10 ---------- test/rubygems/test_gem_commands_help_command.rb | 2 +- 3 files changed, 1 insertion(+), 18 deletions(-) diff --git a/lib/rubygems/commands/build_command.rb b/lib/rubygems/commands/build_command.rb index 2ec83241418d..cfe1f8ec3c86 100644 --- a/lib/rubygems/commands/build_command.rb +++ b/lib/rubygems/commands/build_command.rb @@ -25,13 +25,6 @@ def initialize add_option "-o", "--output FILE", "output gem with the given filename" do |value, options| options[:output] = value end - - add_option "-C PATH", "Run as if gem build was started in instead of the current working directory." do |value, options| - options[:build_path] = value - end - deprecate_option "-C", - version: "4.0", - extra_msg: "-C is a global flag now. Use `gem -C PATH build GEMSPEC_FILE [options]` instead" end def arguments # :nodoc: diff --git a/test/rubygems/test_gem_commands_build_command.rb b/test/rubygems/test_gem_commands_build_command.rb index d44126d2046a..9339f41f7cb8 100644 --- a/test/rubygems/test_gem_commands_build_command.rb +++ b/test/rubygems/test_gem_commands_build_command.rb @@ -43,16 +43,6 @@ def test_handle_options assert_includes Gem.platforms, Gem::Platform.local end - def test_handle_deprecated_options - use_ui @ui do - @cmd.handle_options %w[-C ./test/dir] - end - - assert_equal "WARNING: The \"-C\" option has been deprecated and will be removed in Rubygems 4.0. " \ - "-C is a global flag now. Use `gem -C PATH build GEMSPEC_FILE [options]` instead\n", - @ui.error - end - def test_options_filename gemspec_file = File.join(@tempdir, @gem.spec_name) diff --git a/test/rubygems/test_gem_commands_help_command.rb b/test/rubygems/test_gem_commands_help_command.rb index 01ab4aab2fe4..4ce7285d1f8c 100644 --- a/test/rubygems/test_gem_commands_help_command.rb +++ b/test/rubygems/test_gem_commands_help_command.rb @@ -36,7 +36,7 @@ def test_gem_help_platforms def test_gem_help_build util_gem "build" do |out, err| - assert_match(/-C PATH *Run as if gem build was started in /, out) + assert_match(/--platform PLATFORM\s+Specify the platform of gem to build/, out) assert_equal "", err end end From b237f759b00e82bdcea4a038f42606c5f79b559c Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 17 Nov 2025 12:11:51 +0900 Subject: [PATCH 138/295] Use released version of net-http-persistent-4.0.6 --- .../lib/net/http/persistent.rb | 7 ++- .../net-http-persistent-v4.0.6.patch | 46 +++++++++++-------- tool/bundler/vendor_gems.rb | 2 +- tool/bundler/vendor_gems.rb.lock | 14 ++---- 4 files changed, 38 insertions(+), 31 deletions(-) diff --git a/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb b/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb index 03909a298b6f..93e403a5bb36 100644 --- a/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +++ b/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb @@ -1,7 +1,10 @@ require_relative '../../../../../vendored_net_http' require_relative '../../../../../vendored_uri' -require 'cgi/escape' -require 'cgi/util' unless defined?(CGI::EscapeExt) +begin + require 'cgi/escape' +rescue LoadError + require 'cgi/util' # for escaping +end require_relative '../../../../connection_pool/lib/connection_pool' autoload :OpenSSL, 'openssl' diff --git a/tool/automatiek/net-http-persistent-v4.0.6.patch b/tool/automatiek/net-http-persistent-v4.0.6.patch index 9eb0c1c28ec6..65867aefdc8b 100644 --- a/tool/automatiek/net-http-persistent-v4.0.6.patch +++ b/tool/automatiek/net-http-persistent-v4.0.6.patch @@ -1,30 +1,29 @@ diff --git b/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb a/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb -index b3ebf6ecb..546409d03 100644 +index f57e64df9c..52a8051183 100644 --- b/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +++ a/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb -@@ -1,14 +1,9 @@ +@@ -1,12 +1,11 @@ -require_relative '../../../../../../../../lib/rubygems/vendor/net-http/lib/net/http' -require_relative '../../../../../../../../lib/rubygems/vendor/uri/lib/uri' +-require 'cgi' # for escaping +-require_relative '../../../../connection_pool/lib/connection_pool' +- +require_relative '../../../../../vendored_net_http' +require_relative '../../../../../vendored_uri' - require 'cgi/escape' - require 'cgi/util' unless defined?(CGI::EscapeExt) - require_relative '../../../../connection_pool/lib/connection_pool' - --begin + begin - require_relative '../../../../../../../../lib/rubygems/vendor/net-http/lib/net/http/pipeline' --rescue LoadError --end -- - autoload :OpenSSL, 'openssl' ++ require 'cgi/escape' + rescue LoadError ++ require 'cgi/util' # for escaping + end ++require_relative '../../../../connection_pool/lib/connection_pool' - ## -@@ -761,23 +756,6 @@ - @max_retries = retries + autoload :OpenSSL, 'openssl' +@@ -762,23 +761,6 @@ def max_retries= retries reconnect -- end -- + end + - ## - # Pipelines +requests+ to the HTTP server at +uri+ yielding responses if a - # block is given. Returns all responses received. @@ -40,6 +39,17 @@ index b3ebf6ecb..546409d03 100644 - connection_for uri do |connection| - connection.http.pipeline requests, &block - end - end - +- end +- ## + # Sets this client's SSL private key + +@@ -826,7 +808,7 @@ def proxy= proxy + @proxy_connection_id = [nil, *@proxy_args].join ':' + + if @proxy_uri.query then +- @no_proxy = CGI.parse(@proxy_uri.query)['no_proxy'].join(',').downcase.split(',').map { |x| x.strip }.reject { |x| x.empty? } ++ @no_proxy = Gem::URI.decode_www_form(@proxy_uri.query).filter_map { |k, v| v if k == 'no_proxy' }.join(',').downcase.split(',').map { |x| x.strip }.reject { |x| x.empty? } + end + end + diff --git a/tool/bundler/vendor_gems.rb b/tool/bundler/vendor_gems.rb index 72546faf3163..93df51899b52 100644 --- a/tool/bundler/vendor_gems.rb +++ b/tool/bundler/vendor_gems.rb @@ -5,7 +5,7 @@ gem "fileutils", "1.7.3" gem "molinillo", github: "cocoapods/molinillo" gem "net-http", github: "ruby/net-http", ref: "d8fd39c589279b1aaec85a7c8de9b3e199c72efe" -gem "net-http-persistent", github: "hsbt/net-http-persistent", ref: "9b6fbd733cf35596dfe7f80c0c154f9f3d17dbdb" +gem "net-http-persistent", "4.0.6" gem "net-protocol", "0.2.2" gem "optparse", "0.6.0" gem "pub_grub", github: "jhawthorn/pub_grub", ref: "df6add45d1b4d122daff2f959c9bd1ca93d14261" diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index 606c49d09cb0..d6ca1a1fdd15 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -4,14 +4,6 @@ GIT specs: molinillo (0.8.0) -GIT - remote: https://github.com/hsbt/net-http-persistent.git - revision: 9b6fbd733cf35596dfe7f80c0c154f9f3d17dbdb - ref: 9b6fbd733cf35596dfe7f80c0c154f9f3d17dbdb - specs: - net-http-persistent (4.0.6) - connection_pool (~> 2.2, >= 2.2.4) - GIT remote: https://github.com/jhawthorn/pub_grub.git revision: df6add45d1b4d122daff2f959c9bd1ca93d14261 @@ -32,6 +24,8 @@ GEM specs: connection_pool (2.5.4) fileutils (1.7.3) + net-http-persistent (4.0.6) + connection_pool (~> 2.2, >= 2.2.4) net-protocol (0.2.2) timeout optparse (0.6.0) @@ -55,7 +49,7 @@ DEPENDENCIES fileutils (= 1.7.3) molinillo! net-http! - net-http-persistent! + net-http-persistent (= 4.0.6) net-protocol (= 0.2.2) optparse (= 0.6.0) pub_grub! @@ -71,7 +65,7 @@ CHECKSUMS fileutils (1.7.3) sha256=57271e854b694a87755d76f836f5c57b2c9538ebbaf4b2154bb66addf15eb5da molinillo (0.8.0) net-http (0.6.0) - net-http-persistent (4.0.6) + net-http-persistent (4.0.6) sha256=2abb3a04438edf6cb9e0e7e505969605f709eda3e3c5211beadd621a2c84dd5d net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8 optparse (0.6.0) sha256=25e90469c1cd44048a89dc01c1dde9d5f0bdf717851055fb18237780779b068c pub_grub (0.5.0) From 7e6ce7be57a7258b90b6373497c0350ed6e6036b Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 17 Nov 2025 12:47:22 +0900 Subject: [PATCH 139/295] Use released version of net-http-0.8.0 --- lib/rubygems/vendor/net-http/lib/net/http.rb | 107 ++++++++++------ .../net-http/lib/net/http/exceptions.rb | 3 +- .../net-http/lib/net/http/generic_request.rb | 45 ++++--- .../vendor/net-http/lib/net/http/header.rb | 12 +- .../vendor/net-http/lib/net/http/requests.rb | 16 ++- .../vendor/net-http/lib/net/http/response.rb | 3 +- .../vendor/net-http/lib/net/http/responses.rb | 72 ++++++++++- tool/automatiek/net-http-v0.4.0.patch | 118 ------------------ tool/automatiek/net-http-v0.8.0.patch | 29 +++++ tool/automatiek/vendor.rb | 2 +- tool/bundler/vendor_gems.rb | 2 +- tool/bundler/vendor_gems.rb.lock | 14 +-- 12 files changed, 232 insertions(+), 191 deletions(-) delete mode 100644 tool/automatiek/net-http-v0.4.0.patch create mode 100644 tool/automatiek/net-http-v0.8.0.patch diff --git a/lib/rubygems/vendor/net-http/lib/net/http.rb b/lib/rubygems/vendor/net-http/lib/net/http.rb index 0e860566148e..438f2977c9b9 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http.rb @@ -102,14 +102,14 @@ class HTTPHeaderSyntaxError < StandardError; end # # == URIs # - # On the internet, a URI + # On the internet, a Gem::URI # ({Universal Resource Identifier}[https://en.wikipedia.org/wiki/Uniform_Resource_Identifier]) # is a string that identifies a particular resource. # It consists of some or all of: scheme, hostname, path, query, and fragment; - # see {URI syntax}[https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax]. + # see {Gem::URI syntax}[https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax]. # - # A Ruby {Gem::URI::Generic}[https://docs.ruby-lang.org/en/master/Gem/URI/Generic.html] object - # represents an internet URI. + # A Ruby {Gem::URI::Generic}[https://docs.ruby-lang.org/en/master/Gem::URI/Generic.html] object + # represents an internet Gem::URI. # It provides, among others, methods # +scheme+, +hostname+, +path+, +query+, and +fragment+. # @@ -144,7 +144,7 @@ class HTTPHeaderSyntaxError < StandardError; end # # === Queries # - # A host-specific query adds name/value pairs to the URI: + # A host-specific query adds name/value pairs to the Gem::URI: # # _uri = uri.dup # params = {userId: 1, completed: false} @@ -154,7 +154,7 @@ class HTTPHeaderSyntaxError < StandardError; end # # === Fragments # - # A {URI fragment}[https://en.wikipedia.org/wiki/URI_fragment] has no effect + # A {Gem::URI fragment}[https://en.wikipedia.org/wiki/URI_fragment] has no effect # in \Gem::Net::HTTP; # the same data is returned, regardless of whether a fragment is included. # @@ -327,9 +327,9 @@ class HTTPHeaderSyntaxError < StandardError; end # res = http.request(req) # end # - # Or if you simply want to make a GET request, you may pass in a URI + # Or if you simply want to make a GET request, you may pass in a Gem::URI # object that has an \HTTPS URL. \Gem::Net::HTTP automatically turns on TLS - # verification if the URI object has a 'https' :URI scheme: + # verification if the Gem::URI object has a 'https' Gem::URI scheme: # # uri # => # # Gem::Net::HTTP.get(uri) @@ -374,7 +374,7 @@ class HTTPHeaderSyntaxError < StandardError; end # # When environment variable 'http_proxy' # is set to a \Gem::URI string, - # the returned +http+ will have the server at that URI as its proxy; + # the returned +http+ will have the server at that Gem::URI as its proxy; # note that the \Gem::URI string must have a protocol # such as 'http' or 'https': # @@ -724,7 +724,7 @@ class HTTPHeaderSyntaxError < StandardError; end class HTTP < Protocol # :stopdoc: - VERSION = "0.6.0" + VERSION = "0.8.0" HTTPVersion = '1.1' begin require 'zlib' @@ -790,7 +790,7 @@ def HTTP.get_print(uri_or_host, path_or_headers = nil, port = nil) # "completed": false # } # - # With URI object +uri+ and optional hash argument +headers+: + # With Gem::URI object +uri+ and optional hash argument +headers+: # # uri = Gem::URI('https://jsonplaceholder.typicode.com/todos/1') # headers = {'Content-type' => 'application/json; charset=UTF-8'} @@ -863,7 +863,7 @@ def HTTP.post(url, data, header = nil) # Posts data to a host; returns a Gem::Net::HTTPResponse object. # - # Argument +url+ must be a URI; + # Argument +url+ must be a Gem::URI; # argument +data+ must be a hash: # # _uri = uri.dup @@ -1179,6 +1179,7 @@ def initialize(address, port = nil) # :nodoc: @debug_output = options[:debug_output] @response_body_encoding = options[:response_body_encoding] @ignore_eof = options[:ignore_eof] + @tcpsocket_supports_open_timeout = nil @proxy_from_env = false @proxy_uri = nil @@ -1321,6 +1322,9 @@ def response_body_encoding=(value) # Sets the proxy password; # see {Proxy Server}[rdoc-ref:Gem::Net::HTTP@Proxy+Server]. attr_writer :proxy_pass + + # Sets wheter the proxy uses SSL; + # see {Proxy Server}[rdoc-ref:Gem::Net::HTTP@Proxy+Server]. attr_writer :proxy_use_ssl # Returns the IP address for the connection. @@ -1529,7 +1533,7 @@ def use_ssl=(flag) :verify_hostname, ] # :nodoc: - SSL_IVNAMES = SSL_ATTRIBUTES.map { |a| "@#{a}".to_sym } # :nodoc: + SSL_IVNAMES = SSL_ATTRIBUTES.map { |a| "@#{a}".to_sym }.freeze # :nodoc: # Sets or returns the path to a CA certification file in PEM format. attr_accessor :ca_file @@ -1632,6 +1636,21 @@ def start # :yield: http self end + # Finishes the \HTTP session: + # + # http = Gem::Net::HTTP.new(hostname) + # http.start + # http.started? # => true + # http.finish # => nil + # http.started? # => false + # + # Raises IOError if not in a session. + def finish + raise IOError, 'HTTP session not yet started' unless started? + do_finish + end + + # :stopdoc: def do_start connect @started = true @@ -1654,14 +1673,36 @@ def connect end debug "opening connection to #{conn_addr}:#{conn_port}..." - s = Gem::Timeout.timeout(@open_timeout, Gem::Net::OpenTimeout) { - begin - TCPSocket.open(conn_addr, conn_port, @local_host, @local_port) - rescue => e - raise e, "Failed to open TCP connection to " + - "#{conn_addr}:#{conn_port} (#{e.message})" - end - } + begin + s = + case @tcpsocket_supports_open_timeout + when nil, true + begin + # Use built-in timeout in TCPSocket.open if available + sock = TCPSocket.open(conn_addr, conn_port, @local_host, @local_port, open_timeout: @open_timeout) + @tcpsocket_supports_open_timeout = true + sock + rescue ArgumentError => e + raise if !(e.message.include?('unknown keyword: :open_timeout') || e.message.include?('wrong number of arguments (given 5, expected 2..4)')) + @tcpsocket_supports_open_timeout = false + + # Fallback to Gem::Timeout.timeout if TCPSocket.open does not support open_timeout + Gem::Timeout.timeout(@open_timeout, Gem::Net::OpenTimeout) { + TCPSocket.open(conn_addr, conn_port, @local_host, @local_port) + } + end + when false + # The current Ruby is known to not support TCPSocket(open_timeout:). + # Directly fall back to Gem::Timeout.timeout to avoid performance penalty incured by rescue. + Gem::Timeout.timeout(@open_timeout, Gem::Net::OpenTimeout) { + TCPSocket.open(conn_addr, conn_port, @local_host, @local_port) + } + end + rescue => e + e = Gem::Net::OpenTimeout.new(e) if e.is_a?(Errno::ETIMEDOUT) # for compatibility with previous versions + raise e, "Failed to open TCP connection to " + + "#{conn_addr}:#{conn_port} (#{e.message})" + end s.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) debug "opened" if use_ssl? @@ -1758,20 +1799,6 @@ def on_connect end private :on_connect - # Finishes the \HTTP session: - # - # http = Gem::Net::HTTP.new(hostname) - # http.start - # http.started? # => true - # http.finish # => nil - # http.started? # => false - # - # Raises IOError if not in a session. - def finish - raise IOError, 'HTTP session not yet started' unless started? - do_finish - end - def do_finish @started = false @socket.close if @socket @@ -1821,6 +1848,8 @@ def HTTP.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_use_ss } end + # :startdoc: + class << HTTP # Returns true if self is a class which was created by HTTP::Proxy. def proxy_class? @@ -1860,7 +1889,7 @@ def proxy_from_env? @proxy_from_env end - # The proxy URI determined from the environment for this connection. + # The proxy Gem::URI determined from the environment for this connection. def proxy_uri # :nodoc: return if @proxy_uri == false @proxy_uri ||= Gem::URI::HTTP.new( @@ -1915,6 +1944,7 @@ def proxy_pass alias proxyport proxy_port #:nodoc: obsolete private + # :stopdoc: def unescape(value) require 'cgi/escape' @@ -1943,6 +1973,7 @@ def edit_path(path) path end end + # :startdoc: # # HTTP operations @@ -2397,6 +2428,8 @@ def send_entity(path, data, initheader, dest, type, &block) res end + # :stopdoc: + IDEMPOTENT_METHODS_ = %w/GET HEAD PUT DELETE OPTIONS TRACE/ # :nodoc: def transport_request(req) @@ -2554,7 +2587,7 @@ def debug(msg) alias_method :D, :debug end - # for backward compatibility until Ruby 3.5 + # for backward compatibility until Ruby 4.0 # https://bugs.ruby-lang.org/issues/20900 # https://github.com/bblimke/webmock/pull/1081 HTTPSession = HTTP diff --git a/lib/rubygems/vendor/net-http/lib/net/http/exceptions.rb b/lib/rubygems/vendor/net-http/lib/net/http/exceptions.rb index c629c0113b1a..218df9a8bd15 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/exceptions.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/exceptions.rb @@ -3,7 +3,7 @@ module Gem::Net # Gem::Net::HTTP exception class. # You cannot use Gem::Net::HTTPExceptions directly; instead, you must use # its subclasses. - module HTTPExceptions + module HTTPExceptions # :nodoc: def initialize(msg, res) #:nodoc: super msg @response = res @@ -12,6 +12,7 @@ def initialize(msg, res) #:nodoc: alias data response #:nodoc: obsolete end + # :stopdoc: class HTTPError < ProtocolError include HTTPExceptions end diff --git a/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb b/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb index 5cfe75a7cde7..d6496d4ac191 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb @@ -19,16 +19,13 @@ def initialize(m, reqbody, resbody, uri_or_path, initheader = nil) # :nodoc: if Gem::URI === uri_or_path then raise ArgumentError, "not an HTTP Gem::URI" unless Gem::URI::HTTP === uri_or_path - hostname = uri_or_path.hostname + hostname = uri_or_path.host raise ArgumentError, "no host component for Gem::URI" unless (hostname && hostname.length > 0) @uri = uri_or_path.dup - host = @uri.hostname.dup - host << ":" << @uri.port.to_s if @uri.port != @uri.default_port @path = uri_or_path.request_uri raise ArgumentError, "no HTTP request path given" unless @path else @uri = nil - host = nil raise ArgumentError, "no HTTP request path given" unless uri_or_path raise ArgumentError, "HTTP request path is empty" if uri_or_path.empty? @path = uri_or_path.dup @@ -51,7 +48,7 @@ def initialize(m, reqbody, resbody, uri_or_path, initheader = nil) # :nodoc: initialize_http_header initheader self['Accept'] ||= '*/*' self['User-Agent'] ||= 'Ruby' - self['Host'] ||= host if host + self['Host'] ||= @uri.authority if @uri @body = nil @body_stream = nil @body_data = nil @@ -102,6 +99,31 @@ def inspect "\#<#{self.class} #{@method}>" end + # Returns a string representation of the request with the details for pp: + # + # require 'pp' + # post = Gem::Net::HTTP::Post.new(uri) + # post.inspect # => "#" + # post.pretty_inspect + # # => # ["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"], + # "accept" => ["*/*"], + # "user-agent" => ["Ruby"], + # "host" => ["www.ruby-lang.org"]}> + # + def pretty_print(q) + q.object_group(self) { + q.breakable + q.text @method + q.breakable + q.text "path="; q.pp @path + q.breakable + q.text "headers="; q.pp to_hash + } + end + ## # Don't automatically decode response content-encoding if the user indicates # they want to handle it. @@ -220,7 +242,7 @@ def update_uri(addr, port, ssl) # :nodoc: internal use only end if host = self['host'] - host.sub!(/:.*/m, '') + host = Gem::URI.parse("//#{host}").host # Remove a port component from the existing Host header elsif host = @uri.host else host = addr @@ -239,6 +261,8 @@ def update_uri(addr, port, ssl) # :nodoc: internal use only private + # :stopdoc: + class Chunker #:nodoc: def initialize(sock) @sock = sock @@ -260,7 +284,6 @@ def finish def send_request_with_body(sock, ver, path, body) self.content_length = body.bytesize delete 'Transfer-Encoding' - supply_default_content_type write_header sock, ver, path wait_for_continue sock, ver if sock.continue_timeout sock.write body @@ -271,7 +294,6 @@ def send_request_with_body_stream(sock, ver, path, f) raise ArgumentError, "Content-Length not given and Transfer-Encoding is not `chunked'" end - supply_default_content_type write_header sock, ver, path wait_for_continue sock, ver if sock.continue_timeout if chunked? @@ -373,12 +395,6 @@ def flush_buffer(out, buf, chunked_p) buf.clear end - def supply_default_content_type - return if content_type() - warn 'net/http: Content-Type did not set; using application/x-www-form-urlencoded', uplevel: 1 if $VERBOSE - set_content_type 'application/x-www-form-urlencoded' - end - ## # Waits up to the continue timeout for a response from the server provided # we're speaking HTTP 1.1 and are expecting a 100-continue response. @@ -411,4 +427,3 @@ def write_header(sock, ver, path) end end - diff --git a/lib/rubygems/vendor/net-http/lib/net/http/header.rb b/lib/rubygems/vendor/net-http/lib/net/http/header.rb index 5cb1da01ec07..bc68cd2eefb1 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/header.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/header.rb @@ -179,7 +179,9 @@ # - #each_value: Passes each string field value to the block. # module Gem::Net::HTTPHeader + # The maximum length of HTTP header keys. MAX_KEY_LENGTH = 1024 + # The maximum length of HTTP header values. MAX_FIELD_LENGTH = 65536 def initialize_http_header(initheader) #:nodoc: @@ -267,6 +269,7 @@ def add_field(key, val) end end + # :stopdoc: private def set_field(key, val) case val when Enumerable @@ -294,6 +297,7 @@ def add_field(key, val) ary.push val end end + # :startdoc: # Returns the array field value for the given +key+, # or +nil+ if there is no such field; @@ -490,7 +494,7 @@ def each_capitalized alias canonical_each each_capitalized - def capitalize(name) + def capitalize(name) # :nodoc: name.to_s.split('-'.freeze).map {|s| s.capitalize }.join('-'.freeze) end private :capitalize @@ -957,12 +961,12 @@ def proxy_basic_auth(account, password) @header['proxy-authorization'] = [basic_encode(account, password)] end - def basic_encode(account, password) + def basic_encode(account, password) # :nodoc: 'Basic ' + ["#{account}:#{password}"].pack('m0') end private :basic_encode -# Returns whether the HTTP session is to be closed. + # Returns whether the HTTP session is to be closed. def connection_close? token = /(?:\A|,)\s*close\s*(?:\z|,)/i @header['connection']&.grep(token) {return true} @@ -970,7 +974,7 @@ def connection_close? false end -# Returns whether the HTTP session is to be kept alive. + # Returns whether the HTTP session is to be kept alive. def connection_keep_alive? token = /(?:\A|,)\s*keep-alive\s*(?:\z|,)/i @header['connection']&.grep(token) {return true} diff --git a/lib/rubygems/vendor/net-http/lib/net/http/requests.rb b/lib/rubygems/vendor/net-http/lib/net/http/requests.rb index 45727e7f61fc..f990761042da 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/requests.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/requests.rb @@ -29,6 +29,7 @@ # - Gem::Net::HTTP#get: sends +GET+ request, returns response object. # class Gem::Net::HTTP::Get < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'GET' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -60,6 +61,7 @@ class Gem::Net::HTTP::Get < Gem::Net::HTTPRequest # - Gem::Net::HTTP#head: sends +HEAD+ request, returns response object. # class Gem::Net::HTTP::Head < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'HEAD' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = false @@ -95,6 +97,7 @@ class Gem::Net::HTTP::Head < Gem::Net::HTTPRequest # - Gem::Net::HTTP#post: sends +POST+ request, returns response object. # class Gem::Net::HTTP::Post < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'POST' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -130,6 +133,7 @@ class Gem::Net::HTTP::Post < Gem::Net::HTTPRequest # - Gem::Net::HTTP#put: sends +PUT+ request, returns response object. # class Gem::Net::HTTP::Put < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'PUT' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -162,6 +166,7 @@ class Gem::Net::HTTP::Put < Gem::Net::HTTPRequest # - Gem::Net::HTTP#delete: sends +DELETE+ request, returns response object. # class Gem::Net::HTTP::Delete < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'DELETE' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -193,6 +198,7 @@ class Gem::Net::HTTP::Delete < Gem::Net::HTTPRequest # - Gem::Net::HTTP#options: sends +OPTIONS+ request, returns response object. # class Gem::Net::HTTP::Options < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'OPTIONS' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -224,6 +230,7 @@ class Gem::Net::HTTP::Options < Gem::Net::HTTPRequest # - Gem::Net::HTTP#trace: sends +TRACE+ request, returns response object. # class Gem::Net::HTTP::Trace < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'TRACE' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -258,6 +265,7 @@ class Gem::Net::HTTP::Trace < Gem::Net::HTTPRequest # - Gem::Net::HTTP#patch: sends +PATCH+ request, returns response object. # class Gem::Net::HTTP::Patch < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'PATCH' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -285,6 +293,7 @@ class Gem::Net::HTTP::Patch < Gem::Net::HTTPRequest # - Gem::Net::HTTP#propfind: sends +PROPFIND+ request, returns response object. # class Gem::Net::HTTP::Propfind < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'PROPFIND' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -308,6 +317,7 @@ class Gem::Net::HTTP::Propfind < Gem::Net::HTTPRequest # - Gem::Net::HTTP#proppatch: sends +PROPPATCH+ request, returns response object. # class Gem::Net::HTTP::Proppatch < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'PROPPATCH' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -331,6 +341,7 @@ class Gem::Net::HTTP::Proppatch < Gem::Net::HTTPRequest # - Gem::Net::HTTP#mkcol: sends +MKCOL+ request, returns response object. # class Gem::Net::HTTP::Mkcol < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'MKCOL' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -354,6 +365,7 @@ class Gem::Net::HTTP::Mkcol < Gem::Net::HTTPRequest # - Gem::Net::HTTP#copy: sends +COPY+ request, returns response object. # class Gem::Net::HTTP::Copy < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'COPY' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -377,6 +389,7 @@ class Gem::Net::HTTP::Copy < Gem::Net::HTTPRequest # - Gem::Net::HTTP#move: sends +MOVE+ request, returns response object. # class Gem::Net::HTTP::Move < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'MOVE' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -400,6 +413,7 @@ class Gem::Net::HTTP::Move < Gem::Net::HTTPRequest # - Gem::Net::HTTP#lock: sends +LOCK+ request, returns response object. # class Gem::Net::HTTP::Lock < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'LOCK' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -423,8 +437,8 @@ class Gem::Net::HTTP::Lock < Gem::Net::HTTPRequest # - Gem::Net::HTTP#unlock: sends +UNLOCK+ request, returns response object. # class Gem::Net::HTTP::Unlock < Gem::Net::HTTPRequest + # :stopdoc: METHOD = 'UNLOCK' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true end - diff --git a/lib/rubygems/vendor/net-http/lib/net/http/response.rb b/lib/rubygems/vendor/net-http/lib/net/http/response.rb index cbbd191d879b..dc164f150448 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/response.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/response.rb @@ -153,6 +153,7 @@ def read_new(sock) #:nodoc: internal use only end private + # :stopdoc: def read_status_line(sock) str = sock.readline @@ -259,7 +260,7 @@ def body_encoding=(value) # header. attr_accessor :ignore_eof - def inspect + def inspect # :nodoc: "#<#{self.class} #{@code} #{@message} readbody=#{@read}>" end diff --git a/lib/rubygems/vendor/net-http/lib/net/http/responses.rb b/lib/rubygems/vendor/net-http/lib/net/http/responses.rb index 0f26ae6c26c1..62ce1cba1b29 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/responses.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/responses.rb @@ -4,7 +4,9 @@ module Gem::Net + # Unknown HTTP response class HTTPUnknownResponse < HTTPResponse + # :stopdoc: HAS_BODY = true EXCEPTION_TYPE = HTTPError # end @@ -19,6 +21,7 @@ class HTTPUnknownResponse < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#1xx_informational_response]. # class HTTPInformation < HTTPResponse + # :stopdoc: HAS_BODY = false EXCEPTION_TYPE = HTTPError # end @@ -34,6 +37,7 @@ class HTTPInformation < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#2xx_success]. # class HTTPSuccess < HTTPResponse + # :stopdoc: HAS_BODY = true EXCEPTION_TYPE = HTTPError # end @@ -49,6 +53,7 @@ class HTTPSuccess < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_redirection]. # class HTTPRedirection < HTTPResponse + # :stopdoc: HAS_BODY = true EXCEPTION_TYPE = HTTPRetriableError # end @@ -63,6 +68,7 @@ class HTTPRedirection < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_client_errors]. # class HTTPClientError < HTTPResponse + # :stopdoc: HAS_BODY = true EXCEPTION_TYPE = HTTPClientException # end @@ -77,6 +83,7 @@ class HTTPClientError < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_server_errors]. # class HTTPServerError < HTTPResponse + # :stopdoc: HAS_BODY = true EXCEPTION_TYPE = HTTPFatalError # end @@ -94,6 +101,7 @@ class HTTPServerError < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#100]. # class HTTPContinue < HTTPInformation + # :stopdoc: HAS_BODY = false end @@ -111,6 +119,7 @@ class HTTPContinue < HTTPInformation # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#101]. # class HTTPSwitchProtocol < HTTPInformation + # :stopdoc: HAS_BODY = false end @@ -127,6 +136,7 @@ class HTTPSwitchProtocol < HTTPInformation # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#102]. # class HTTPProcessing < HTTPInformation + # :stopdoc: HAS_BODY = false end @@ -145,6 +155,7 @@ class HTTPProcessing < HTTPInformation # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#103]. # class HTTPEarlyHints < HTTPInformation + # :stopdoc: HAS_BODY = false end @@ -162,6 +173,7 @@ class HTTPEarlyHints < HTTPInformation # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#200]. # class HTTPOK < HTTPSuccess + # :stopdoc: HAS_BODY = true end @@ -179,6 +191,7 @@ class HTTPOK < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#201]. # class HTTPCreated < HTTPSuccess + # :stopdoc: HAS_BODY = true end @@ -196,6 +209,7 @@ class HTTPCreated < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#202]. # class HTTPAccepted < HTTPSuccess + # :stopdoc: HAS_BODY = true end @@ -215,6 +229,7 @@ class HTTPAccepted < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#203]. # class HTTPNonAuthoritativeInformation < HTTPSuccess + # :stopdoc: HAS_BODY = true end @@ -232,6 +247,7 @@ class HTTPNonAuthoritativeInformation < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#204]. # class HTTPNoContent < HTTPSuccess + # :stopdoc: HAS_BODY = false end @@ -250,6 +266,7 @@ class HTTPNoContent < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#205]. # class HTTPResetContent < HTTPSuccess + # :stopdoc: HAS_BODY = false end @@ -268,6 +285,7 @@ class HTTPResetContent < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#206]. # class HTTPPartialContent < HTTPSuccess + # :stopdoc: HAS_BODY = true end @@ -285,6 +303,7 @@ class HTTPPartialContent < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#207]. # class HTTPMultiStatus < HTTPSuccess + # :stopdoc: HAS_BODY = true end @@ -304,6 +323,7 @@ class HTTPMultiStatus < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#208]. # class HTTPAlreadyReported < HTTPSuccess + # :stopdoc: HAS_BODY = true end @@ -321,6 +341,7 @@ class HTTPAlreadyReported < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#226]. # class HTTPIMUsed < HTTPSuccess + # :stopdoc: HAS_BODY = true end @@ -338,6 +359,7 @@ class HTTPIMUsed < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#300]. # class HTTPMultipleChoices < HTTPRedirection + # :stopdoc: HAS_BODY = true end HTTPMultipleChoice = HTTPMultipleChoices @@ -356,6 +378,7 @@ class HTTPMultipleChoices < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#301]. # class HTTPMovedPermanently < HTTPRedirection + # :stopdoc: HAS_BODY = true end @@ -373,6 +396,7 @@ class HTTPMovedPermanently < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#302]. # class HTTPFound < HTTPRedirection + # :stopdoc: HAS_BODY = true end HTTPMovedTemporarily = HTTPFound @@ -390,6 +414,7 @@ class HTTPFound < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#303]. # class HTTPSeeOther < HTTPRedirection + # :stopdoc: HAS_BODY = true end @@ -407,6 +432,7 @@ class HTTPSeeOther < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#304]. # class HTTPNotModified < HTTPRedirection + # :stopdoc: HAS_BODY = false end @@ -423,6 +449,7 @@ class HTTPNotModified < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#305]. # class HTTPUseProxy < HTTPRedirection + # :stopdoc: HAS_BODY = false end @@ -440,6 +467,7 @@ class HTTPUseProxy < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#307]. # class HTTPTemporaryRedirect < HTTPRedirection + # :stopdoc: HAS_BODY = true end @@ -456,6 +484,7 @@ class HTTPTemporaryRedirect < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#308]. # class HTTPPermanentRedirect < HTTPRedirection + # :stopdoc: HAS_BODY = true end @@ -472,6 +501,7 @@ class HTTPPermanentRedirect < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#400]. # class HTTPBadRequest < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -488,6 +518,7 @@ class HTTPBadRequest < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#401]. # class HTTPUnauthorized < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -504,6 +535,7 @@ class HTTPUnauthorized < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#402]. # class HTTPPaymentRequired < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -521,6 +553,7 @@ class HTTPPaymentRequired < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#403]. # class HTTPForbidden < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -537,6 +570,7 @@ class HTTPForbidden < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#404]. # class HTTPNotFound < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -553,6 +587,7 @@ class HTTPNotFound < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#405]. # class HTTPMethodNotAllowed < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -570,6 +605,7 @@ class HTTPMethodNotAllowed < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#406]. # class HTTPNotAcceptable < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -586,6 +622,7 @@ class HTTPNotAcceptable < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#407]. # class HTTPProxyAuthenticationRequired < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -602,6 +639,7 @@ class HTTPProxyAuthenticationRequired < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#408]. # class HTTPRequestTimeout < HTTPClientError + # :stopdoc: HAS_BODY = true end HTTPRequestTimeOut = HTTPRequestTimeout @@ -619,6 +657,7 @@ class HTTPRequestTimeout < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#409]. # class HTTPConflict < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -636,6 +675,7 @@ class HTTPConflict < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#410]. # class HTTPGone < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -653,6 +693,7 @@ class HTTPGone < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#411]. # class HTTPLengthRequired < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -670,6 +711,7 @@ class HTTPLengthRequired < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#412]. # class HTTPPreconditionFailed < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -686,6 +728,7 @@ class HTTPPreconditionFailed < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#413]. # class HTTPPayloadTooLarge < HTTPClientError + # :stopdoc: HAS_BODY = true end HTTPRequestEntityTooLarge = HTTPPayloadTooLarge @@ -703,6 +746,7 @@ class HTTPPayloadTooLarge < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#414]. # class HTTPURITooLong < HTTPClientError + # :stopdoc: HAS_BODY = true end HTTPRequestURITooLong = HTTPURITooLong @@ -721,6 +765,7 @@ class HTTPURITooLong < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#415]. # class HTTPUnsupportedMediaType < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -737,6 +782,7 @@ class HTTPUnsupportedMediaType < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#416]. # class HTTPRangeNotSatisfiable < HTTPClientError + # :stopdoc: HAS_BODY = true end HTTPRequestedRangeNotSatisfiable = HTTPRangeNotSatisfiable @@ -754,6 +800,7 @@ class HTTPRangeNotSatisfiable < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#417]. # class HTTPExpectationFailed < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -774,6 +821,7 @@ class HTTPExpectationFailed < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#421]. # class HTTPMisdirectedRequest < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -790,6 +838,7 @@ class HTTPMisdirectedRequest < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#422]. # class HTTPUnprocessableEntity < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -805,6 +854,7 @@ class HTTPUnprocessableEntity < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#423]. # class HTTPLocked < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -821,6 +871,7 @@ class HTTPLocked < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#424]. # class HTTPFailedDependency < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -840,6 +891,7 @@ class HTTPFailedDependency < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#426]. # class HTTPUpgradeRequired < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -856,6 +908,7 @@ class HTTPUpgradeRequired < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#428]. # class HTTPPreconditionRequired < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -872,6 +925,7 @@ class HTTPPreconditionRequired < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429]. # class HTTPTooManyRequests < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -889,6 +943,7 @@ class HTTPTooManyRequests < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#431]. # class HTTPRequestHeaderFieldsTooLarge < HTTPClientError + # :stopdoc: HAS_BODY = true end @@ -906,6 +961,7 @@ class HTTPRequestHeaderFieldsTooLarge < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#451]. # class HTTPUnavailableForLegalReasons < HTTPClientError + # :stopdoc: HAS_BODY = true end # 444 No Response - Nginx @@ -926,6 +982,7 @@ class HTTPUnavailableForLegalReasons < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#500]. # class HTTPInternalServerError < HTTPServerError + # :stopdoc: HAS_BODY = true end @@ -943,6 +1000,7 @@ class HTTPInternalServerError < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#501]. # class HTTPNotImplemented < HTTPServerError + # :stopdoc: HAS_BODY = true end @@ -960,6 +1018,7 @@ class HTTPNotImplemented < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#502]. # class HTTPBadGateway < HTTPServerError + # :stopdoc: HAS_BODY = true end @@ -977,6 +1036,7 @@ class HTTPBadGateway < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#503]. # class HTTPServiceUnavailable < HTTPServerError + # :stopdoc: HAS_BODY = true end @@ -994,6 +1054,7 @@ class HTTPServiceUnavailable < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#504]. # class HTTPGatewayTimeout < HTTPServerError + # :stopdoc: HAS_BODY = true end HTTPGatewayTimeOut = HTTPGatewayTimeout @@ -1011,6 +1072,7 @@ class HTTPGatewayTimeout < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#505]. # class HTTPVersionNotSupported < HTTPServerError + # :stopdoc: HAS_BODY = true end @@ -1027,6 +1089,7 @@ class HTTPVersionNotSupported < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#506]. # class HTTPVariantAlsoNegotiates < HTTPServerError + # :stopdoc: HAS_BODY = true end @@ -1043,6 +1106,7 @@ class HTTPVariantAlsoNegotiates < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#507]. # class HTTPInsufficientStorage < HTTPServerError + # :stopdoc: HAS_BODY = true end @@ -1059,6 +1123,7 @@ class HTTPInsufficientStorage < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#508]. # class HTTPLoopDetected < HTTPServerError + # :stopdoc: HAS_BODY = true end # 509 Bandwidth Limit Exceeded - Apache bw/limited extension @@ -1076,6 +1141,7 @@ class HTTPLoopDetected < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#510]. # class HTTPNotExtended < HTTPServerError + # :stopdoc: HAS_BODY = true end @@ -1092,19 +1158,21 @@ class HTTPNotExtended < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#511]. # class HTTPNetworkAuthenticationRequired < HTTPServerError + # :stopdoc: HAS_BODY = true end end class Gem::Net::HTTPResponse + # :stopdoc: CODE_CLASS_TO_OBJ = { '1' => Gem::Net::HTTPInformation, '2' => Gem::Net::HTTPSuccess, '3' => Gem::Net::HTTPRedirection, '4' => Gem::Net::HTTPClientError, '5' => Gem::Net::HTTPServerError - } + }.freeze CODE_TO_OBJ = { '100' => Gem::Net::HTTPContinue, '101' => Gem::Net::HTTPSwitchProtocol, @@ -1170,5 +1238,5 @@ class Gem::Net::HTTPResponse '508' => Gem::Net::HTTPLoopDetected, '510' => Gem::Net::HTTPNotExtended, '511' => Gem::Net::HTTPNetworkAuthenticationRequired, - } + }.freeze end diff --git a/tool/automatiek/net-http-v0.4.0.patch b/tool/automatiek/net-http-v0.4.0.patch deleted file mode 100644 index 09fa3e6b6d9b..000000000000 --- a/tool/automatiek/net-http-v0.4.0.patch +++ /dev/null @@ -1,118 +0,0 @@ -diff --git a/lib/rubygems/vendor/net-http/lib/net/http.rb b/lib/rubygems/vendor/net-http/lib/net/http.rb -index 76be463244..31073e34ac 100644 ---- a/lib/rubygems/vendor/net-http/lib/net/http.rb -+++ b/lib/rubygems/vendor/net-http/lib/net/http.rb -@@ -100,14 +100,14 @@ class HTTPHeaderSyntaxError < StandardError; end - # - # == URIs - # -- # On the internet, a Gem::URI -+ # On the internet, a URI - # ({Universal Resource Identifier}[https://en.wikipedia.org/wiki/Uniform_Resource_Identifier]) - # is a string that identifies a particular resource. - # It consists of some or all of: scheme, hostname, path, query, and fragment; -- # see {Gem::URI syntax}[https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax]. -+ # see {URI syntax}[https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Syntax]. - # -- # A Ruby {Gem::URI::Generic}[https://docs.ruby-lang.org/en/master/Gem::URI/Generic.html] object -- # represents an internet Gem::URI. -+ # A Ruby {Gem::URI::Generic}[https://docs.ruby-lang.org/en/master/Gem/URI/Generic.html] object -+ # represents an internet URI. - # It provides, among others, methods - # +scheme+, +hostname+, +path+, +query+, and +fragment+. - # -@@ -142,7 +142,7 @@ class HTTPHeaderSyntaxError < StandardError; end - # - # === Queries - # -- # A host-specific query adds name/value pairs to the Gem::URI: -+ # A host-specific query adds name/value pairs to the URI: - # - # _uri = uri.dup - # params = {userId: 1, completed: false} -@@ -152,7 +152,7 @@ class HTTPHeaderSyntaxError < StandardError; end - # - # === Fragments - # -- # A {Gem::URI fragment}[https://en.wikipedia.org/wiki/URI_fragment] has no effect -+ # A {URI fragment}[https://en.wikipedia.org/wiki/URI_fragment] has no effect - # in \Gem::Net::HTTP; - # the same data is returned, regardless of whether a fragment is included. - # -@@ -325,9 +325,9 @@ class HTTPHeaderSyntaxError < StandardError; end - # res = http.request(req) - # end - # -- # Or if you simply want to make a GET request, you may pass in a Gem::URI -+ # Or if you simply want to make a GET request, you may pass in a URI - # object that has an \HTTPS URL. \Gem::Net::HTTP automatically turns on TLS -- # verification if the Gem::URI object has a 'https' Gem::URI scheme: -+ # verification if the URI object has a 'https' :URI scheme: - # - # uri # => # - # Gem::Net::HTTP.get(uri) -@@ -372,7 +372,7 @@ class HTTPHeaderSyntaxError < StandardError; end - # - # When environment variable 'http_proxy' - # is set to a \Gem::URI string, -- # the returned +http+ will have the server at that Gem::URI as its proxy; -+ # the returned +http+ will have the server at that URI as its proxy; - # note that the \Gem::URI string must have a protocol - # such as 'http' or 'https': - # -@@ -788,7 +788,7 @@ def HTTP.get_print(uri_or_host, path_or_headers = nil, port = nil) - # "completed": false - # } - # -- # With Gem::URI object +uri+ and optional hash argument +headers+: -+ # With URI object +uri+ and optional hash argument +headers+: - # - # uri = Gem::URI('https://jsonplaceholder.typicode.com/todos/1') - # headers = {'Content-type' => 'application/json; charset=UTF-8'} -@@ -861,7 +861,7 @@ def HTTP.post(url, data, header = nil) - - # Posts data to a host; returns a Gem::Net::HTTPResponse object. - # -- # Argument +url+ must be a Gem::URI; -+ # Argument +url+ must be a URI; - # argument +data+ must be a hash: - # - # _uri = uri.dup -@@ -1793,7 +1793,7 @@ def proxy_from_env? - @proxy_from_env - end - -- # The proxy Gem::URI determined from the environment for this connection. -+ # The proxy URI determined from the environment for this connection. - def proxy_uri # :nodoc: - return if @proxy_uri == false - @proxy_uri ||= Gem::URI::HTTP.new( -diff --git a/lib/rubygems/vendor/net-http/lib/net/http/status.rb b/lib/rubygems/vendor/net-http/lib/net/http/status.rb -index 9110b108b8..cd5177fcbc 100644 ---- a/lib/rubygems/vendor/net-http/lib/net/http/status.rb -+++ b/lib/rubygems/vendor/net-http/lib/net/http/status.rb -@@ -50,13 +50,13 @@ - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', -- 408 => 'Request Gem::Timeout', -+ 408 => 'Request Timeout', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Content Too Large', -- 414 => 'Gem::URI Too Long', -+ 414 => 'URI Too Long', - 415 => 'Unsupported Media Type', - 416 => 'Range Not Satisfiable', - 417 => 'Expectation Failed', -@@ -74,7 +74,7 @@ - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', -- 504 => 'Gateway Gem::Timeout', -+ 504 => 'Gateway Timeout', - 505 => 'HTTP Version Not Supported', - 506 => 'Variant Also Negotiates', - 507 => 'Insufficient Storage', diff --git a/tool/automatiek/net-http-v0.8.0.patch b/tool/automatiek/net-http-v0.8.0.patch new file mode 100644 index 000000000000..e82c1ec132d5 --- /dev/null +++ b/tool/automatiek/net-http-v0.8.0.patch @@ -0,0 +1,29 @@ +diff --git b/lib/rubygems/vendor/net-http/lib/net/http/status.rb a/lib/rubygems/vendor/net-http/lib/net/http/status.rb +index cd5177fcbc..9110b108b8 100644 +--- a/lib/rubygems/vendor/net-http/lib/net/http/status.rb ++++ b/lib/rubygems/vendor/net-http/lib/net/http/status.rb +@@ -50,13 +50,13 @@ + 405 => 'Method Not Allowed', + 406 => 'Not Acceptable', + 407 => 'Proxy Authentication Required', +- 408 => 'Request Gem::Timeout', ++ 408 => 'Request Timeout', + 409 => 'Conflict', + 410 => 'Gone', + 411 => 'Length Required', + 412 => 'Precondition Failed', + 413 => 'Content Too Large', +- 414 => 'Gem::URI Too Long', ++ 414 => 'URI Too Long', + 415 => 'Unsupported Media Type', + 416 => 'Range Not Satisfiable', + 417 => 'Expectation Failed', +@@ -74,7 +74,7 @@ + 501 => 'Not Implemented', + 502 => 'Bad Gateway', + 503 => 'Service Unavailable', +- 504 => 'Gateway Gem::Timeout', ++ 504 => 'Gateway Timeout', + 505 => 'HTTP Version Not Supported', + 506 => 'Variant Also Negotiates', + 507 => 'Insufficient Storage', diff --git a/tool/automatiek/vendor.rb b/tool/automatiek/vendor.rb index 65fa0a8e651b..37a113782c68 100755 --- a/tool/automatiek/vendor.rb +++ b/tool/automatiek/vendor.rb @@ -81,7 +81,7 @@ def require_target vendored_gems = [ # RubyGems VendoredGem.new(name: "molinillo", namespace: "Molinillo", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/molinillo", license_path: "LICENSE", extra_dependencies: %w[tsort/lib/rubygems/vendor/tsort], patch_name: "molinillo-master.patch"), - VendoredGem.new(name: "net-http", namespace: "Net", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/net-http", license_path: "COPYING", extra_dependencies: %w[net-protocol resolv timeout uri/lib/rubygems/vendor/uri], skip_dependencies: %w[uri], patch_name: "net-http-v0.4.0.patch"), + VendoredGem.new(name: "net-http", namespace: "Net", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/net-http", license_path: "COPYING", extra_dependencies: %w[net-protocol resolv timeout uri/lib/rubygems/vendor/uri], skip_dependencies: %w[uri], patch_name: "net-http-v0.8.0.patch"), VendoredGem.new(name: "net-http-persistent", namespace: "Net::HTTP::Persistent", prefix: "Gem", vendor_lib: "bundler/lib/bundler/vendor/net-http-persistent", license_path: "README.rdoc", extra_dependencies: %w[net-http uri/lib/rubygems/vendor/uri], patch_name: "net-http-persistent-v4.0.6.patch"), VendoredGem.new(name: "net-protocol", namespace: "Net", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/net-protocol", license_path: "LICENSE.txt"), VendoredGem.new(name: "optparse", namespace: "OptionParser", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/optparse", license_path: "COPYING", extra_dependencies: %w[uri/lib/rubygems/vendor/uri], patch_name: "optparse-v0.4.0.patch"), diff --git a/tool/bundler/vendor_gems.rb b/tool/bundler/vendor_gems.rb index 93df51899b52..8a4afd8844c7 100644 --- a/tool/bundler/vendor_gems.rb +++ b/tool/bundler/vendor_gems.rb @@ -4,7 +4,7 @@ gem "fileutils", "1.7.3" gem "molinillo", github: "cocoapods/molinillo" -gem "net-http", github: "ruby/net-http", ref: "d8fd39c589279b1aaec85a7c8de9b3e199c72efe" +gem "net-http", "0.8.0" gem "net-http-persistent", "4.0.6" gem "net-protocol", "0.2.2" gem "optparse", "0.6.0" diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index d6ca1a1fdd15..830ef393a8aa 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -11,19 +11,13 @@ GIT specs: pub_grub (0.5.0) -GIT - remote: https://github.com/ruby/net-http.git - revision: d8fd39c589279b1aaec85a7c8de9b3e199c72efe - ref: d8fd39c589279b1aaec85a7c8de9b3e199c72efe - specs: - net-http (0.6.0) - uri - GEM remote: https://rubygems.org/ specs: connection_pool (2.5.4) fileutils (1.7.3) + net-http (0.8.0) + uri (>= 0.11.1) net-http-persistent (4.0.6) connection_pool (~> 2.2, >= 2.2.4) net-protocol (0.2.2) @@ -48,7 +42,7 @@ PLATFORMS DEPENDENCIES fileutils (= 1.7.3) molinillo! - net-http! + net-http (= 0.8.0) net-http-persistent (= 4.0.6) net-protocol (= 0.2.2) optparse (= 0.6.0) @@ -64,7 +58,7 @@ CHECKSUMS connection_pool (2.5.4) sha256=e9e1922327416091f3f6542f5f4446c2a20745276b9aa796dd0bb2fd0ea1e70a fileutils (1.7.3) sha256=57271e854b694a87755d76f836f5c57b2c9538ebbaf4b2154bb66addf15eb5da molinillo (0.8.0) - net-http (0.6.0) + net-http (0.8.0) sha256=df42c47ce9f9e95ad32a317c97c12f945bc1af365288837ea4ff259876ecb46d net-http-persistent (4.0.6) sha256=2abb3a04438edf6cb9e0e7e505969605f709eda3e3c5211beadd621a2c84dd5d net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8 optparse (0.6.0) sha256=25e90469c1cd44048a89dc01c1dde9d5f0bdf717851055fb18237780779b068c From d466ddbbd16eaaabe89a99477069f74876d90e0d Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 17 Nov 2025 12:49:33 +0900 Subject: [PATCH 140/295] Lock the current HEAD revision for molinillo --- tool/bundler/vendor_gems.rb | 2 +- tool/bundler/vendor_gems.rb.lock | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tool/bundler/vendor_gems.rb b/tool/bundler/vendor_gems.rb index 8a4afd8844c7..4f9c4ceb0cea 100644 --- a/tool/bundler/vendor_gems.rb +++ b/tool/bundler/vendor_gems.rb @@ -3,7 +3,7 @@ source "https://rubygems.org/" gem "fileutils", "1.7.3" -gem "molinillo", github: "cocoapods/molinillo" +gem "molinillo", github: "cocoapods/molinillo", ref: "1d62d7d5f448e79418716dc779a4909509ccda2a" gem "net-http", "0.8.0" gem "net-http-persistent", "4.0.6" gem "net-protocol", "0.2.2" diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index 830ef393a8aa..7872420630f6 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -1,6 +1,7 @@ GIT remote: https://github.com/cocoapods/molinillo.git revision: 1d62d7d5f448e79418716dc779a4909509ccda2a + ref: 1d62d7d5f448e79418716dc779a4909509ccda2a specs: molinillo (0.8.0) From 07f2daf51eb9fab08125d9eed9672595e820fb5a Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 17 Nov 2025 12:50:49 +0900 Subject: [PATCH 141/295] Update URI-1.1.1 --- .../lib/bundler/vendor/uri/lib/uri/common.rb | 72 +++++++++++++++---- .../lib/bundler/vendor/uri/lib/uri/file.rb | 2 +- .../lib/bundler/vendor/uri/lib/uri/generic.rb | 26 +++---- .../lib/bundler/vendor/uri/lib/uri/http.rb | 12 ++++ .../vendor/uri/lib/uri/rfc2396_parser.rb | 17 ++--- .../lib/bundler/vendor/uri/lib/uri/version.rb | 4 +- lib/rubygems/vendor/uri/lib/uri/common.rb | 72 +++++++++++++++---- lib/rubygems/vendor/uri/lib/uri/file.rb | 2 +- lib/rubygems/vendor/uri/lib/uri/generic.rb | 26 +++---- lib/rubygems/vendor/uri/lib/uri/http.rb | 12 ++++ .../vendor/uri/lib/uri/rfc2396_parser.rb | 17 ++--- lib/rubygems/vendor/uri/lib/uri/version.rb | 4 +- tool/bundler/vendor_gems.rb | 2 +- tool/bundler/vendor_gems.rb.lock | 6 +- 14 files changed, 192 insertions(+), 82 deletions(-) diff --git a/bundler/lib/bundler/vendor/uri/lib/uri/common.rb b/bundler/lib/bundler/vendor/uri/lib/uri/common.rb index 6791daf5299e..935392c19463 100644 --- a/bundler/lib/bundler/vendor/uri/lib/uri/common.rb +++ b/bundler/lib/bundler/vendor/uri/lib/uri/common.rb @@ -30,6 +30,9 @@ def self.parser=(parser = RFC3986_PARSER) remove_const(:Parser) if defined?(::Bundler::URI::Parser) const_set("Parser", parser.class) + remove_const(:PARSER) if defined?(::Bundler::URI::PARSER) + const_set("PARSER", parser) + remove_const(:REGEXP) if defined?(::Bundler::URI::REGEXP) remove_const(:PATTERN) if defined?(::Bundler::URI::PATTERN) if Parser == RFC2396_Parser @@ -49,10 +52,10 @@ def self.const_missing(const) # :nodoc: warn "Bundler::URI::REGEXP is obsolete. Use Bundler::URI::RFC2396_REGEXP explicitly.", uplevel: 1 if $VERBOSE Bundler::URI::RFC2396_REGEXP elsif value = RFC2396_PARSER.regexp[const] - warn "Bundler::URI::#{const} is obsolete. Use RFC2396_PARSER.regexp[#{const.inspect}] explicitly.", uplevel: 1 if $VERBOSE + warn "Bundler::URI::#{const} is obsolete. Use Bundler::URI::RFC2396_PARSER.regexp[#{const.inspect}] explicitly.", uplevel: 1 if $VERBOSE value elsif value = RFC2396_Parser.const_get(const) - warn "Bundler::URI::#{const} is obsolete. Use RFC2396_Parser::#{const} explicitly.", uplevel: 1 if $VERBOSE + warn "Bundler::URI::#{const} is obsolete. Use Bundler::URI::RFC2396_Parser::#{const} explicitly.", uplevel: 1 if $VERBOSE value else super @@ -92,6 +95,40 @@ def make_components_hash(klass, array_hash) end module Schemes # :nodoc: + class << self + ReservedChars = ".+-" + EscapedChars = "\u01C0\u01C1\u01C2" + # Use Lo category chars as escaped chars for TruffleRuby, which + # does not allow Symbol categories as identifiers. + + def escape(name) + unless name and name.ascii_only? + return nil + end + name.upcase.tr(ReservedChars, EscapedChars) + end + + def unescape(name) + name.tr(EscapedChars, ReservedChars).encode(Encoding::US_ASCII).upcase + end + + def find(name) + const_get(name, false) if name and const_defined?(name, false) + end + + def register(name, klass) + unless scheme = escape(name) + raise ArgumentError, "invalid character as scheme - #{name}" + end + const_set(scheme, klass) + end + + def list + constants.map { |name| + [unescape(name.to_s), const_get(name)] + }.to_h + end + end end private_constant :Schemes @@ -104,7 +141,7 @@ module Schemes # :nodoc: # Note that after calling String#upcase on +scheme+, it must be a valid # constant name. def self.register_scheme(scheme, klass) - Schemes.const_set(scheme.to_s.upcase, klass) + Schemes.register(scheme, klass) end # Returns a hash of the defined schemes: @@ -122,14 +159,14 @@ def self.register_scheme(scheme, klass) # # Related: Bundler::URI.register_scheme. def self.scheme_list - Schemes.constants.map { |name| - [name.to_s.upcase, Schemes.const_get(name)] - }.to_h + Schemes.list end + # :stopdoc: INITIAL_SCHEMES = scheme_list private_constant :INITIAL_SCHEMES Ractor.make_shareable(INITIAL_SCHEMES) if defined?(Ractor) + # :startdoc: # Returns a new object constructed from the given +scheme+, +arguments+, # and +default+: @@ -148,12 +185,10 @@ def self.scheme_list # # => # # def self.for(scheme, *arguments, default: Generic) - const_name = scheme.to_s.upcase + const_name = Schemes.escape(scheme) uri_class = INITIAL_SCHEMES[const_name] - uri_class ||= if /\A[A-Z]\w*\z/.match?(const_name) && Schemes.const_defined?(const_name, false) - Schemes.const_get(const_name, false) - end + uri_class ||= Schemes.find(const_name) uri_class ||= default return uri_class.new(scheme, *arguments) @@ -195,7 +230,7 @@ class BadURIError < Error; end # ["fragment", "top"]] # def self.split(uri) - DEFAULT_PARSER.split(uri) + PARSER.split(uri) end # Returns a new \Bundler::URI object constructed from the given string +uri+: @@ -205,11 +240,11 @@ def self.split(uri) # Bundler::URI.parse('http://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top') # # => # # - # It's recommended to first ::escape string +uri+ + # It's recommended to first Bundler::URI::RFC2396_PARSER.escape string +uri+ # if it may contain invalid Bundler::URI characters. # def self.parse(uri) - DEFAULT_PARSER.parse(uri) + PARSER.parse(uri) end # Merges the given Bundler::URI strings +str+ @@ -265,7 +300,7 @@ def self.join(*str) # def self.extract(str, schemes = nil, &block) # :nodoc: warn "Bundler::URI.extract is obsolete", uplevel: 1 if $VERBOSE - DEFAULT_PARSER.extract(str, schemes, &block) + PARSER.extract(str, schemes, &block) end # @@ -302,7 +337,7 @@ def self.extract(str, schemes = nil, &block) # :nodoc: # def self.regexp(schemes = nil)# :nodoc: warn "Bundler::URI.regexp is obsolete", uplevel: 1 if $VERBOSE - DEFAULT_PARSER.make_regexp(schemes) + PARSER.make_regexp(schemes) end TBLENCWWWCOMP_ = {} # :nodoc: @@ -407,6 +442,8 @@ def self.decode_uri_component(str, enc=Encoding::UTF_8) _decode_uri_component(/%\h\h/, str, enc) end + # Returns a string derived from the given string +str+ with + # Bundler::URI-encoded characters matching +regexp+ according to +table+. def self._encode_uri_component(regexp, table, str, enc) str = str.to_s.dup if str.encoding != Encoding::ASCII_8BIT @@ -421,6 +458,8 @@ def self._encode_uri_component(regexp, table, str, enc) end private_class_method :_encode_uri_component + # Returns a string decoding characters matching +regexp+ from the + # given \URL-encoded string +str+. def self._decode_uri_component(regexp, str, enc) raise ArgumentError, "invalid %-encoding (#{str})" if /%(?!\h\h)/.match?(str) str.b.gsub(regexp, TBLDECWWWCOMP_).force_encoding(enc) @@ -859,6 +898,7 @@ module Bundler # Returns a \Bundler::URI object derived from the given +uri+, # which may be a \Bundler::URI string or an existing \Bundler::URI object: # + # require 'bundler/vendor/uri/lib/uri' # # Returns a new Bundler::URI. # uri = Bundler::URI('http://github.com/ruby/ruby') # # => # @@ -866,6 +906,8 @@ module Bundler # Bundler::URI(uri) # # => # # + # You must require 'bundler/vendor/uri/lib/uri' to use this method. + # def URI(uri) if uri.is_a?(Bundler::URI::Generic) uri diff --git a/bundler/lib/bundler/vendor/uri/lib/uri/file.rb b/bundler/lib/bundler/vendor/uri/lib/uri/file.rb index de347af6ebf9..21dd9ee5356f 100644 --- a/bundler/lib/bundler/vendor/uri/lib/uri/file.rb +++ b/bundler/lib/bundler/vendor/uri/lib/uri/file.rb @@ -47,7 +47,7 @@ class File < Generic # :path => '/ruby/src'}) # uri2.to_s # => "file://host.example.com/ruby/src" # - # uri3 = Bundler::URI::File.build({:path => Bundler::URI::escape('/path/my file.txt')}) + # uri3 = Bundler::URI::File.build({:path => Bundler::URI::RFC2396_PARSER.escape('/path/my file.txt')}) # uri3.to_s # => "file:///path/my%20file.txt" # def self.build(args) diff --git a/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb b/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb index a27874748e53..30dab609035b 100644 --- a/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb +++ b/bundler/lib/bundler/vendor/uri/lib/uri/generic.rb @@ -73,7 +73,7 @@ def self.use_registry # :nodoc: # # At first, tries to create a new Bundler::URI::Generic instance using # Bundler::URI::Generic::build. But, if exception Bundler::URI::InvalidComponentError is raised, - # then it does Bundler::URI::Escape.escape all Bundler::URI components and tries again. + # then it does Bundler::URI::RFC2396_PARSER.escape all Bundler::URI components and tries again. # def self.build2(args) begin @@ -126,9 +126,9 @@ def self.build(args) end end else - component = self.class.component rescue ::Bundler::URI::Generic::COMPONENT + component = self.component rescue ::Bundler::URI::Generic::COMPONENT raise ArgumentError, - "expected Array of or Hash of components of #{self.class} (#{component.join(', ')})" + "expected Array of or Hash of components of #{self} (#{component.join(', ')})" end tmp << nil @@ -284,7 +284,7 @@ def registry # :nodoc: # Returns the parser to be used. # - # Unless a Bundler::URI::Parser is defined, DEFAULT_PARSER is used. + # Unless the +parser+ is defined, DEFAULT_PARSER is used. # def parser if !defined?(@parser) || !@parser @@ -315,7 +315,7 @@ def component end # - # Checks the scheme +v+ component against the Bundler::URI::Parser Regexp for :SCHEME. + # Checks the scheme +v+ component against the +parser+ Regexp for :SCHEME. # def check_scheme(v) if v && parser.regexp[:SCHEME] !~ v @@ -385,7 +385,7 @@ def check_userinfo(user, password = nil) # # Checks the user +v+ component for RFC2396 compliance - # and against the Bundler::URI::Parser Regexp for :USERINFO. + # and against the +parser+ Regexp for :USERINFO. # # Can not have a registry or opaque component defined, # with a user component defined. @@ -409,7 +409,7 @@ def check_user(v) # # Checks the password +v+ component for RFC2396 compliance - # and against the Bundler::URI::Parser Regexp for :USERINFO. + # and against the +parser+ Regexp for :USERINFO. # # Can not have a registry or opaque component defined, # with a user component defined. @@ -592,7 +592,7 @@ def decoded_password # # Checks the host +v+ component for RFC2396 compliance - # and against the Bundler::URI::Parser Regexp for :HOST. + # and against the +parser+ Regexp for :HOST. # # Can not have a registry or opaque component defined, # with a host component defined. @@ -689,7 +689,7 @@ def hostname=(v) # # Checks the port +v+ component for RFC2396 compliance - # and against the Bundler::URI::Parser Regexp for :PORT. + # and against the +parser+ Regexp for :PORT. # # Can not have a registry or opaque component defined, # with a port component defined. @@ -763,7 +763,7 @@ def registry=(v) # :nodoc: # # Checks the path +v+ component for RFC2396 compliance - # and against the Bundler::URI::Parser Regexp + # and against the +parser+ Regexp # for :ABS_PATH and :REL_PATH. # # Can not have a opaque component defined, @@ -868,7 +868,7 @@ def query=(v) # # Checks the opaque +v+ component for RFC2396 compliance and - # against the Bundler::URI::Parser Regexp for :OPAQUE. + # against the +parser+ Regexp for :OPAQUE. # # Can not have a host, port, user, or path component defined, # with an opaque component defined. @@ -920,7 +920,7 @@ def opaque=(v) end # - # Checks the fragment +v+ component against the Bundler::URI::Parser Regexp for :FRAGMENT. + # Checks the fragment +v+ component against the +parser+ Regexp for :FRAGMENT. # # # == Args @@ -1540,7 +1540,7 @@ def find_proxy(env=ENV) else unless proxy_uri = env[name] if proxy_uri = env[name.upcase] - warn 'The environment variable HTTP_PROXY is discouraged. Use http_proxy.', uplevel: 1 + warn 'The environment variable HTTP_PROXY is discouraged. Please use http_proxy instead.', uplevel: 1 end end end diff --git a/bundler/lib/bundler/vendor/uri/lib/uri/http.rb b/bundler/lib/bundler/vendor/uri/lib/uri/http.rb index 6c34a469b7c2..9b217ee266dd 100644 --- a/bundler/lib/bundler/vendor/uri/lib/uri/http.rb +++ b/bundler/lib/bundler/vendor/uri/lib/uri/http.rb @@ -61,6 +61,18 @@ def self.build(args) super(tmp) end + # Do not allow empty host names, as they are not allowed by RFC 3986. + def check_host(v) + ret = super + + if ret && v.empty? + raise InvalidComponentError, + "bad component(expected host component): #{v}" + end + + ret + end + # # == Description # diff --git a/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb b/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb index 229971f73c6e..522113fe678f 100644 --- a/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb +++ b/bundler/lib/bundler/vendor/uri/lib/uri/rfc2396_parser.rb @@ -67,7 +67,7 @@ class RFC2396_Parser # # == Synopsis # - # Bundler::URI::Parser.new([opts]) + # Bundler::URI::RFC2396_Parser.new([opts]) # # == Args # @@ -86,7 +86,7 @@ class RFC2396_Parser # # == Examples # - # p = Bundler::URI::Parser.new(:ESCAPED => "(?:%[a-fA-F0-9]{2}|%u[a-fA-F0-9]{4})") + # p = Bundler::URI::RFC2396_Parser.new(:ESCAPED => "(?:%[a-fA-F0-9]{2}|%u[a-fA-F0-9]{4})") # u = p.parse("http://example.jp/%uABCD") #=> # # Bundler::URI.parse(u.to_s) #=> raises Bundler::URI::InvalidURIError # @@ -108,12 +108,12 @@ def initialize(opts = {}) # The Hash of patterns. # - # See also Bundler::URI::Parser.initialize_pattern. + # See also #initialize_pattern. attr_reader :pattern # The Hash of Regexp. # - # See also Bundler::URI::Parser.initialize_regexp. + # See also #initialize_regexp. attr_reader :regexp # Returns a split Bundler::URI against +regexp[:ABS_URI]+. @@ -202,8 +202,7 @@ def split(uri) # # == Usage # - # p = Bundler::URI::Parser.new - # p.parse("ldap://ldap.example.com/dc=example?user=john") + # Bundler::URI::RFC2396_PARSER.parse("ldap://ldap.example.com/dc=example?user=john") # #=> # # def parse(uri) @@ -244,7 +243,7 @@ def join(*uris) # If no +block+ given, then returns the result, # else it calls +block+ for each element in result. # - # See also Bundler::URI::Parser.make_regexp. + # See also #make_regexp. # def extract(str, schemes = nil) if block_given? @@ -263,7 +262,7 @@ def make_regexp(schemes = nil) unless schemes @regexp[:ABS_URI_REF] else - /(?=#{Regexp.union(*schemes)}:)#{@pattern[:X_ABS_URI]}/x + /(?=(?i:#{Regexp.union(*schemes).source}):)#{@pattern[:X_ABS_URI]}/x end end @@ -524,6 +523,8 @@ def initialize_regexp(pattern) ret end + # Returns +uri+ as-is if it is Bundler::URI, or convert it to Bundler::URI if it is + # a String. def convert_to_uri(uri) if uri.is_a?(Bundler::URI::Generic) uri diff --git a/bundler/lib/bundler/vendor/uri/lib/uri/version.rb b/bundler/lib/bundler/vendor/uri/lib/uri/version.rb index a3ec8b9b0b47..ad76308e81d1 100644 --- a/bundler/lib/bundler/vendor/uri/lib/uri/version.rb +++ b/bundler/lib/bundler/vendor/uri/lib/uri/version.rb @@ -1,6 +1,6 @@ module Bundler::URI # :stopdoc: - VERSION_CODE = '010004'.freeze - VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze + VERSION = '1.1.1'.freeze + VERSION_CODE = VERSION.split('.').map{|s| s.rjust(2, '0')}.join.freeze # :startdoc: end diff --git a/lib/rubygems/vendor/uri/lib/uri/common.rb b/lib/rubygems/vendor/uri/lib/uri/common.rb index 3c406111ac48..f6c7b1bd0469 100644 --- a/lib/rubygems/vendor/uri/lib/uri/common.rb +++ b/lib/rubygems/vendor/uri/lib/uri/common.rb @@ -30,6 +30,9 @@ def self.parser=(parser = RFC3986_PARSER) remove_const(:Parser) if defined?(::Gem::URI::Parser) const_set("Parser", parser.class) + remove_const(:PARSER) if defined?(::Gem::URI::PARSER) + const_set("PARSER", parser) + remove_const(:REGEXP) if defined?(::Gem::URI::REGEXP) remove_const(:PATTERN) if defined?(::Gem::URI::PATTERN) if Parser == RFC2396_Parser @@ -49,10 +52,10 @@ def self.const_missing(const) # :nodoc: warn "Gem::URI::REGEXP is obsolete. Use Gem::URI::RFC2396_REGEXP explicitly.", uplevel: 1 if $VERBOSE Gem::URI::RFC2396_REGEXP elsif value = RFC2396_PARSER.regexp[const] - warn "Gem::URI::#{const} is obsolete. Use RFC2396_PARSER.regexp[#{const.inspect}] explicitly.", uplevel: 1 if $VERBOSE + warn "Gem::URI::#{const} is obsolete. Use Gem::URI::RFC2396_PARSER.regexp[#{const.inspect}] explicitly.", uplevel: 1 if $VERBOSE value elsif value = RFC2396_Parser.const_get(const) - warn "Gem::URI::#{const} is obsolete. Use RFC2396_Parser::#{const} explicitly.", uplevel: 1 if $VERBOSE + warn "Gem::URI::#{const} is obsolete. Use Gem::URI::RFC2396_Parser::#{const} explicitly.", uplevel: 1 if $VERBOSE value else super @@ -92,6 +95,40 @@ def make_components_hash(klass, array_hash) end module Schemes # :nodoc: + class << self + ReservedChars = ".+-" + EscapedChars = "\u01C0\u01C1\u01C2" + # Use Lo category chars as escaped chars for TruffleRuby, which + # does not allow Symbol categories as identifiers. + + def escape(name) + unless name and name.ascii_only? + return nil + end + name.upcase.tr(ReservedChars, EscapedChars) + end + + def unescape(name) + name.tr(EscapedChars, ReservedChars).encode(Encoding::US_ASCII).upcase + end + + def find(name) + const_get(name, false) if name and const_defined?(name, false) + end + + def register(name, klass) + unless scheme = escape(name) + raise ArgumentError, "invalid character as scheme - #{name}" + end + const_set(scheme, klass) + end + + def list + constants.map { |name| + [unescape(name.to_s), const_get(name)] + }.to_h + end + end end private_constant :Schemes @@ -104,7 +141,7 @@ module Schemes # :nodoc: # Note that after calling String#upcase on +scheme+, it must be a valid # constant name. def self.register_scheme(scheme, klass) - Schemes.const_set(scheme.to_s.upcase, klass) + Schemes.register(scheme, klass) end # Returns a hash of the defined schemes: @@ -122,14 +159,14 @@ def self.register_scheme(scheme, klass) # # Related: Gem::URI.register_scheme. def self.scheme_list - Schemes.constants.map { |name| - [name.to_s.upcase, Schemes.const_get(name)] - }.to_h + Schemes.list end + # :stopdoc: INITIAL_SCHEMES = scheme_list private_constant :INITIAL_SCHEMES Ractor.make_shareable(INITIAL_SCHEMES) if defined?(Ractor) + # :startdoc: # Returns a new object constructed from the given +scheme+, +arguments+, # and +default+: @@ -148,12 +185,10 @@ def self.scheme_list # # => # # def self.for(scheme, *arguments, default: Generic) - const_name = scheme.to_s.upcase + const_name = Schemes.escape(scheme) uri_class = INITIAL_SCHEMES[const_name] - uri_class ||= if /\A[A-Z]\w*\z/.match?(const_name) && Schemes.const_defined?(const_name, false) - Schemes.const_get(const_name, false) - end + uri_class ||= Schemes.find(const_name) uri_class ||= default return uri_class.new(scheme, *arguments) @@ -195,7 +230,7 @@ class BadURIError < Error; end # ["fragment", "top"]] # def self.split(uri) - DEFAULT_PARSER.split(uri) + PARSER.split(uri) end # Returns a new \Gem::URI object constructed from the given string +uri+: @@ -205,11 +240,11 @@ def self.split(uri) # Gem::URI.parse('http://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top') # # => # # - # It's recommended to first ::escape string +uri+ + # It's recommended to first Gem::URI::RFC2396_PARSER.escape string +uri+ # if it may contain invalid Gem::URI characters. # def self.parse(uri) - DEFAULT_PARSER.parse(uri) + PARSER.parse(uri) end # Merges the given Gem::URI strings +str+ @@ -265,7 +300,7 @@ def self.join(*str) # def self.extract(str, schemes = nil, &block) # :nodoc: warn "Gem::URI.extract is obsolete", uplevel: 1 if $VERBOSE - DEFAULT_PARSER.extract(str, schemes, &block) + PARSER.extract(str, schemes, &block) end # @@ -302,7 +337,7 @@ def self.extract(str, schemes = nil, &block) # :nodoc: # def self.regexp(schemes = nil)# :nodoc: warn "Gem::URI.regexp is obsolete", uplevel: 1 if $VERBOSE - DEFAULT_PARSER.make_regexp(schemes) + PARSER.make_regexp(schemes) end TBLENCWWWCOMP_ = {} # :nodoc: @@ -407,6 +442,8 @@ def self.decode_uri_component(str, enc=Encoding::UTF_8) _decode_uri_component(/%\h\h/, str, enc) end + # Returns a string derived from the given string +str+ with + # Gem::URI-encoded characters matching +regexp+ according to +table+. def self._encode_uri_component(regexp, table, str, enc) str = str.to_s.dup if str.encoding != Encoding::ASCII_8BIT @@ -421,6 +458,8 @@ def self._encode_uri_component(regexp, table, str, enc) end private_class_method :_encode_uri_component + # Returns a string decoding characters matching +regexp+ from the + # given \URL-encoded string +str+. def self._decode_uri_component(regexp, str, enc) raise ArgumentError, "invalid %-encoding (#{str})" if /%(?!\h\h)/.match?(str) str.b.gsub(regexp, TBLDECWWWCOMP_).force_encoding(enc) @@ -859,6 +898,7 @@ module Gem # Returns a \Gem::URI object derived from the given +uri+, # which may be a \Gem::URI string or an existing \Gem::URI object: # + # require 'rubygems/vendor/uri/lib/uri' # # Returns a new Gem::URI. # uri = Gem::URI('http://github.com/ruby/ruby') # # => # @@ -866,6 +906,8 @@ module Gem # Gem::URI(uri) # # => # # + # You must require 'rubygems/vendor/uri/lib/uri' to use this method. + # def URI(uri) if uri.is_a?(Gem::URI::Generic) uri diff --git a/lib/rubygems/vendor/uri/lib/uri/file.rb b/lib/rubygems/vendor/uri/lib/uri/file.rb index 768755fc2d5b..391c499716c9 100644 --- a/lib/rubygems/vendor/uri/lib/uri/file.rb +++ b/lib/rubygems/vendor/uri/lib/uri/file.rb @@ -47,7 +47,7 @@ class File < Generic # :path => '/ruby/src'}) # uri2.to_s # => "file://host.example.com/ruby/src" # - # uri3 = Gem::URI::File.build({:path => Gem::URI::escape('/path/my file.txt')}) + # uri3 = Gem::URI::File.build({:path => Gem::URI::RFC2396_PARSER.escape('/path/my file.txt')}) # uri3.to_s # => "file:///path/my%20file.txt" # def self.build(args) diff --git a/lib/rubygems/vendor/uri/lib/uri/generic.rb b/lib/rubygems/vendor/uri/lib/uri/generic.rb index 99b33b3d4f11..d0bc77dfda28 100644 --- a/lib/rubygems/vendor/uri/lib/uri/generic.rb +++ b/lib/rubygems/vendor/uri/lib/uri/generic.rb @@ -73,7 +73,7 @@ def self.use_registry # :nodoc: # # At first, tries to create a new Gem::URI::Generic instance using # Gem::URI::Generic::build. But, if exception Gem::URI::InvalidComponentError is raised, - # then it does Gem::URI::Escape.escape all Gem::URI components and tries again. + # then it does Gem::URI::RFC2396_PARSER.escape all Gem::URI components and tries again. # def self.build2(args) begin @@ -126,9 +126,9 @@ def self.build(args) end end else - component = self.class.component rescue ::Gem::URI::Generic::COMPONENT + component = self.component rescue ::Gem::URI::Generic::COMPONENT raise ArgumentError, - "expected Array of or Hash of components of #{self.class} (#{component.join(', ')})" + "expected Array of or Hash of components of #{self} (#{component.join(', ')})" end tmp << nil @@ -284,7 +284,7 @@ def registry # :nodoc: # Returns the parser to be used. # - # Unless a Gem::URI::Parser is defined, DEFAULT_PARSER is used. + # Unless the +parser+ is defined, DEFAULT_PARSER is used. # def parser if !defined?(@parser) || !@parser @@ -315,7 +315,7 @@ def component end # - # Checks the scheme +v+ component against the Gem::URI::Parser Regexp for :SCHEME. + # Checks the scheme +v+ component against the +parser+ Regexp for :SCHEME. # def check_scheme(v) if v && parser.regexp[:SCHEME] !~ v @@ -385,7 +385,7 @@ def check_userinfo(user, password = nil) # # Checks the user +v+ component for RFC2396 compliance - # and against the Gem::URI::Parser Regexp for :USERINFO. + # and against the +parser+ Regexp for :USERINFO. # # Can not have a registry or opaque component defined, # with a user component defined. @@ -409,7 +409,7 @@ def check_user(v) # # Checks the password +v+ component for RFC2396 compliance - # and against the Gem::URI::Parser Regexp for :USERINFO. + # and against the +parser+ Regexp for :USERINFO. # # Can not have a registry or opaque component defined, # with a user component defined. @@ -592,7 +592,7 @@ def decoded_password # # Checks the host +v+ component for RFC2396 compliance - # and against the Gem::URI::Parser Regexp for :HOST. + # and against the +parser+ Regexp for :HOST. # # Can not have a registry or opaque component defined, # with a host component defined. @@ -689,7 +689,7 @@ def hostname=(v) # # Checks the port +v+ component for RFC2396 compliance - # and against the Gem::URI::Parser Regexp for :PORT. + # and against the +parser+ Regexp for :PORT. # # Can not have a registry or opaque component defined, # with a port component defined. @@ -763,7 +763,7 @@ def registry=(v) # :nodoc: # # Checks the path +v+ component for RFC2396 compliance - # and against the Gem::URI::Parser Regexp + # and against the +parser+ Regexp # for :ABS_PATH and :REL_PATH. # # Can not have a opaque component defined, @@ -868,7 +868,7 @@ def query=(v) # # Checks the opaque +v+ component for RFC2396 compliance and - # against the Gem::URI::Parser Regexp for :OPAQUE. + # against the +parser+ Regexp for :OPAQUE. # # Can not have a host, port, user, or path component defined, # with an opaque component defined. @@ -920,7 +920,7 @@ def opaque=(v) end # - # Checks the fragment +v+ component against the Gem::URI::Parser Regexp for :FRAGMENT. + # Checks the fragment +v+ component against the +parser+ Regexp for :FRAGMENT. # # # == Args @@ -1540,7 +1540,7 @@ def find_proxy(env=ENV) else unless proxy_uri = env[name] if proxy_uri = env[name.upcase] - warn 'The environment variable HTTP_PROXY is discouraged. Use http_proxy.', uplevel: 1 + warn 'The environment variable HTTP_PROXY is discouraged. Please use http_proxy instead.', uplevel: 1 end end end diff --git a/lib/rubygems/vendor/uri/lib/uri/http.rb b/lib/rubygems/vendor/uri/lib/uri/http.rb index 658e9941dd75..99c78358acf4 100644 --- a/lib/rubygems/vendor/uri/lib/uri/http.rb +++ b/lib/rubygems/vendor/uri/lib/uri/http.rb @@ -61,6 +61,18 @@ def self.build(args) super(tmp) end + # Do not allow empty host names, as they are not allowed by RFC 3986. + def check_host(v) + ret = super + + if ret && v.empty? + raise InvalidComponentError, + "bad component(expected host component): #{v}" + end + + ret + end + # # == Description # diff --git a/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb b/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb index 04a1d0c86927..2bb4181649e3 100644 --- a/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb +++ b/lib/rubygems/vendor/uri/lib/uri/rfc2396_parser.rb @@ -67,7 +67,7 @@ class RFC2396_Parser # # == Synopsis # - # Gem::URI::Parser.new([opts]) + # Gem::URI::RFC2396_Parser.new([opts]) # # == Args # @@ -86,7 +86,7 @@ class RFC2396_Parser # # == Examples # - # p = Gem::URI::Parser.new(:ESCAPED => "(?:%[a-fA-F0-9]{2}|%u[a-fA-F0-9]{4})") + # p = Gem::URI::RFC2396_Parser.new(:ESCAPED => "(?:%[a-fA-F0-9]{2}|%u[a-fA-F0-9]{4})") # u = p.parse("http://example.jp/%uABCD") #=> # # Gem::URI.parse(u.to_s) #=> raises Gem::URI::InvalidURIError # @@ -108,12 +108,12 @@ def initialize(opts = {}) # The Hash of patterns. # - # See also Gem::URI::Parser.initialize_pattern. + # See also #initialize_pattern. attr_reader :pattern # The Hash of Regexp. # - # See also Gem::URI::Parser.initialize_regexp. + # See also #initialize_regexp. attr_reader :regexp # Returns a split Gem::URI against +regexp[:ABS_URI]+. @@ -202,8 +202,7 @@ def split(uri) # # == Usage # - # p = Gem::URI::Parser.new - # p.parse("ldap://ldap.example.com/dc=example?user=john") + # Gem::URI::RFC2396_PARSER.parse("ldap://ldap.example.com/dc=example?user=john") # #=> # # def parse(uri) @@ -244,7 +243,7 @@ def join(*uris) # If no +block+ given, then returns the result, # else it calls +block+ for each element in result. # - # See also Gem::URI::Parser.make_regexp. + # See also #make_regexp. # def extract(str, schemes = nil) if block_given? @@ -263,7 +262,7 @@ def make_regexp(schemes = nil) unless schemes @regexp[:ABS_URI_REF] else - /(?=#{Regexp.union(*schemes)}:)#{@pattern[:X_ABS_URI]}/x + /(?=(?i:#{Regexp.union(*schemes).source}):)#{@pattern[:X_ABS_URI]}/x end end @@ -524,6 +523,8 @@ def initialize_regexp(pattern) ret end + # Returns +uri+ as-is if it is Gem::URI, or convert it to Gem::URI if it is + # a String. def convert_to_uri(uri) if uri.is_a?(Gem::URI::Generic) uri diff --git a/lib/rubygems/vendor/uri/lib/uri/version.rb b/lib/rubygems/vendor/uri/lib/uri/version.rb index d3dd421aaa39..7ee577887b37 100644 --- a/lib/rubygems/vendor/uri/lib/uri/version.rb +++ b/lib/rubygems/vendor/uri/lib/uri/version.rb @@ -1,6 +1,6 @@ module Gem::URI # :stopdoc: - VERSION_CODE = '010004'.freeze - VERSION = VERSION_CODE.scan(/../).collect{|n| n.to_i}.join('.').freeze + VERSION = '1.1.1'.freeze + VERSION_CODE = VERSION.split('.').map{|s| s.rjust(2, '0')}.join.freeze # :startdoc: end diff --git a/tool/bundler/vendor_gems.rb b/tool/bundler/vendor_gems.rb index 4f9c4ceb0cea..a1b4c0023297 100644 --- a/tool/bundler/vendor_gems.rb +++ b/tool/bundler/vendor_gems.rb @@ -14,4 +14,4 @@ gem "timeout", "0.4.3" gem "thor", "1.4.0" gem "tsort", "0.2.0" -gem "uri", "1.0.4" +gem "uri", "1.1.1" diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index 7872420630f6..b95f453a4323 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -29,7 +29,7 @@ GEM thor (1.4.0) timeout (0.4.3) tsort (0.2.0) - uri (1.0.4) + uri (1.1.1) PLATFORMS java @@ -53,7 +53,7 @@ DEPENDENCIES thor (= 1.4.0) timeout (= 0.4.3) tsort (= 0.2.0) - uri (= 1.0.4) + uri (= 1.1.1) CHECKSUMS connection_pool (2.5.4) sha256=e9e1922327416091f3f6542f5f4446c2a20745276b9aa796dd0bb2fd0ea1e70a @@ -69,7 +69,7 @@ CHECKSUMS thor (1.4.0) sha256=8763e822ccb0f1d7bee88cde131b19a65606657b847cc7b7b4b82e772bcd8a3d timeout (0.4.3) sha256=9509f079b2b55fe4236d79633bd75e34c1c1e7e3fb4b56cb5fda61f80a0fe30e tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f - uri (1.0.4) sha256=34485d137c079f8753a0ca1d883841a7ba2e5fae556e3c30c2aab0dde616344b + uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 BUNDLED WITH 4.0.0.dev From b6deff99c9e9fab7ad2867ab11e200b1c3e17869 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 17 Nov 2025 12:51:48 +0900 Subject: [PATCH 142/295] Update timeout-0.4.4 --- lib/rubygems/vendor/timeout/lib/timeout.rb | 5 ++++- tool/bundler/vendor_gems.rb | 2 +- tool/bundler/vendor_gems.rb.lock | 6 +++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/rubygems/vendor/timeout/lib/timeout.rb b/lib/rubygems/vendor/timeout/lib/timeout.rb index 455c504f4706..376b8c0e2b9e 100644 --- a/lib/rubygems/vendor/timeout/lib/timeout.rb +++ b/lib/rubygems/vendor/timeout/lib/timeout.rb @@ -20,7 +20,7 @@ module Gem::Timeout # The version - VERSION = "0.4.3" + VERSION = "0.4.4" # Internal error raised to when a timeout is triggered. class ExitException < Exception @@ -123,6 +123,9 @@ def self.create_timeout_thread def self.ensure_timeout_thread_created unless @timeout_thread and @timeout_thread.alive? + # If the Mutex is already owned we are in a signal handler. + # In that case, just return and let the main thread create the @timeout_thread. + return if TIMEOUT_THREAD_MUTEX.owned? TIMEOUT_THREAD_MUTEX.synchronize do unless @timeout_thread and @timeout_thread.alive? @timeout_thread = create_timeout_thread diff --git a/tool/bundler/vendor_gems.rb b/tool/bundler/vendor_gems.rb index a1b4c0023297..8819dd63a078 100644 --- a/tool/bundler/vendor_gems.rb +++ b/tool/bundler/vendor_gems.rb @@ -11,7 +11,7 @@ gem "pub_grub", github: "jhawthorn/pub_grub", ref: "df6add45d1b4d122daff2f959c9bd1ca93d14261" gem "resolv", "0.6.2" gem "securerandom", "0.4.1" -gem "timeout", "0.4.3" +gem "timeout", "0.4.4" gem "thor", "1.4.0" gem "tsort", "0.2.0" gem "uri", "1.1.1" diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index b95f453a4323..f7f32273d533 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -27,7 +27,7 @@ GEM resolv (0.6.2) securerandom (0.4.1) thor (1.4.0) - timeout (0.4.3) + timeout (0.4.4) tsort (0.2.0) uri (1.1.1) @@ -51,7 +51,7 @@ DEPENDENCIES resolv (= 0.6.2) securerandom (= 0.4.1) thor (= 1.4.0) - timeout (= 0.4.3) + timeout (= 0.4.4) tsort (= 0.2.0) uri (= 1.1.1) @@ -67,7 +67,7 @@ CHECKSUMS resolv (0.6.2) sha256=61efe545cedddeb1b14f77e51f85c85ca66af5098fdbf567fadf32c34590fb14 securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1 thor (1.4.0) sha256=8763e822ccb0f1d7bee88cde131b19a65606657b847cc7b7b4b82e772bcd8a3d - timeout (0.4.3) sha256=9509f079b2b55fe4236d79633bd75e34c1c1e7e3fb4b56cb5fda61f80a0fe30e + timeout (0.4.4) sha256=f0f6f970104b82427cd990680f539b6bbb8b1e55efa913a55c6492935e4e0edb tsort (0.2.0) sha256=9650a793f6859a43b6641671278f79cfead60ac714148aabe4e3f0060480089f uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 From f8fe7a52089ae6b101b53105306a8cc0630d60fe Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 17 Nov 2025 12:54:28 +0900 Subject: [PATCH 143/295] Update fileutils-1.8.0 --- .../bundler/vendor/fileutils/lib/fileutils.rb | 109 +++++++++--------- tool/bundler/vendor_gems.rb | 2 +- tool/bundler/vendor_gems.rb.lock | 6 +- 3 files changed, 61 insertions(+), 56 deletions(-) diff --git a/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb b/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb index 89775a742198..e2008c4e512d 100644 --- a/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb +++ b/bundler/lib/bundler/vendor/fileutils/lib/fileutils.rb @@ -181,7 +181,7 @@ # module Bundler::FileUtils # The version number. - VERSION = "1.7.3" + VERSION = "1.8.0" def self.private_module_function(name) #:nodoc: module_function name @@ -706,11 +706,12 @@ def cp_lr(src, dest, noop: nil, verbose: nil, # def ln_s(src, dest, force: nil, relative: false, target_directory: true, noop: nil, verbose: nil) if relative - return ln_sr(src, dest, force: force, noop: noop, verbose: verbose) + return ln_sr(src, dest, force: force, target_directory: target_directory, noop: noop, verbose: verbose) end - fu_output_message "ln -s#{force ? 'f' : ''} #{[src,dest].flatten.join ' '}" if verbose + fu_output_message "ln -s#{force ? 'f' : ''}#{ + target_directory ? '' : 'T'} #{[src,dest].flatten.join ' '}" if verbose return if noop - fu_each_src_dest0(src, dest) do |s,d| + fu_each_src_dest0(src, dest, target_directory) do |s,d| remove_file d, true if force File.symlink s, d end @@ -730,42 +731,37 @@ def ln_sf(src, dest, noop: nil, verbose: nil) # Like Bundler::FileUtils.ln_s, but create links relative to +dest+. # def ln_sr(src, dest, target_directory: true, force: nil, noop: nil, verbose: nil) - options = "#{force ? 'f' : ''}#{target_directory ? '' : 'T'}" - dest = File.path(dest) - srcs = Array(src) - link = proc do |s, target_dir_p = true| - s = File.path(s) - if target_dir_p - d = File.join(destdirs = dest, File.basename(s)) + cmd = "ln -s#{force ? 'f' : ''}#{target_directory ? '' : 'T'}" if verbose + fu_each_src_dest0(src, dest, target_directory) do |s,d| + if target_directory + parent = File.dirname(d) + destdirs = fu_split_path(parent) + real_ddirs = fu_split_path(File.realpath(parent)) else - destdirs = File.dirname(d = dest) + destdirs ||= fu_split_path(dest) + real_ddirs ||= fu_split_path(File.realdirpath(dest)) end - destdirs = fu_split_path(File.realpath(destdirs)) - if fu_starting_path?(s) - srcdirs = fu_split_path((File.realdirpath(s) rescue File.expand_path(s))) - base = fu_relative_components_from(srcdirs, destdirs) - s = File.join(*base) + srcdirs = fu_split_path(s) + i = fu_common_components(srcdirs, destdirs) + n = destdirs.size - i + n -= 1 unless target_directory + link1 = fu_clean_components(*Array.new([n, 0].max, '..'), *srcdirs[i..-1]) + begin + real_sdirs = fu_split_path(File.realdirpath(s)) rescue nil + rescue else - srcdirs = fu_clean_components(*fu_split_path(s)) - base = fu_relative_components_from(fu_split_path(Dir.pwd), destdirs) - while srcdirs.first&. == ".." and base.last&.!=("..") and !fu_starting_path?(base.last) - srcdirs.shift - base.pop - end - s = File.join(*base, *srcdirs) + i = fu_common_components(real_sdirs, real_ddirs) + n = real_ddirs.size - i + n -= 1 unless target_directory + link2 = fu_clean_components(*Array.new([n, 0].max, '..'), *real_sdirs[i..-1]) + link1 = link2 if link1.size > link2.size end - fu_output_message "ln -s#{options} #{s} #{d}" if verbose + s = File.join(link1) + fu_output_message [cmd, s, d].flatten.join(' ') if verbose next if noop remove_file d, true if force File.symlink s, d end - case srcs.size - when 0 - when 1 - link[srcs[0], target_directory && File.directory?(dest)] - else - srcs.each(&link) - end end module_function :ln_sr @@ -800,13 +796,13 @@ def ln_sr(src, dest, target_directory: true, force: nil, noop: nil, verbose: nil # File.file?('dest1/dir1/t2.txt') # => true # File.file?('dest1/dir1/t3.txt') # => true # - # Keyword arguments: + # Optional arguments: # - # - dereference_root: true - dereferences +src+ if it is a symbolic link. - # - remove_destination: true - removes +dest+ before creating links. + # - +dereference_root+ - dereferences +src+ if it is a symbolic link (+false+ by default). + # - +remove_destination+ - removes +dest+ before creating links (+false+ by default). # # Raises an exception if +dest+ is the path to an existing file or directory - # and keyword argument remove_destination: true is not given. + # and optional argument +remove_destination+ is not given. # # Related: Bundler::FileUtils.ln (has different options). # @@ -1029,12 +1025,12 @@ def cp_r(src, dest, preserve: nil, noop: nil, verbose: nil, # directories, and symbolic links; # other file types (FIFO streams, device files, etc.) are not supported. # - # Keyword arguments: + # Optional arguments: # - # - dereference_root: true - if +src+ is a symbolic link, - # follows the link. - # - preserve: true - preserves file times. - # - remove_destination: true - removes +dest+ before copying files. + # - +dereference_root+ - if +src+ is a symbolic link, + # follows the link (+false+ by default). + # - +preserve+ - preserves file times (+false+ by default). + # - +remove_destination+ - removes +dest+ before copying files (+false+ by default). # # Related: {methods for copying}[rdoc-ref:FileUtils@Copying]. # @@ -1065,12 +1061,12 @@ def copy_entry(src, dest, preserve = false, dereference_root = false, remove_des # Bundler::FileUtils.copy_file('src0.txt', 'dest0.txt') # File.file?('dest0.txt') # => true # - # Keyword arguments: + # Optional arguments: # - # - dereference: false - if +src+ is a symbolic link, - # does not follow the link. - # - preserve: true - preserves file times. - # - remove_destination: true - removes +dest+ before copying files. + # - +dereference+ - if +src+ is a symbolic link, + # follows the link (+true+ by default). + # - +preserve+ - preserves file times (+false+ by default). + # - +remove_destination+ - removes +dest+ before copying files (+false+ by default). # # Related: {methods for copying}[rdoc-ref:FileUtils@Copying]. # @@ -1491,7 +1487,8 @@ def remove_file(path, force = false) # Related: {methods for deleting}[rdoc-ref:FileUtils@Deleting]. # def remove_dir(path, force = false) - remove_entry path, force # FIXME?? check if it is a directory + raise Errno::ENOTDIR, path unless force or File.directory?(path) + remove_entry path, force end module_function :remove_dir @@ -2475,6 +2472,10 @@ def fu_each_src_dest(src, dest) #:nodoc: def fu_each_src_dest0(src, dest, target_directory = true) #:nodoc: if tmp = Array.try_convert(src) + unless target_directory or tmp.size <= 1 + tmp = tmp.map {|f| File.path(f)} # A workaround for RBS + raise ArgumentError, "extra target #{tmp}" + end tmp.each do |s| s = File.path(s) yield s, (target_directory ? File.join(dest, File.basename(s)) : dest) @@ -2509,7 +2510,11 @@ def fu_split_path(path) #:nodoc: path = File.path(path) list = [] until (parent, base = File.split(path); parent == path or parent == ".") - list << base + if base != '..' and list.last == '..' and !(fu_have_symlink? && File.symlink?(path)) + list.pop + else + list << base + end path = parent end list << path @@ -2517,14 +2522,14 @@ def fu_split_path(path) #:nodoc: end private_module_function :fu_split_path - def fu_relative_components_from(target, base) #:nodoc: + def fu_common_components(target, base) #:nodoc: i = 0 while target[i]&.== base[i] i += 1 end - Array.new(base.size-i, '..').concat(target[i..-1]) + i end - private_module_function :fu_relative_components_from + private_module_function :fu_common_components def fu_clean_components(*comp) #:nodoc: comp.shift while comp.first == "." @@ -2534,7 +2539,7 @@ def fu_clean_components(*comp) #:nodoc: while c = comp.shift if c == ".." and clean.last != ".." and !(fu_have_symlink? && File.symlink?(path)) clean.pop - path.chomp!(%r((?<=\A|/)[^/]+/\z), "") + path.sub!(%r((?<=\A|/)[^/]+/\z), "") else clean << c path << c << "/" diff --git a/tool/bundler/vendor_gems.rb b/tool/bundler/vendor_gems.rb index 8819dd63a078..d5c49e7fd9e1 100644 --- a/tool/bundler/vendor_gems.rb +++ b/tool/bundler/vendor_gems.rb @@ -2,7 +2,7 @@ source "https://rubygems.org/" -gem "fileutils", "1.7.3" +gem "fileutils", "1.8.0" gem "molinillo", github: "cocoapods/molinillo", ref: "1d62d7d5f448e79418716dc779a4909509ccda2a" gem "net-http", "0.8.0" gem "net-http-persistent", "4.0.6" diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index f7f32273d533..d4288928921d 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -16,7 +16,7 @@ GEM remote: https://rubygems.org/ specs: connection_pool (2.5.4) - fileutils (1.7.3) + fileutils (1.8.0) net-http (0.8.0) uri (>= 0.11.1) net-http-persistent (4.0.6) @@ -41,7 +41,7 @@ PLATFORMS x86_64-linux DEPENDENCIES - fileutils (= 1.7.3) + fileutils (= 1.8.0) molinillo! net-http (= 0.8.0) net-http-persistent (= 4.0.6) @@ -57,7 +57,7 @@ DEPENDENCIES CHECKSUMS connection_pool (2.5.4) sha256=e9e1922327416091f3f6542f5f4446c2a20745276b9aa796dd0bb2fd0ea1e70a - fileutils (1.7.3) sha256=57271e854b694a87755d76f836f5c57b2c9538ebbaf4b2154bb66addf15eb5da + fileutils (1.8.0) sha256=8c6b1df54e2540bdb2f39258f08af78853aa70bad52b4d394bbc6424593c6e02 molinillo (0.8.0) net-http (0.8.0) sha256=df42c47ce9f9e95ad32a317c97c12f945bc1af365288837ea4ff259876ecb46d net-http-persistent (4.0.6) sha256=2abb3a04438edf6cb9e0e7e505969605f709eda3e3c5211beadd621a2c84dd5d From a49d315ecd8d7d39bcaa86719a0d3dcfbe6c63c1 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 17 Nov 2025 15:12:45 +0900 Subject: [PATCH 144/295] Removed unused deprecate loading --- lib/rubygems/dependency_installer.rb | 2 -- lib/rubygems/dependency_list.rb | 1 - lib/rubygems/exceptions.rb | 1 - lib/rubygems/gem_runner.rb | 1 - lib/rubygems/user_interaction.rb | 3 --- 5 files changed, 8 deletions(-) diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_installer.rb index de86d9bf7e9b..a6cfc3c07af7 100644 --- a/lib/rubygems/dependency_installer.rb +++ b/lib/rubygems/dependency_installer.rb @@ -7,14 +7,12 @@ require_relative "spec_fetcher" require_relative "user_interaction" require_relative "available_set" -require_relative "deprecate" ## # Installs a gem along with all its dependencies from local and remote gems. class Gem::DependencyInstaller include Gem::UserInteraction - extend Gem::Deprecate DEFAULT_OPTIONS = { # :nodoc: env_shebang: false, diff --git a/lib/rubygems/dependency_list.rb b/lib/rubygems/dependency_list.rb index 99643a426d42..d50cfe2d547b 100644 --- a/lib/rubygems/dependency_list.rb +++ b/lib/rubygems/dependency_list.rb @@ -7,7 +7,6 @@ #++ require_relative "vendored_tsort" -require_relative "deprecate" ## # Gem::DependencyList is used for installing and uninstalling gems in the diff --git a/lib/rubygems/exceptions.rb b/lib/rubygems/exceptions.rb index 0f65c76daf5a..40485bbadff8 100644 --- a/lib/rubygems/exceptions.rb +++ b/lib/rubygems/exceptions.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -require_relative "deprecate" require_relative "unknown_command_spell_checker" ## diff --git a/lib/rubygems/gem_runner.rb b/lib/rubygems/gem_runner.rb index 4cb924677f83..e60cebd0cbb1 100644 --- a/lib/rubygems/gem_runner.rb +++ b/lib/rubygems/gem_runner.rb @@ -8,7 +8,6 @@ require_relative "../rubygems" require_relative "command_manager" -require_relative "deprecate" ## # Run an instance of the gem program. diff --git a/lib/rubygems/user_interaction.rb b/lib/rubygems/user_interaction.rb index 571137629406..9fe3e755c48f 100644 --- a/lib/rubygems/user_interaction.rb +++ b/lib/rubygems/user_interaction.rb @@ -6,7 +6,6 @@ # See LICENSE.txt for permissions. #++ -require_relative "deprecate" require_relative "text" ## @@ -170,8 +169,6 @@ def verbose(msg = nil) # Gem::StreamUI implements a simple stream based user interface. class Gem::StreamUI - extend Gem::Deprecate - ## # The input stream From 4e02243f662b74a03c57dc5a4fffe05dd203d57b Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 17 Nov 2025 14:18:55 +0900 Subject: [PATCH 145/295] Update optparse-0.8.0 --- lib/rubygems/vendor/optparse/lib/optparse.rb | 123 ++++++++++++------ ...rse-v0.4.0.patch => optparse-v0.8.0.patch} | 0 tool/automatiek/vendor.rb | 2 +- tool/bundler/vendor_gems.rb | 2 +- tool/bundler/vendor_gems.rb.lock | 6 +- 5 files changed, 87 insertions(+), 46 deletions(-) rename tool/automatiek/{optparse-v0.4.0.patch => optparse-v0.8.0.patch} (100%) diff --git a/lib/rubygems/vendor/optparse/lib/optparse.rb b/lib/rubygems/vendor/optparse/lib/optparse.rb index 537d06f2297b..d39d9dd4e02f 100644 --- a/lib/rubygems/vendor/optparse/lib/optparse.rb +++ b/lib/rubygems/vendor/optparse/lib/optparse.rb @@ -7,6 +7,7 @@ # # See Gem::OptionParser for documentation. # +require 'set' unless defined?(Set) #-- # == Developer Documentation (not for RDoc output) @@ -142,7 +143,7 @@ # Used: # # $ ruby optparse-test.rb -r -# optparse-test.rb:9:in `
': missing argument: -r (Gem::OptionParser::MissingArgument) +# optparse-test.rb:9:in '
': missing argument: -r (Gem::OptionParser::MissingArgument) # $ ruby optparse-test.rb -r my-library # You required my-library! # @@ -235,7 +236,7 @@ # $ ruby optparse-test.rb --user 2 # # # $ ruby optparse-test.rb --user 3 -# optparse-test.rb:15:in `block in find_user': No User Found for id 3 (RuntimeError) +# optparse-test.rb:15:in 'block in find_user': No User Found for id 3 (RuntimeError) # # === Store options to a Hash # @@ -425,7 +426,8 @@ # class Gem::OptionParser # The version string - Gem::OptionParser::Version = "0.6.0" + VERSION = "0.8.0" + Version = VERSION # for compatibility # :stopdoc: NoArgument = [NO_ARGUMENT = :NONE, nil].freeze @@ -461,6 +463,10 @@ def self.candidate(key, icase = false, pat = nil, &block) candidates end + def self.completable?(key) + String.try_convert(key) or defined?(key.id2name) + end + def candidate(key, icase = false, pat = nil, &_) Completion.candidate(key, icase, pat, &method(:each)) end @@ -496,7 +502,6 @@ def convert(opt = nil, val = nil, *) end end - # # Map from option/keyword string to object with completion. # @@ -504,7 +509,6 @@ class OptionMap < Hash include Completion end - # # Individual switch class. Not important to the user. # @@ -546,11 +550,11 @@ def self.pattern def initialize(pattern = nil, conv = nil, short = nil, long = nil, arg = nil, - desc = ([] if short or long), block = nil, &_block) + desc = ([] if short or long), block = nil, values = nil, &_block) raise if Array === pattern block ||= _block - @pattern, @conv, @short, @long, @arg, @desc, @block = - pattern, conv, short, long, arg, desc, block + @pattern, @conv, @short, @long, @arg, @desc, @block, @values = + pattern, conv, short, long, arg, desc, block, values end # @@ -583,11 +587,15 @@ def parse_arg(arg) # :nodoc: # exception. # def conv_arg(arg, val = []) # :nodoc: + v, = *val if conv val = conv.call(*val) else val = proc {|v| v}.call(*val) end + if @values + @values.include?(val) or raise InvalidArgument, v + end return arg, block, val end private :conv_arg @@ -668,7 +676,7 @@ def compsys(sdone, ldone) # :nodoc: (sopts+lopts).each do |opt| # "(-x -c -r)-l[left justify]" - if /^--\[no-\](.+)$/ =~ opt + if /\A--\[no-\](.+)$/ =~ opt o = $1 yield("--#{o}", desc.join("")) yield("--no-#{o}", desc.join("")) @@ -1032,7 +1040,6 @@ def match(key) DefaultList.short['-'] = Switch::NoArgument.new {} DefaultList.long[''] = Switch::NoArgument.new {throw :terminate} - COMPSYS_HEADER = <<'XXX' # :nodoc: typeset -A opt_args @@ -1051,16 +1058,16 @@ def compsys(to, name = File.basename($0)) # :nodoc: end def help_exit - if STDOUT.tty? && (pager = ENV.values_at(*%w[RUBY_PAGER PAGER]).find {|e| e && !e.empty?}) + if $stdout.tty? && (pager = ENV.values_at(*%w[RUBY_PAGER PAGER]).find {|e| e && !e.empty?}) less = ENV["LESS"] - args = [{"LESS" => "#{!less || less.empty? ? '-' : less}Fe"}, pager, "w"] + args = [{"LESS" => "#{less} -Fe"}, pager, "w"] print = proc do |f| f.puts help rescue Errno::EPIPE # pager terminated end if Process.respond_to?(:fork) and false - IO.popen("-") {|f| f ? Process.exec(*args, in: f) : print.call(STDOUT)} + IO.popen("-") {|f| f ? Process.exec(*args, in: f) : print.call($stdout)} # unreachable end IO.popen(*args, &print) @@ -1102,7 +1109,7 @@ def help_exit # Officious['*-completion-zsh'] = proc do |parser| Switch::OptionalArgument.new do |arg| - parser.compsys(STDOUT, arg) + parser.compsys($stdout, arg) exit end end @@ -1288,7 +1295,15 @@ def banner # to $0. # def program_name - @program_name || File.basename($0, '.*') + @program_name || strip_ext(File.basename($0)) + end + + private def strip_ext(name) # :nodoc: + exts = /#{ + require "rbconfig" + Regexp.union(*RbConfig::CONFIG["EXECUTABLE_EXTS"]&.split(" ")) + }\z/o + name.sub(exts, "") end # for experimental cascading :-) @@ -1467,6 +1482,7 @@ def make_switch(opts, block = nil) klass = nil q, a = nil has_arg = false + values = nil opts.each do |o| # argument class @@ -1480,7 +1496,7 @@ def make_switch(opts, block = nil) end # directly specified pattern(any object possible to match) - if (!(String === o || Symbol === o)) and o.respond_to?(:match) + if !Completion.completable?(o) and o.respond_to?(:match) pattern = notwice(o, pattern, 'pattern') if pattern.respond_to?(:convert) conv = pattern.method(:convert).to_proc @@ -1494,7 +1510,12 @@ def make_switch(opts, block = nil) case o when Proc, Method block = notwice(o, block, 'block') - when Array, Hash + when Array, Hash, Set + if Array === o + o, v = o.partition {|v,| Completion.completable?(v)} + values = notwice(v, values, 'values') unless v.empty? + next if o.empty? + end case pattern when CompletingHash when nil @@ -1504,11 +1525,13 @@ def make_switch(opts, block = nil) raise ArgumentError, "argument pattern given twice" end o.each {|pat, *v| pattern[pat] = v.fetch(0) {pat}} + when Range + values = notwice(o, values, 'values') when Module raise ArgumentError, "unsupported argument type: #{o}", ParseError.filter_backtrace(caller(4)) when *ArgumentStyle.keys style = notwice(ArgumentStyle[o], style, 'style') - when /^--no-([^\[\]=\s]*)(.+)?/ + when /\A--no-([^\[\]=\s]*)(.+)?/ q, a = $1, $2 o = notwice(a ? Object : TrueClass, klass, 'type') not_pattern, not_conv = search(:atype, o) unless not_style @@ -1519,7 +1542,7 @@ def make_switch(opts, block = nil) (q = q.downcase).tr!('_', '-') long << "no-#{q}" nolong << q - when /^--\[no-\]([^\[\]=\s]*)(.+)?/ + when /\A--\[no-\]([^\[\]=\s]*)(.+)?/ q, a = $1, $2 o = notwice(a ? Object : TrueClass, klass, 'type') if a @@ -1532,7 +1555,7 @@ def make_switch(opts, block = nil) not_pattern, not_conv = search(:atype, FalseClass) unless not_style not_style = Switch::NoArgument nolong << "no-#{o}" - when /^--([^\[\]=\s]*)(.+)?/ + when /\A--([^\[\]=\s]*)(.+)?/ q, a = $1, $2 if a o = notwice(NilClass, klass, 'type') @@ -1542,7 +1565,7 @@ def make_switch(opts, block = nil) ldesc << "--#{q}" (o = q.downcase).tr!('_', '-') long << o - when /^-(\[\^?\]?(?:[^\\\]]|\\.)*\])(.+)?/ + when /\A-(\[\^?\]?(?:[^\\\]]|\\.)*\])(.+)?/ q, a = $1, $2 o = notwice(Object, klass, 'type') if a @@ -1553,7 +1576,7 @@ def make_switch(opts, block = nil) end sdesc << "-#{q}" short << Regexp.new(q) - when /^-(.)(.+)?/ + when /\A-(.)(.+)?/ q, a = $1, $2 if a o = notwice(NilClass, klass, 'type') @@ -1562,7 +1585,7 @@ def make_switch(opts, block = nil) end sdesc << "-#{q}" short << q - when /^=/ + when /\A=/ style = notwice(default_style.guess(arg = o), style, 'style') default_pattern, conv = search(:atype, Object) unless default_pattern else @@ -1571,12 +1594,18 @@ def make_switch(opts, block = nil) end default_pattern, conv = search(:atype, default_style.pattern) unless default_pattern + if Range === values and klass + unless (!values.begin or klass === values.begin) and + (!values.end or klass === values.end) + raise ArgumentError, "range does not match class" + end + end if !(short.empty? and long.empty?) if has_arg and default_style == Switch::NoArgument default_style = Switch::RequiredArgument end s = (style || default_style).new(pattern || default_pattern, - conv, sdesc, ldesc, arg, desc, block) + conv, sdesc, ldesc, arg, desc, block, values) elsif !block if style or pattern raise ArgumentError, "no switch given", ParseError.filter_backtrace(caller) @@ -1585,7 +1614,7 @@ def make_switch(opts, block = nil) else short << pattern s = (style || default_style).new(pattern, - conv, nil, nil, arg, desc, block) + conv, nil, nil, arg, desc, block, values) end return s, short, long, (not_style.new(not_pattern, not_conv, sdesc, ldesc, nil, desc, block) if not_style), @@ -1827,7 +1856,7 @@ def permute(*argv, **keywords) # def permute!(argv = default_argv, **keywords) nonopts = [] - order!(argv, **keywords, &nonopts.method(:<<)) + order!(argv, **keywords) {|nonopt| nonopts << nonopt} argv[0, 0] = nonopts argv end @@ -1880,13 +1909,16 @@ def getopts(*args, symbolize_names: false, **keywords) single_options, *long_options = *args result = {} + setter = (symbolize_names ? + ->(name, val) {result[name.to_sym] = val} + : ->(name, val) {result[name] = val}) single_options.scan(/(.)(:)?/) do |opt, val| if val - result[opt] = nil + setter[opt, nil] define("-#{opt} VAL") else - result[opt] = false + setter[opt, false] define("-#{opt}") end end if single_options @@ -1895,16 +1927,16 @@ def getopts(*args, symbolize_names: false, **keywords) arg, desc = arg.split(';', 2) opt, val = arg.split(':', 2) if val - result[opt] = val.empty? ? nil : val + setter[opt, (val unless val.empty?)] define("--#{opt}=#{result[opt] || "VAL"}", *[desc].compact) else - result[opt] = false + setter[opt, false] define("--#{opt}", *[desc].compact) end end - parse_in_order(argv, result.method(:[]=), **keywords) - symbolize_names ? result.transform_keys(&:to_sym) : result + parse_in_order(argv, setter, **keywords) + result end # @@ -1954,7 +1986,7 @@ def complete(typ, opt, icase = false, *pat) # :nodoc: visit(:complete, typ, opt, icase, *pat) {|o, *sw| return sw} } exc = ambiguous ? AmbiguousOption : InvalidOption - raise exc.new(opt, additional: self.method(:additional_message).curry[typ]) + raise exc.new(opt, additional: proc {|o| additional_message(typ, o)}) end private :complete @@ -2019,19 +2051,27 @@ def candidate(word) def load(filename = nil, **keywords) unless filename basename = File.basename($0, '.*') - return true if load(File.expand_path(basename, '~/.options'), **keywords) rescue nil + return true if load(File.expand_path("~/.options/#{basename}"), **keywords) rescue nil basename << ".options" + if !(xdg = ENV['XDG_CONFIG_HOME']) or xdg.empty? + # https://specifications.freedesktop.org/basedir-spec/latest/#variables + # + # If $XDG_CONFIG_HOME is either not set or empty, a default + # equal to $HOME/.config should be used. + xdg = ['~/.config', true] + end return [ - # XDG - ENV['XDG_CONFIG_HOME'], - '~/.config', + xdg, + *ENV['XDG_CONFIG_DIRS']&.split(File::PATH_SEPARATOR), # Haiku - '~/config/settings', - ].any? {|dir| + ['~/config/settings', true], + ].any? {|dir, expand| next if !dir or dir.empty? - load(File.expand_path(basename, dir), **keywords) rescue nil + filename = File.join(dir, basename) + filename = File.expand_path(filename) if expand + load(filename, **keywords) rescue nil } end begin @@ -2237,9 +2277,10 @@ def recover(argv) argv end + DIR = File.join(__dir__, '') def self.filter_backtrace(array) unless $DEBUG - array.delete_if(&%r"\A#{Regexp.quote(__FILE__)}:"o.method(:=~)) + array.delete_if {|bt| bt.start_with?(DIR)} end array end diff --git a/tool/automatiek/optparse-v0.4.0.patch b/tool/automatiek/optparse-v0.8.0.patch similarity index 100% rename from tool/automatiek/optparse-v0.4.0.patch rename to tool/automatiek/optparse-v0.8.0.patch diff --git a/tool/automatiek/vendor.rb b/tool/automatiek/vendor.rb index 37a113782c68..4c264bb1af37 100755 --- a/tool/automatiek/vendor.rb +++ b/tool/automatiek/vendor.rb @@ -84,7 +84,7 @@ def require_target VendoredGem.new(name: "net-http", namespace: "Net", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/net-http", license_path: "COPYING", extra_dependencies: %w[net-protocol resolv timeout uri/lib/rubygems/vendor/uri], skip_dependencies: %w[uri], patch_name: "net-http-v0.8.0.patch"), VendoredGem.new(name: "net-http-persistent", namespace: "Net::HTTP::Persistent", prefix: "Gem", vendor_lib: "bundler/lib/bundler/vendor/net-http-persistent", license_path: "README.rdoc", extra_dependencies: %w[net-http uri/lib/rubygems/vendor/uri], patch_name: "net-http-persistent-v4.0.6.patch"), VendoredGem.new(name: "net-protocol", namespace: "Net", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/net-protocol", license_path: "LICENSE.txt"), - VendoredGem.new(name: "optparse", namespace: "OptionParser", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/optparse", license_path: "COPYING", extra_dependencies: %w[uri/lib/rubygems/vendor/uri], patch_name: "optparse-v0.4.0.patch"), + VendoredGem.new(name: "optparse", namespace: "OptionParser", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/optparse", license_path: "COPYING", extra_dependencies: %w[uri/lib/rubygems/vendor/uri], patch_name: "optparse-v0.8.0.patch"), VendoredGem.new(name: "resolv", namespace: "Resolv", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/resolv", license_path: "COPYING", extra_dependencies: %w[securerandom/lib/rubygems/vendor/securerandom timeout], patch_name: "resolv-v0.6.0.patch"), VendoredGem.new(name: "securerandom", namespace: "SecureRandom", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/securerandom", license_path: "COPYING"), VendoredGem.new(name: "timeout", namespace: "Timeout", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/timeout", license_path: "COPYING", patch_name: "timeout-v0.4.3.patch"), diff --git a/tool/bundler/vendor_gems.rb b/tool/bundler/vendor_gems.rb index d5c49e7fd9e1..589eab31fc11 100644 --- a/tool/bundler/vendor_gems.rb +++ b/tool/bundler/vendor_gems.rb @@ -7,7 +7,7 @@ gem "net-http", "0.8.0" gem "net-http-persistent", "4.0.6" gem "net-protocol", "0.2.2" -gem "optparse", "0.6.0" +gem "optparse", "0.8.0" gem "pub_grub", github: "jhawthorn/pub_grub", ref: "df6add45d1b4d122daff2f959c9bd1ca93d14261" gem "resolv", "0.6.2" gem "securerandom", "0.4.1" diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index d4288928921d..6bf917629e3e 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -23,7 +23,7 @@ GEM connection_pool (~> 2.2, >= 2.2.4) net-protocol (0.2.2) timeout - optparse (0.6.0) + optparse (0.8.0) resolv (0.6.2) securerandom (0.4.1) thor (1.4.0) @@ -46,7 +46,7 @@ DEPENDENCIES net-http (= 0.8.0) net-http-persistent (= 4.0.6) net-protocol (= 0.2.2) - optparse (= 0.6.0) + optparse (= 0.8.0) pub_grub! resolv (= 0.6.2) securerandom (= 0.4.1) @@ -62,7 +62,7 @@ CHECKSUMS net-http (0.8.0) sha256=df42c47ce9f9e95ad32a317c97c12f945bc1af365288837ea4ff259876ecb46d net-http-persistent (4.0.6) sha256=2abb3a04438edf6cb9e0e7e505969605f709eda3e3c5211beadd621a2c84dd5d net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8 - optparse (0.6.0) sha256=25e90469c1cd44048a89dc01c1dde9d5f0bdf717851055fb18237780779b068c + optparse (0.8.0) sha256=ef6b7fbaf7ec331474f325bc08dd5622e6e1e651007a5341330ee4b08ce734f0 pub_grub (0.5.0) resolv (0.6.2) sha256=61efe545cedddeb1b14f77e51f85c85ca66af5098fdbf567fadf32c34590fb14 securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1 From 778426fb732f0fa8d8350f7742fc518c6f538a98 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 17 Nov 2025 14:25:17 +0900 Subject: [PATCH 146/295] Update resolv-0.6.3 --- lib/rubygems/vendor/resolv/lib/resolv.rb | 2 +- .../{resolv-v0.6.0.patch => resolv-v0.6.3.patch} | 9 ++++++--- tool/automatiek/vendor.rb | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) rename tool/automatiek/{resolv-v0.6.0.patch => resolv-v0.6.3.patch} (73%) diff --git a/lib/rubygems/vendor/resolv/lib/resolv.rb b/lib/rubygems/vendor/resolv/lib/resolv.rb index 2825b1ea974b..168df21f3ece 100644 --- a/lib/rubygems/vendor/resolv/lib/resolv.rb +++ b/lib/rubygems/vendor/resolv/lib/resolv.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require 'socket' -require_relative '../../timeout/lib/timeout' +require_relative '../../../vendored_timeout' require 'io/wait' require_relative '../../../vendored_securerandom' diff --git a/tool/automatiek/resolv-v0.6.0.patch b/tool/automatiek/resolv-v0.6.3.patch similarity index 73% rename from tool/automatiek/resolv-v0.6.0.patch rename to tool/automatiek/resolv-v0.6.3.patch index 7e3c0783e0fd..7d9b88363224 100644 --- a/tool/automatiek/resolv-v0.6.0.patch +++ b/tool/automatiek/resolv-v0.6.3.patch @@ -1,10 +1,13 @@ diff --git a/lib/rubygems/vendor/resolv/lib/resolv.rb b/lib/rubygems/vendor/resolv/lib/resolv.rb -index 511f9888c26..4d95e5fc7fc 100644 +index d72b4dba38..168df21f3e 100644 --- a/lib/rubygems/vendor/resolv/lib/resolv.rb +++ b/lib/rubygems/vendor/resolv/lib/resolv.rb -@@ -3,7 +3,7 @@ +@@ -1,9 +1,9 @@ + # frozen_string_literal: true + require 'socket' - require_relative '../../timeout/lib/timeout' +-require_relative '../../timeout/lib/timeout' ++require_relative '../../../vendored_timeout' require 'io/wait' -require_relative '../../securerandom/lib/securerandom' +require_relative '../../../vendored_securerandom' diff --git a/tool/automatiek/vendor.rb b/tool/automatiek/vendor.rb index 4c264bb1af37..e7cf16ebd9a8 100755 --- a/tool/automatiek/vendor.rb +++ b/tool/automatiek/vendor.rb @@ -85,7 +85,7 @@ def require_target VendoredGem.new(name: "net-http-persistent", namespace: "Net::HTTP::Persistent", prefix: "Gem", vendor_lib: "bundler/lib/bundler/vendor/net-http-persistent", license_path: "README.rdoc", extra_dependencies: %w[net-http uri/lib/rubygems/vendor/uri], patch_name: "net-http-persistent-v4.0.6.patch"), VendoredGem.new(name: "net-protocol", namespace: "Net", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/net-protocol", license_path: "LICENSE.txt"), VendoredGem.new(name: "optparse", namespace: "OptionParser", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/optparse", license_path: "COPYING", extra_dependencies: %w[uri/lib/rubygems/vendor/uri], patch_name: "optparse-v0.8.0.patch"), - VendoredGem.new(name: "resolv", namespace: "Resolv", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/resolv", license_path: "COPYING", extra_dependencies: %w[securerandom/lib/rubygems/vendor/securerandom timeout], patch_name: "resolv-v0.6.0.patch"), + VendoredGem.new(name: "resolv", namespace: "Resolv", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/resolv", license_path: "COPYING", extra_dependencies: %w[securerandom/lib/rubygems/vendor/securerandom timeout], patch_name: "resolv-v0.6.3.patch"), VendoredGem.new(name: "securerandom", namespace: "SecureRandom", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/securerandom", license_path: "COPYING"), VendoredGem.new(name: "timeout", namespace: "Timeout", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/timeout", license_path: "COPYING", patch_name: "timeout-v0.4.3.patch"), VendoredGem.new(name: "tsort", namespace: "TSort", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/tsort", license_path: "LICENSE.txt"), From 6063fd99634b1797d55616874e60ba90edde3845 Mon Sep 17 00:00:00 2001 From: Edouard CHIN Date: Mon, 17 Nov 2025 00:18:33 +0100 Subject: [PATCH 147/295] Increase connection pool to allow for up to 70% speed increase: - ### TL;DR Bundler is heavily limited by the connection pool which manages a single connection. By increasing the number of connection, we can drastiscally speed up the installation process when many gems need to be downloaded and installed. ### Benchmark There are various factors that are hard to control such as compilation time and network speed but after dozens of tests I can consistently get aroud 70% speed increase when downloading and installing 472 gems, most having no native extensions (on purpose). ``` # Before bundle install 28.60s user 12.70s system 179% cpu 23.014 total # After bundle install 30.09s user 15.90s system 281% cpu 16.317 total ``` You can find on this gist how this was benchmarked and the Gemfile used https://gist.github.com/Edouard-chin/c8e39148c0cdf324dae827716fbe24a0 ### Context A while ago in #869, Aaron introduced a connection pool which greatly improved Bundler speed. It was noted in the PR description that managing one connection was already good enough and it wasn't clear whether we needed more connections. Aaron also had the intuition that we may need to increase the pool for downloading gems and he was right. > We need to study how RubyGems uses connections and make a decision > based on request usage (e.g. only use one connection for many small > requests like bundler API, and maybe many connections for > downloading gems) When bundler downloads and installs gem in parallel https://github.com/ruby/rubygems/blob/4f85e02fdd89ee28852722dfed42a13c9f5c9193/bundler/lib/bundler/installer/parallel_installer.rb#L128 most threads have to wait for the only connection in the pool to be available which is not efficient. ### Solution This commit modifies the pool size for the fetcher that Bundler uses. RubyGems fetcher will continue to use a single connection. The bundler fetcher is used in 2 places. 1. When downloading gems https://github.com/ruby/rubygems/blob/4f85e02fdd89ee28852722dfed42a13c9f5c9193/bundler/lib/bundler/source/rubygems.rb#L481-L484 2. When grabing the index (not the compact index) using the `bundle install --full-index` flag. https://github.com/ruby/rubygems/blob/4f85e02fdd89ee28852722dfed42a13c9f5c9193/bundler/lib/bundler/fetcher/index.rb#L9 Having more connections in 2) is not any useful but tweaking the size based on where the fetcher is used is a bit tricky so I opted to modify it at the class level. I fiddle with the pool size and found that 5 seems to be the sweet spot at least for my environment. --- .../lib/bundler/fetcher/gem_remote_fetcher.rb | 6 ++ .../fetcher/gem_remote_fetcher_spec.rb | 60 +++++++++++++++++++ lib/rubygems/remote_fetcher.rb | 3 +- lib/rubygems/request/connection_pools.rb | 7 ++- lib/rubygems/request/http_pool.rb | 15 +++-- .../test_gem_request_connection_pools.rb | 12 ++++ tool/bundler/test_gems.rb | 1 + tool/bundler/test_gems.rb.lock | 3 + 8 files changed, 99 insertions(+), 8 deletions(-) create mode 100644 bundler/spec/bundler/fetcher/gem_remote_fetcher_spec.rb diff --git a/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb b/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb index 3fc7b682632b..3c3c1826a1b1 100644 --- a/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb +++ b/bundler/lib/bundler/fetcher/gem_remote_fetcher.rb @@ -5,6 +5,12 @@ module Bundler class Fetcher class GemRemoteFetcher < Gem::RemoteFetcher + def initialize(*) + super + + @pool_size = 5 + end + def request(*args) super do |req| req.delete("User-Agent") if headers["User-Agent"] diff --git a/bundler/spec/bundler/fetcher/gem_remote_fetcher_spec.rb b/bundler/spec/bundler/fetcher/gem_remote_fetcher_spec.rb new file mode 100644 index 000000000000..df1a58d84362 --- /dev/null +++ b/bundler/spec/bundler/fetcher/gem_remote_fetcher_spec.rb @@ -0,0 +1,60 @@ +# frozen_string_literal: true + +require "rubygems/remote_fetcher" +require "bundler/fetcher/gem_remote_fetcher" +require_relative "../../support/artifice/helpers/artifice" +require "bundler/vendored_persistent.rb" + +RSpec.describe Bundler::Fetcher::GemRemoteFetcher do + describe "Parallel download" do + it "download using multiple connections from the pool" do + unless Bundler.rubygems.provides?(">= 4.0.0.dev") + skip "This example can only run when RubyGems supports multiple http connection pool" + end + + require_relative "../../support/artifice/helpers/endpoint" + concurrent_ruby_path = Dir[scoped_base_system_gem_path.join("gems/concurrent-ruby-*/lib/concurrent-ruby")].first + $LOAD_PATH.unshift(concurrent_ruby_path) + require "concurrent-ruby" + + require_rack_test + responses = [] + + latch1 = Concurrent::CountDownLatch.new + latch2 = Concurrent::CountDownLatch.new + previous_client = Gem::Request::ConnectionPools.client + dummy_endpoint = Class.new(Endpoint) do + get "/foo" do + latch2.count_down + latch1.wait + + responses << "foo" + end + + get "/bar" do + responses << "bar" + + latch1.count_down + end + end + + Artifice.activate_with(dummy_endpoint) + Gem::Request::ConnectionPools.client = Gem::Net::HTTP + + first_request = Thread.new do + subject.fetch_path("https://example.org/foo") + end + second_request = Thread.new do + latch2.wait + subject.fetch_path("https://example.org/bar") + end + + [first_request, second_request].each(&:join) + + expect(responses).to eq(["bar", "foo"]) + ensure + Artifice.deactivate + Gem::Request::ConnectionPools.client = previous_client + end + end +end diff --git a/lib/rubygems/remote_fetcher.rb b/lib/rubygems/remote_fetcher.rb index 01788a6a5f17..805f7aaf82ed 100644 --- a/lib/rubygems/remote_fetcher.rb +++ b/lib/rubygems/remote_fetcher.rb @@ -82,6 +82,7 @@ def initialize(proxy = nil, dns = nil, headers = {}) @proxy = proxy @pools = {} @pool_lock = Thread::Mutex.new + @pool_size = 1 @cert_files = Gem::Request.get_cert_files @headers = headers @@ -338,7 +339,7 @@ def proxy_for(proxy, uri) def pools_for(proxy) @pool_lock.synchronize do - @pools[proxy] ||= Gem::Request::ConnectionPools.new proxy, @cert_files + @pools[proxy] ||= Gem::Request::ConnectionPools.new proxy, @cert_files, @pool_size end end end diff --git a/lib/rubygems/request/connection_pools.rb b/lib/rubygems/request/connection_pools.rb index 6c1b04ab6567..01e7e0629a90 100644 --- a/lib/rubygems/request/connection_pools.rb +++ b/lib/rubygems/request/connection_pools.rb @@ -7,11 +7,12 @@ class << self attr_accessor :client end - def initialize(proxy_uri, cert_files) + def initialize(proxy_uri, cert_files, pool_size = 1) @proxy_uri = proxy_uri @cert_files = cert_files @pools = {} @pool_mutex = Thread::Mutex.new + @pool_size = pool_size end def pool_for(uri) @@ -20,9 +21,9 @@ def pool_for(uri) @pool_mutex.synchronize do @pools[key] ||= if https? uri - Gem::Request::HTTPSPool.new(http_args, @cert_files, @proxy_uri) + Gem::Request::HTTPSPool.new(http_args, @cert_files, @proxy_uri, @pool_size) else - Gem::Request::HTTPPool.new(http_args, @cert_files, @proxy_uri) + Gem::Request::HTTPPool.new(http_args, @cert_files, @proxy_uri, @pool_size) end end end diff --git a/lib/rubygems/request/http_pool.rb b/lib/rubygems/request/http_pool.rb index 52543de41fde..468502ca6b64 100644 --- a/lib/rubygems/request/http_pool.rb +++ b/lib/rubygems/request/http_pool.rb @@ -9,12 +9,14 @@ class Gem::Request::HTTPPool # :nodoc: attr_reader :cert_files, :proxy_uri - def initialize(http_args, cert_files, proxy_uri) + def initialize(http_args, cert_files, proxy_uri, pool_size) @http_args = http_args @cert_files = cert_files @proxy_uri = proxy_uri - @queue = Thread::SizedQueue.new 1 - @queue << nil + @pool_size = pool_size + + @queue = Thread::SizedQueue.new @pool_size + setup_queue end def checkout @@ -31,7 +33,8 @@ def close_all connection.finish end end - @queue.push(nil) + + setup_queue end private @@ -44,4 +47,8 @@ def setup_connection(connection) connection.start connection end + + def setup_queue + @pool_size.times { @queue.push(nil) } + end end diff --git a/test/rubygems/test_gem_request_connection_pools.rb b/test/rubygems/test_gem_request_connection_pools.rb index 966447bff641..2860deabf713 100644 --- a/test/rubygems/test_gem_request_connection_pools.rb +++ b/test/rubygems/test_gem_request_connection_pools.rb @@ -148,4 +148,16 @@ def test_thread_waits_for_connection end end.join end + + def test_checkouts_multiple_connections_from_the_pool + uri = Gem::URI.parse("http://example/some_endpoint") + pools = Gem::Request::ConnectionPools.new nil, [], 2 + pool = pools.pool_for uri + + pool.checkout + + Thread.new do + assert_not_nil(pool.checkout) + end.join + end end diff --git a/tool/bundler/test_gems.rb b/tool/bundler/test_gems.rb index 9776a96b90ed..ddc19e2939d4 100644 --- a/tool/bundler/test_gems.rb +++ b/tool/bundler/test_gems.rb @@ -11,6 +11,7 @@ gem "rb_sys" gem "fiddle" gem "rubygems-generate_index", "~> 1.1" +gem "concurrent-ruby" gem "psych" gem "etc", platforms: [:ruby, :windows] gem "open3" diff --git a/tool/bundler/test_gems.rb.lock b/tool/bundler/test_gems.rb.lock index ffcfb7a3e129..f7bf29ec781d 100644 --- a/tool/bundler/test_gems.rb.lock +++ b/tool/bundler/test_gems.rb.lock @@ -4,6 +4,7 @@ GEM base64 (0.3.0) builder (3.3.0) compact_index (0.15.0) + concurrent-ruby (1.3.5) date (3.5.0) date (3.5.0-java) etc (1.4.6) @@ -59,6 +60,7 @@ PLATFORMS DEPENDENCIES builder (~> 3.2) compact_index (~> 0.15.0) + concurrent-ruby etc fiddle open3 @@ -75,6 +77,7 @@ CHECKSUMS base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f compact_index (0.15.0) sha256=5c6c404afca8928a7d9f4dde9524f6e1610db17e675330803055db282da84a8b + concurrent-ruby (1.3.5) sha256=813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6 date (3.5.0) sha256=5e74fd6c04b0e65d97ad4f3bb5cb2d8efb37f386cc848f46310b4593ffc46ee5 date (3.5.0-java) sha256=d6876651299185b935e1b834a353e3a1d1db054be478967e8104e30a9a8f1127 etc (1.4.6) sha256=0f7e9e7842ea5e3c3bd9bc81746ebb8c65ea29e4c42a93520a0d638129c7de01 From 198b10c12d6f22f8b82f7159bf7a4d25cb78ec5b Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 18 Nov 2025 11:58:00 +0900 Subject: [PATCH 148/295] Downgrade net-http 0.7.0 because JRuby is not working --- lib/rubygems/vendor/net-http/lib/net/http.rb | 81 ++++++------------- .../net-http/lib/net/http/exceptions.rb | 3 +- .../net-http/lib/net/http/generic_request.rb | 11 +-- .../vendor/net-http/lib/net/http/header.rb | 12 +-- .../vendor/net-http/lib/net/http/requests.rb | 16 +--- .../vendor/net-http/lib/net/http/response.rb | 3 +- .../vendor/net-http/lib/net/http/responses.rb | 68 ---------------- ...ttp-v0.8.0.patch => net-http-v0.7.0.patch} | 0 tool/automatiek/vendor.rb | 2 +- tool/bundler/vendor_gems.rb | 2 +- tool/bundler/vendor_gems.rb.lock | 8 +- 11 files changed, 43 insertions(+), 163 deletions(-) rename tool/automatiek/{net-http-v0.8.0.patch => net-http-v0.7.0.patch} (100%) diff --git a/lib/rubygems/vendor/net-http/lib/net/http.rb b/lib/rubygems/vendor/net-http/lib/net/http.rb index 438f2977c9b9..b5b93befffd4 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http.rb @@ -724,7 +724,7 @@ class HTTPHeaderSyntaxError < StandardError; end class HTTP < Protocol # :stopdoc: - VERSION = "0.8.0" + VERSION = "0.7.0" HTTPVersion = '1.1' begin require 'zlib' @@ -1179,7 +1179,6 @@ def initialize(address, port = nil) # :nodoc: @debug_output = options[:debug_output] @response_body_encoding = options[:response_body_encoding] @ignore_eof = options[:ignore_eof] - @tcpsocket_supports_open_timeout = nil @proxy_from_env = false @proxy_uri = nil @@ -1322,9 +1321,6 @@ def response_body_encoding=(value) # Sets the proxy password; # see {Proxy Server}[rdoc-ref:Gem::Net::HTTP@Proxy+Server]. attr_writer :proxy_pass - - # Sets wheter the proxy uses SSL; - # see {Proxy Server}[rdoc-ref:Gem::Net::HTTP@Proxy+Server]. attr_writer :proxy_use_ssl # Returns the IP address for the connection. @@ -1636,21 +1632,6 @@ def start # :yield: http self end - # Finishes the \HTTP session: - # - # http = Gem::Net::HTTP.new(hostname) - # http.start - # http.started? # => true - # http.finish # => nil - # http.started? # => false - # - # Raises IOError if not in a session. - def finish - raise IOError, 'HTTP session not yet started' unless started? - do_finish - end - - # :stopdoc: def do_start connect @started = true @@ -1673,36 +1654,14 @@ def connect end debug "opening connection to #{conn_addr}:#{conn_port}..." - begin - s = - case @tcpsocket_supports_open_timeout - when nil, true - begin - # Use built-in timeout in TCPSocket.open if available - sock = TCPSocket.open(conn_addr, conn_port, @local_host, @local_port, open_timeout: @open_timeout) - @tcpsocket_supports_open_timeout = true - sock - rescue ArgumentError => e - raise if !(e.message.include?('unknown keyword: :open_timeout') || e.message.include?('wrong number of arguments (given 5, expected 2..4)')) - @tcpsocket_supports_open_timeout = false - - # Fallback to Gem::Timeout.timeout if TCPSocket.open does not support open_timeout - Gem::Timeout.timeout(@open_timeout, Gem::Net::OpenTimeout) { - TCPSocket.open(conn_addr, conn_port, @local_host, @local_port) - } - end - when false - # The current Ruby is known to not support TCPSocket(open_timeout:). - # Directly fall back to Gem::Timeout.timeout to avoid performance penalty incured by rescue. - Gem::Timeout.timeout(@open_timeout, Gem::Net::OpenTimeout) { - TCPSocket.open(conn_addr, conn_port, @local_host, @local_port) - } - end - rescue => e - e = Gem::Net::OpenTimeout.new(e) if e.is_a?(Errno::ETIMEDOUT) # for compatibility with previous versions - raise e, "Failed to open TCP connection to " + - "#{conn_addr}:#{conn_port} (#{e.message})" - end + s = Gem::Timeout.timeout(@open_timeout, Gem::Net::OpenTimeout) { + begin + TCPSocket.open(conn_addr, conn_port, @local_host, @local_port) + rescue => e + raise e, "Failed to open TCP connection to " + + "#{conn_addr}:#{conn_port} (#{e.message})" + end + } s.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) debug "opened" if use_ssl? @@ -1799,6 +1758,20 @@ def on_connect end private :on_connect + # Finishes the \HTTP session: + # + # http = Gem::Net::HTTP.new(hostname) + # http.start + # http.started? # => true + # http.finish # => nil + # http.started? # => false + # + # Raises IOError if not in a session. + def finish + raise IOError, 'HTTP session not yet started' unless started? + do_finish + end + def do_finish @started = false @socket.close if @socket @@ -1848,8 +1821,6 @@ def HTTP.Proxy(p_addr = :ENV, p_port = nil, p_user = nil, p_pass = nil, p_use_ss } end - # :startdoc: - class << HTTP # Returns true if self is a class which was created by HTTP::Proxy. def proxy_class? @@ -1944,7 +1915,6 @@ def proxy_pass alias proxyport proxy_port #:nodoc: obsolete private - # :stopdoc: def unescape(value) require 'cgi/escape' @@ -1973,7 +1943,6 @@ def edit_path(path) path end end - # :startdoc: # # HTTP operations @@ -2428,8 +2397,6 @@ def send_entity(path, data, initheader, dest, type, &block) res end - # :stopdoc: - IDEMPOTENT_METHODS_ = %w/GET HEAD PUT DELETE OPTIONS TRACE/ # :nodoc: def transport_request(req) @@ -2587,7 +2554,7 @@ def debug(msg) alias_method :D, :debug end - # for backward compatibility until Ruby 4.0 + # for backward compatibility until Ruby 3.5 # https://bugs.ruby-lang.org/issues/20900 # https://github.com/bblimke/webmock/pull/1081 HTTPSession = HTTP diff --git a/lib/rubygems/vendor/net-http/lib/net/http/exceptions.rb b/lib/rubygems/vendor/net-http/lib/net/http/exceptions.rb index 218df9a8bd15..c629c0113b1a 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/exceptions.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/exceptions.rb @@ -3,7 +3,7 @@ module Gem::Net # Gem::Net::HTTP exception class. # You cannot use Gem::Net::HTTPExceptions directly; instead, you must use # its subclasses. - module HTTPExceptions # :nodoc: + module HTTPExceptions def initialize(msg, res) #:nodoc: super msg @response = res @@ -12,7 +12,6 @@ def initialize(msg, res) #:nodoc: alias data response #:nodoc: obsolete end - # :stopdoc: class HTTPError < ProtocolError include HTTPExceptions end diff --git a/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb b/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb index d6496d4ac191..0737b3f02afa 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/generic_request.rb @@ -19,13 +19,16 @@ def initialize(m, reqbody, resbody, uri_or_path, initheader = nil) # :nodoc: if Gem::URI === uri_or_path then raise ArgumentError, "not an HTTP Gem::URI" unless Gem::URI::HTTP === uri_or_path - hostname = uri_or_path.host + hostname = uri_or_path.hostname raise ArgumentError, "no host component for Gem::URI" unless (hostname && hostname.length > 0) @uri = uri_or_path.dup + host = @uri.hostname.dup + host << ":" << @uri.port.to_s if @uri.port != @uri.default_port @path = uri_or_path.request_uri raise ArgumentError, "no HTTP request path given" unless @path else @uri = nil + host = nil raise ArgumentError, "no HTTP request path given" unless uri_or_path raise ArgumentError, "HTTP request path is empty" if uri_or_path.empty? @path = uri_or_path.dup @@ -48,7 +51,7 @@ def initialize(m, reqbody, resbody, uri_or_path, initheader = nil) # :nodoc: initialize_http_header initheader self['Accept'] ||= '*/*' self['User-Agent'] ||= 'Ruby' - self['Host'] ||= @uri.authority if @uri + self['Host'] ||= host if host @body = nil @body_stream = nil @body_data = nil @@ -242,7 +245,7 @@ def update_uri(addr, port, ssl) # :nodoc: internal use only end if host = self['host'] - host = Gem::URI.parse("//#{host}").host # Remove a port component from the existing Host header + host.sub!(/:.*/m, '') elsif host = @uri.host else host = addr @@ -261,8 +264,6 @@ def update_uri(addr, port, ssl) # :nodoc: internal use only private - # :stopdoc: - class Chunker #:nodoc: def initialize(sock) @sock = sock diff --git a/lib/rubygems/vendor/net-http/lib/net/http/header.rb b/lib/rubygems/vendor/net-http/lib/net/http/header.rb index bc68cd2eefb1..5cb1da01ec07 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/header.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/header.rb @@ -179,9 +179,7 @@ # - #each_value: Passes each string field value to the block. # module Gem::Net::HTTPHeader - # The maximum length of HTTP header keys. MAX_KEY_LENGTH = 1024 - # The maximum length of HTTP header values. MAX_FIELD_LENGTH = 65536 def initialize_http_header(initheader) #:nodoc: @@ -269,7 +267,6 @@ def add_field(key, val) end end - # :stopdoc: private def set_field(key, val) case val when Enumerable @@ -297,7 +294,6 @@ def add_field(key, val) ary.push val end end - # :startdoc: # Returns the array field value for the given +key+, # or +nil+ if there is no such field; @@ -494,7 +490,7 @@ def each_capitalized alias canonical_each each_capitalized - def capitalize(name) # :nodoc: + def capitalize(name) name.to_s.split('-'.freeze).map {|s| s.capitalize }.join('-'.freeze) end private :capitalize @@ -961,12 +957,12 @@ def proxy_basic_auth(account, password) @header['proxy-authorization'] = [basic_encode(account, password)] end - def basic_encode(account, password) # :nodoc: + def basic_encode(account, password) 'Basic ' + ["#{account}:#{password}"].pack('m0') end private :basic_encode - # Returns whether the HTTP session is to be closed. +# Returns whether the HTTP session is to be closed. def connection_close? token = /(?:\A|,)\s*close\s*(?:\z|,)/i @header['connection']&.grep(token) {return true} @@ -974,7 +970,7 @@ def connection_close? false end - # Returns whether the HTTP session is to be kept alive. +# Returns whether the HTTP session is to be kept alive. def connection_keep_alive? token = /(?:\A|,)\s*keep-alive\s*(?:\z|,)/i @header['connection']&.grep(token) {return true} diff --git a/lib/rubygems/vendor/net-http/lib/net/http/requests.rb b/lib/rubygems/vendor/net-http/lib/net/http/requests.rb index f990761042da..45727e7f61fc 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/requests.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/requests.rb @@ -29,7 +29,6 @@ # - Gem::Net::HTTP#get: sends +GET+ request, returns response object. # class Gem::Net::HTTP::Get < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'GET' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -61,7 +60,6 @@ class Gem::Net::HTTP::Get < Gem::Net::HTTPRequest # - Gem::Net::HTTP#head: sends +HEAD+ request, returns response object. # class Gem::Net::HTTP::Head < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'HEAD' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = false @@ -97,7 +95,6 @@ class Gem::Net::HTTP::Head < Gem::Net::HTTPRequest # - Gem::Net::HTTP#post: sends +POST+ request, returns response object. # class Gem::Net::HTTP::Post < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'POST' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -133,7 +130,6 @@ class Gem::Net::HTTP::Post < Gem::Net::HTTPRequest # - Gem::Net::HTTP#put: sends +PUT+ request, returns response object. # class Gem::Net::HTTP::Put < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'PUT' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -166,7 +162,6 @@ class Gem::Net::HTTP::Put < Gem::Net::HTTPRequest # - Gem::Net::HTTP#delete: sends +DELETE+ request, returns response object. # class Gem::Net::HTTP::Delete < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'DELETE' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -198,7 +193,6 @@ class Gem::Net::HTTP::Delete < Gem::Net::HTTPRequest # - Gem::Net::HTTP#options: sends +OPTIONS+ request, returns response object. # class Gem::Net::HTTP::Options < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'OPTIONS' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -230,7 +224,6 @@ class Gem::Net::HTTP::Options < Gem::Net::HTTPRequest # - Gem::Net::HTTP#trace: sends +TRACE+ request, returns response object. # class Gem::Net::HTTP::Trace < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'TRACE' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -265,7 +258,6 @@ class Gem::Net::HTTP::Trace < Gem::Net::HTTPRequest # - Gem::Net::HTTP#patch: sends +PATCH+ request, returns response object. # class Gem::Net::HTTP::Patch < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'PATCH' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -293,7 +285,6 @@ class Gem::Net::HTTP::Patch < Gem::Net::HTTPRequest # - Gem::Net::HTTP#propfind: sends +PROPFIND+ request, returns response object. # class Gem::Net::HTTP::Propfind < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'PROPFIND' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -317,7 +308,6 @@ class Gem::Net::HTTP::Propfind < Gem::Net::HTTPRequest # - Gem::Net::HTTP#proppatch: sends +PROPPATCH+ request, returns response object. # class Gem::Net::HTTP::Proppatch < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'PROPPATCH' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -341,7 +331,6 @@ class Gem::Net::HTTP::Proppatch < Gem::Net::HTTPRequest # - Gem::Net::HTTP#mkcol: sends +MKCOL+ request, returns response object. # class Gem::Net::HTTP::Mkcol < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'MKCOL' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -365,7 +354,6 @@ class Gem::Net::HTTP::Mkcol < Gem::Net::HTTPRequest # - Gem::Net::HTTP#copy: sends +COPY+ request, returns response object. # class Gem::Net::HTTP::Copy < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'COPY' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -389,7 +377,6 @@ class Gem::Net::HTTP::Copy < Gem::Net::HTTPRequest # - Gem::Net::HTTP#move: sends +MOVE+ request, returns response object. # class Gem::Net::HTTP::Move < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'MOVE' REQUEST_HAS_BODY = false RESPONSE_HAS_BODY = true @@ -413,7 +400,6 @@ class Gem::Net::HTTP::Move < Gem::Net::HTTPRequest # - Gem::Net::HTTP#lock: sends +LOCK+ request, returns response object. # class Gem::Net::HTTP::Lock < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'LOCK' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true @@ -437,8 +423,8 @@ class Gem::Net::HTTP::Lock < Gem::Net::HTTPRequest # - Gem::Net::HTTP#unlock: sends +UNLOCK+ request, returns response object. # class Gem::Net::HTTP::Unlock < Gem::Net::HTTPRequest - # :stopdoc: METHOD = 'UNLOCK' REQUEST_HAS_BODY = true RESPONSE_HAS_BODY = true end + diff --git a/lib/rubygems/vendor/net-http/lib/net/http/response.rb b/lib/rubygems/vendor/net-http/lib/net/http/response.rb index dc164f150448..cbbd191d879b 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/response.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/response.rb @@ -153,7 +153,6 @@ def read_new(sock) #:nodoc: internal use only end private - # :stopdoc: def read_status_line(sock) str = sock.readline @@ -260,7 +259,7 @@ def body_encoding=(value) # header. attr_accessor :ignore_eof - def inspect # :nodoc: + def inspect "#<#{self.class} #{@code} #{@message} readbody=#{@read}>" end diff --git a/lib/rubygems/vendor/net-http/lib/net/http/responses.rb b/lib/rubygems/vendor/net-http/lib/net/http/responses.rb index 62ce1cba1b29..32738adc1442 100644 --- a/lib/rubygems/vendor/net-http/lib/net/http/responses.rb +++ b/lib/rubygems/vendor/net-http/lib/net/http/responses.rb @@ -4,9 +4,7 @@ module Gem::Net - # Unknown HTTP response class HTTPUnknownResponse < HTTPResponse - # :stopdoc: HAS_BODY = true EXCEPTION_TYPE = HTTPError # end @@ -21,7 +19,6 @@ class HTTPUnknownResponse < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#1xx_informational_response]. # class HTTPInformation < HTTPResponse - # :stopdoc: HAS_BODY = false EXCEPTION_TYPE = HTTPError # end @@ -37,7 +34,6 @@ class HTTPInformation < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#2xx_success]. # class HTTPSuccess < HTTPResponse - # :stopdoc: HAS_BODY = true EXCEPTION_TYPE = HTTPError # end @@ -53,7 +49,6 @@ class HTTPSuccess < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_redirection]. # class HTTPRedirection < HTTPResponse - # :stopdoc: HAS_BODY = true EXCEPTION_TYPE = HTTPRetriableError # end @@ -68,7 +63,6 @@ class HTTPRedirection < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_client_errors]. # class HTTPClientError < HTTPResponse - # :stopdoc: HAS_BODY = true EXCEPTION_TYPE = HTTPClientException # end @@ -83,7 +77,6 @@ class HTTPClientError < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_server_errors]. # class HTTPServerError < HTTPResponse - # :stopdoc: HAS_BODY = true EXCEPTION_TYPE = HTTPFatalError # end @@ -101,7 +94,6 @@ class HTTPServerError < HTTPResponse # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#100]. # class HTTPContinue < HTTPInformation - # :stopdoc: HAS_BODY = false end @@ -119,7 +111,6 @@ class HTTPContinue < HTTPInformation # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#101]. # class HTTPSwitchProtocol < HTTPInformation - # :stopdoc: HAS_BODY = false end @@ -136,7 +127,6 @@ class HTTPSwitchProtocol < HTTPInformation # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#102]. # class HTTPProcessing < HTTPInformation - # :stopdoc: HAS_BODY = false end @@ -155,7 +145,6 @@ class HTTPProcessing < HTTPInformation # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#103]. # class HTTPEarlyHints < HTTPInformation - # :stopdoc: HAS_BODY = false end @@ -173,7 +162,6 @@ class HTTPEarlyHints < HTTPInformation # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#200]. # class HTTPOK < HTTPSuccess - # :stopdoc: HAS_BODY = true end @@ -191,7 +179,6 @@ class HTTPOK < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#201]. # class HTTPCreated < HTTPSuccess - # :stopdoc: HAS_BODY = true end @@ -209,7 +196,6 @@ class HTTPCreated < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#202]. # class HTTPAccepted < HTTPSuccess - # :stopdoc: HAS_BODY = true end @@ -229,7 +215,6 @@ class HTTPAccepted < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#203]. # class HTTPNonAuthoritativeInformation < HTTPSuccess - # :stopdoc: HAS_BODY = true end @@ -247,7 +232,6 @@ class HTTPNonAuthoritativeInformation < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#204]. # class HTTPNoContent < HTTPSuccess - # :stopdoc: HAS_BODY = false end @@ -266,7 +250,6 @@ class HTTPNoContent < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#205]. # class HTTPResetContent < HTTPSuccess - # :stopdoc: HAS_BODY = false end @@ -285,7 +268,6 @@ class HTTPResetContent < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#206]. # class HTTPPartialContent < HTTPSuccess - # :stopdoc: HAS_BODY = true end @@ -303,7 +285,6 @@ class HTTPPartialContent < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#207]. # class HTTPMultiStatus < HTTPSuccess - # :stopdoc: HAS_BODY = true end @@ -323,7 +304,6 @@ class HTTPMultiStatus < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#208]. # class HTTPAlreadyReported < HTTPSuccess - # :stopdoc: HAS_BODY = true end @@ -341,7 +321,6 @@ class HTTPAlreadyReported < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#226]. # class HTTPIMUsed < HTTPSuccess - # :stopdoc: HAS_BODY = true end @@ -359,7 +338,6 @@ class HTTPIMUsed < HTTPSuccess # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#300]. # class HTTPMultipleChoices < HTTPRedirection - # :stopdoc: HAS_BODY = true end HTTPMultipleChoice = HTTPMultipleChoices @@ -378,7 +356,6 @@ class HTTPMultipleChoices < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#301]. # class HTTPMovedPermanently < HTTPRedirection - # :stopdoc: HAS_BODY = true end @@ -396,7 +373,6 @@ class HTTPMovedPermanently < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#302]. # class HTTPFound < HTTPRedirection - # :stopdoc: HAS_BODY = true end HTTPMovedTemporarily = HTTPFound @@ -414,7 +390,6 @@ class HTTPFound < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#303]. # class HTTPSeeOther < HTTPRedirection - # :stopdoc: HAS_BODY = true end @@ -432,7 +407,6 @@ class HTTPSeeOther < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#304]. # class HTTPNotModified < HTTPRedirection - # :stopdoc: HAS_BODY = false end @@ -449,7 +423,6 @@ class HTTPNotModified < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#305]. # class HTTPUseProxy < HTTPRedirection - # :stopdoc: HAS_BODY = false end @@ -467,7 +440,6 @@ class HTTPUseProxy < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#307]. # class HTTPTemporaryRedirect < HTTPRedirection - # :stopdoc: HAS_BODY = true end @@ -484,7 +456,6 @@ class HTTPTemporaryRedirect < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#308]. # class HTTPPermanentRedirect < HTTPRedirection - # :stopdoc: HAS_BODY = true end @@ -501,7 +472,6 @@ class HTTPPermanentRedirect < HTTPRedirection # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#400]. # class HTTPBadRequest < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -518,7 +488,6 @@ class HTTPBadRequest < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#401]. # class HTTPUnauthorized < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -535,7 +504,6 @@ class HTTPUnauthorized < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#402]. # class HTTPPaymentRequired < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -553,7 +521,6 @@ class HTTPPaymentRequired < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#403]. # class HTTPForbidden < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -570,7 +537,6 @@ class HTTPForbidden < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#404]. # class HTTPNotFound < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -587,7 +553,6 @@ class HTTPNotFound < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#405]. # class HTTPMethodNotAllowed < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -605,7 +570,6 @@ class HTTPMethodNotAllowed < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#406]. # class HTTPNotAcceptable < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -622,7 +586,6 @@ class HTTPNotAcceptable < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#407]. # class HTTPProxyAuthenticationRequired < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -639,7 +602,6 @@ class HTTPProxyAuthenticationRequired < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#408]. # class HTTPRequestTimeout < HTTPClientError - # :stopdoc: HAS_BODY = true end HTTPRequestTimeOut = HTTPRequestTimeout @@ -657,7 +619,6 @@ class HTTPRequestTimeout < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#409]. # class HTTPConflict < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -675,7 +636,6 @@ class HTTPConflict < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#410]. # class HTTPGone < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -693,7 +653,6 @@ class HTTPGone < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#411]. # class HTTPLengthRequired < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -711,7 +670,6 @@ class HTTPLengthRequired < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#412]. # class HTTPPreconditionFailed < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -728,7 +686,6 @@ class HTTPPreconditionFailed < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#413]. # class HTTPPayloadTooLarge < HTTPClientError - # :stopdoc: HAS_BODY = true end HTTPRequestEntityTooLarge = HTTPPayloadTooLarge @@ -746,7 +703,6 @@ class HTTPPayloadTooLarge < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#414]. # class HTTPURITooLong < HTTPClientError - # :stopdoc: HAS_BODY = true end HTTPRequestURITooLong = HTTPURITooLong @@ -765,7 +721,6 @@ class HTTPURITooLong < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#415]. # class HTTPUnsupportedMediaType < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -782,7 +737,6 @@ class HTTPUnsupportedMediaType < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#416]. # class HTTPRangeNotSatisfiable < HTTPClientError - # :stopdoc: HAS_BODY = true end HTTPRequestedRangeNotSatisfiable = HTTPRangeNotSatisfiable @@ -800,7 +754,6 @@ class HTTPRangeNotSatisfiable < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#417]. # class HTTPExpectationFailed < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -821,7 +774,6 @@ class HTTPExpectationFailed < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#421]. # class HTTPMisdirectedRequest < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -838,7 +790,6 @@ class HTTPMisdirectedRequest < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#422]. # class HTTPUnprocessableEntity < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -854,7 +805,6 @@ class HTTPUnprocessableEntity < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#423]. # class HTTPLocked < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -871,7 +821,6 @@ class HTTPLocked < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#424]. # class HTTPFailedDependency < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -891,7 +840,6 @@ class HTTPFailedDependency < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#426]. # class HTTPUpgradeRequired < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -908,7 +856,6 @@ class HTTPUpgradeRequired < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#428]. # class HTTPPreconditionRequired < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -925,7 +872,6 @@ class HTTPPreconditionRequired < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#429]. # class HTTPTooManyRequests < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -943,7 +889,6 @@ class HTTPTooManyRequests < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#431]. # class HTTPRequestHeaderFieldsTooLarge < HTTPClientError - # :stopdoc: HAS_BODY = true end @@ -961,7 +906,6 @@ class HTTPRequestHeaderFieldsTooLarge < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#451]. # class HTTPUnavailableForLegalReasons < HTTPClientError - # :stopdoc: HAS_BODY = true end # 444 No Response - Nginx @@ -982,7 +926,6 @@ class HTTPUnavailableForLegalReasons < HTTPClientError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#500]. # class HTTPInternalServerError < HTTPServerError - # :stopdoc: HAS_BODY = true end @@ -1000,7 +943,6 @@ class HTTPInternalServerError < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#501]. # class HTTPNotImplemented < HTTPServerError - # :stopdoc: HAS_BODY = true end @@ -1018,7 +960,6 @@ class HTTPNotImplemented < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#502]. # class HTTPBadGateway < HTTPServerError - # :stopdoc: HAS_BODY = true end @@ -1036,7 +977,6 @@ class HTTPBadGateway < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#503]. # class HTTPServiceUnavailable < HTTPServerError - # :stopdoc: HAS_BODY = true end @@ -1054,7 +994,6 @@ class HTTPServiceUnavailable < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#504]. # class HTTPGatewayTimeout < HTTPServerError - # :stopdoc: HAS_BODY = true end HTTPGatewayTimeOut = HTTPGatewayTimeout @@ -1072,7 +1011,6 @@ class HTTPGatewayTimeout < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#505]. # class HTTPVersionNotSupported < HTTPServerError - # :stopdoc: HAS_BODY = true end @@ -1089,7 +1027,6 @@ class HTTPVersionNotSupported < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#506]. # class HTTPVariantAlsoNegotiates < HTTPServerError - # :stopdoc: HAS_BODY = true end @@ -1106,7 +1043,6 @@ class HTTPVariantAlsoNegotiates < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#507]. # class HTTPInsufficientStorage < HTTPServerError - # :stopdoc: HAS_BODY = true end @@ -1123,7 +1059,6 @@ class HTTPInsufficientStorage < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#508]. # class HTTPLoopDetected < HTTPServerError - # :stopdoc: HAS_BODY = true end # 509 Bandwidth Limit Exceeded - Apache bw/limited extension @@ -1141,7 +1076,6 @@ class HTTPLoopDetected < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#510]. # class HTTPNotExtended < HTTPServerError - # :stopdoc: HAS_BODY = true end @@ -1158,14 +1092,12 @@ class HTTPNotExtended < HTTPServerError # - {Wikipedia}[https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#511]. # class HTTPNetworkAuthenticationRequired < HTTPServerError - # :stopdoc: HAS_BODY = true end end class Gem::Net::HTTPResponse - # :stopdoc: CODE_CLASS_TO_OBJ = { '1' => Gem::Net::HTTPInformation, '2' => Gem::Net::HTTPSuccess, diff --git a/tool/automatiek/net-http-v0.8.0.patch b/tool/automatiek/net-http-v0.7.0.patch similarity index 100% rename from tool/automatiek/net-http-v0.8.0.patch rename to tool/automatiek/net-http-v0.7.0.patch diff --git a/tool/automatiek/vendor.rb b/tool/automatiek/vendor.rb index e7cf16ebd9a8..0e0fca5edf63 100755 --- a/tool/automatiek/vendor.rb +++ b/tool/automatiek/vendor.rb @@ -81,7 +81,7 @@ def require_target vendored_gems = [ # RubyGems VendoredGem.new(name: "molinillo", namespace: "Molinillo", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/molinillo", license_path: "LICENSE", extra_dependencies: %w[tsort/lib/rubygems/vendor/tsort], patch_name: "molinillo-master.patch"), - VendoredGem.new(name: "net-http", namespace: "Net", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/net-http", license_path: "COPYING", extra_dependencies: %w[net-protocol resolv timeout uri/lib/rubygems/vendor/uri], skip_dependencies: %w[uri], patch_name: "net-http-v0.8.0.patch"), + VendoredGem.new(name: "net-http", namespace: "Net", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/net-http", license_path: "COPYING", extra_dependencies: %w[net-protocol resolv timeout uri/lib/rubygems/vendor/uri], skip_dependencies: %w[uri], patch_name: "net-http-v0.7.0.patch"), VendoredGem.new(name: "net-http-persistent", namespace: "Net::HTTP::Persistent", prefix: "Gem", vendor_lib: "bundler/lib/bundler/vendor/net-http-persistent", license_path: "README.rdoc", extra_dependencies: %w[net-http uri/lib/rubygems/vendor/uri], patch_name: "net-http-persistent-v4.0.6.patch"), VendoredGem.new(name: "net-protocol", namespace: "Net", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/net-protocol", license_path: "LICENSE.txt"), VendoredGem.new(name: "optparse", namespace: "OptionParser", prefix: "Gem", vendor_lib: "lib/rubygems/vendor/optparse", license_path: "COPYING", extra_dependencies: %w[uri/lib/rubygems/vendor/uri], patch_name: "optparse-v0.8.0.patch"), diff --git a/tool/bundler/vendor_gems.rb b/tool/bundler/vendor_gems.rb index 589eab31fc11..8d12c5addeb2 100644 --- a/tool/bundler/vendor_gems.rb +++ b/tool/bundler/vendor_gems.rb @@ -4,7 +4,7 @@ gem "fileutils", "1.8.0" gem "molinillo", github: "cocoapods/molinillo", ref: "1d62d7d5f448e79418716dc779a4909509ccda2a" -gem "net-http", "0.8.0" +gem "net-http", "0.7.0" # net-http-0.8.0 is broken with JRuby gem "net-http-persistent", "4.0.6" gem "net-protocol", "0.2.2" gem "optparse", "0.8.0" diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index 6bf917629e3e..cc7886e60b60 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -17,8 +17,8 @@ GEM specs: connection_pool (2.5.4) fileutils (1.8.0) - net-http (0.8.0) - uri (>= 0.11.1) + net-http (0.7.0) + uri net-http-persistent (4.0.6) connection_pool (~> 2.2, >= 2.2.4) net-protocol (0.2.2) @@ -43,7 +43,7 @@ PLATFORMS DEPENDENCIES fileutils (= 1.8.0) molinillo! - net-http (= 0.8.0) + net-http (= 0.7.0) net-http-persistent (= 4.0.6) net-protocol (= 0.2.2) optparse (= 0.8.0) @@ -59,7 +59,7 @@ CHECKSUMS connection_pool (2.5.4) sha256=e9e1922327416091f3f6542f5f4446c2a20745276b9aa796dd0bb2fd0ea1e70a fileutils (1.8.0) sha256=8c6b1df54e2540bdb2f39258f08af78853aa70bad52b4d394bbc6424593c6e02 molinillo (0.8.0) - net-http (0.8.0) sha256=df42c47ce9f9e95ad32a317c97c12f945bc1af365288837ea4ff259876ecb46d + net-http (0.7.0) sha256=4db7d9f558f8ffd4dcf832d0aefd02320c569c7d4f857def49e585069673a425 net-http-persistent (4.0.6) sha256=2abb3a04438edf6cb9e0e7e505969605f709eda3e3c5211beadd621a2c84dd5d net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8 optparse (0.8.0) sha256=ef6b7fbaf7ec331474f325bc08dd5622e6e1e651007a5341330ee4b08ce734f0 From 959bea150653bdf151a2d686a4a9e5458ebf1f73 Mon Sep 17 00:00:00 2001 From: Austin Pray Date: Sun, 26 Jul 2020 16:45:41 -0500 Subject: [PATCH 149/295] use DidYouMean::SpellChecker for gem suggestions replaces Bundler::SimilarityDetector with DidYouMean::SpellChecker --- bundler/lib/bundler/cli/common.rb | 24 ++++++++++++++++++---- bundler/lib/bundler/similarity_detector.rb | 3 +++ bundler/spec/bundler/cli_common_spec.rb | 18 ++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 bundler/spec/bundler/cli_common_spec.rb diff --git a/bundler/lib/bundler/cli/common.rb b/bundler/lib/bundler/cli/common.rb index 7608adf2ef9e..a756e8eed3cc 100644 --- a/bundler/lib/bundler/cli/common.rb +++ b/bundler/lib/bundler/cli/common.rb @@ -94,11 +94,11 @@ def self.ask_for_spec_from(specs) end def self.gem_not_found_message(missing_gem_name, alternatives) - require_relative "../similarity_detector" + require "did_you_mean/spell_checker" message = "Could not find gem '#{missing_gem_name}'." - alternate_names = alternatives.map {|a| a.respond_to?(:name) ? a.name : a } - suggestions = SimilarityDetector.new(alternate_names).similar_word_list(missing_gem_name) - message += "\nDid you mean #{suggestions}?" if suggestions + alternate_names = alternatives.map { |a| a.respond_to?(:name) ? a.name : a } + suggestions = DidYouMean::SpellChecker.new(dictionary: alternate_names).correct(missing_gem_name) + message += "\nDid you mean #{word_list(suggestions)}?" unless suggestions.empty? message end @@ -134,5 +134,21 @@ def self.clean_after_install? clean &&= !Bundler.use_system_gems? clean end + + protected + + def self.word_list(words) + if words.empty? + return '' + end + + words = words.map { |word| "'#{word}'" } + + if words.length == 1 + return words[0] + end + + [words[0..-2].join(", "), words[-1]].join(" or ") + end end end diff --git a/bundler/lib/bundler/similarity_detector.rb b/bundler/lib/bundler/similarity_detector.rb index 50e66b9cab20..1f4e61e940b3 100644 --- a/bundler/lib/bundler/similarity_detector.rb +++ b/bundler/lib/bundler/similarity_detector.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true +# This module is not used anywhere in Bundler +# It is included for backwards compatibility in-case someone is relying on it + module Bundler class SimilarityDetector SimilarityScore = Struct.new(:string, :distance) diff --git a/bundler/spec/bundler/cli_common_spec.rb b/bundler/spec/bundler/cli_common_spec.rb new file mode 100644 index 000000000000..de29d732658c --- /dev/null +++ b/bundler/spec/bundler/cli_common_spec.rb @@ -0,0 +1,18 @@ +require 'bundler/cli' + +RSpec.describe Bundler::CLI::Common do + describe 'gem_not_found_message' do + it 'should suggest alternate gem names' do + message = subject.gem_not_found_message('ralis', ['BOGUS']) + expect(message).to match("Could not find gem 'ralis'.$") + message = subject.gem_not_found_message("ralis", ["rails"]) + expect(message).to match("Did you mean 'rails'?") + message = subject.gem_not_found_message("meail", %w[email fail eval]) + expect(message).to match("Did you mean 'email'?") + message = subject.gem_not_found_message("nokogri", %w[nokogiri rails sidekiq dog]) + expect(message).to match("Did you mean 'nokogiri'?") + message = subject.gem_not_found_message("methosd", %w[method methods bogus]) + expect(message).to match("Did you mean 'methods' or 'method'?") + end + end +end \ No newline at end of file From a6bc30a827abf5b15e1aa6a73f628f559d7ff4d8 Mon Sep 17 00:00:00 2001 From: Austin Pray Date: Sun, 26 Jul 2020 17:35:02 -0500 Subject: [PATCH 150/295] Rubocop --- bundler/lib/bundler/cli/common.rb | 10 +++++----- bundler/spec/bundler/cli_common_spec.rb | 12 +++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/bundler/lib/bundler/cli/common.rb b/bundler/lib/bundler/cli/common.rb index a756e8eed3cc..c0eefadf510b 100644 --- a/bundler/lib/bundler/cli/common.rb +++ b/bundler/lib/bundler/cli/common.rb @@ -96,8 +96,8 @@ def self.ask_for_spec_from(specs) def self.gem_not_found_message(missing_gem_name, alternatives) require "did_you_mean/spell_checker" message = "Could not find gem '#{missing_gem_name}'." - alternate_names = alternatives.map { |a| a.respond_to?(:name) ? a.name : a } - suggestions = DidYouMean::SpellChecker.new(dictionary: alternate_names).correct(missing_gem_name) + alternate_names = alternatives.map {|a| a.respond_to?(:name) ? a.name : a } + suggestions = DidYouMean::SpellChecker.new(:dictionary => alternate_names).correct(missing_gem_name) message += "\nDid you mean #{word_list(suggestions)}?" unless suggestions.empty? message end @@ -135,14 +135,14 @@ def self.clean_after_install? clean end - protected + protected def self.word_list(words) if words.empty? - return '' + return "" end - words = words.map { |word| "'#{word}'" } + words = words.map {|word| "'#{word}'" } if words.length == 1 return words[0] diff --git a/bundler/spec/bundler/cli_common_spec.rb b/bundler/spec/bundler/cli_common_spec.rb index de29d732658c..ab7d69b969bc 100644 --- a/bundler/spec/bundler/cli_common_spec.rb +++ b/bundler/spec/bundler/cli_common_spec.rb @@ -1,9 +1,11 @@ -require 'bundler/cli' +# frozen_string_literal: true + +require "bundler/cli" RSpec.describe Bundler::CLI::Common do - describe 'gem_not_found_message' do - it 'should suggest alternate gem names' do - message = subject.gem_not_found_message('ralis', ['BOGUS']) + describe "gem_not_found_message" do + it "should suggest alternate gem names" do + message = subject.gem_not_found_message("ralis", ["BOGUS"]) expect(message).to match("Could not find gem 'ralis'.$") message = subject.gem_not_found_message("ralis", ["rails"]) expect(message).to match("Did you mean 'rails'?") @@ -15,4 +17,4 @@ expect(message).to match("Did you mean 'methods' or 'method'?") end end -end \ No newline at end of file +end From a02353fb96e7acd27686d9b174706b4da0149da2 Mon Sep 17 00:00:00 2001 From: Austin Pray Date: Sat, 1 Aug 2020 20:30:32 -0500 Subject: [PATCH 151/295] Progressively enhance if DidYouMean is available --- bundler/lib/bundler/cli/common.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bundler/lib/bundler/cli/common.rb b/bundler/lib/bundler/cli/common.rb index c0eefadf510b..b410ba9d26a5 100644 --- a/bundler/lib/bundler/cli/common.rb +++ b/bundler/lib/bundler/cli/common.rb @@ -94,11 +94,12 @@ def self.ask_for_spec_from(specs) end def self.gem_not_found_message(missing_gem_name, alternatives) - require "did_you_mean/spell_checker" message = "Could not find gem '#{missing_gem_name}'." - alternate_names = alternatives.map {|a| a.respond_to?(:name) ? a.name : a } - suggestions = DidYouMean::SpellChecker.new(:dictionary => alternate_names).correct(missing_gem_name) - message += "\nDid you mean #{word_list(suggestions)}?" unless suggestions.empty? + if defined?(DidYouMean::SpellChecker) + alternate_names = alternatives.map {|a| a.respond_to?(:name) ? a.name : a } + suggestions = DidYouMean::SpellChecker.new(:dictionary => alternate_names).correct(missing_gem_name) + message += "\nDid you mean #{word_list(suggestions)}?" unless suggestions.empty? + end message end From 1dc669a0abf79752daab7530d2299afb36265e60 Mon Sep 17 00:00:00 2001 From: Austin Pray Date: Sat, 1 Aug 2020 21:53:48 -0500 Subject: [PATCH 152/295] fix tests --- bundler/lib/bundler/cli/common.rb | 6 ++++-- bundler/spec/bundler/cli_common_spec.rb | 2 ++ bundler/spec/commands/update_spec.rb | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/bundler/lib/bundler/cli/common.rb b/bundler/lib/bundler/cli/common.rb index b410ba9d26a5..7de6fb7fdb23 100644 --- a/bundler/lib/bundler/cli/common.rb +++ b/bundler/lib/bundler/cli/common.rb @@ -95,8 +95,10 @@ def self.ask_for_spec_from(specs) def self.gem_not_found_message(missing_gem_name, alternatives) message = "Could not find gem '#{missing_gem_name}'." - if defined?(DidYouMean::SpellChecker) - alternate_names = alternatives.map {|a| a.respond_to?(:name) ? a.name : a } + alternate_names = alternatives.map {|a| a.respond_to?(:name) ? a.name : a } + if alternate_names.include?(missing_gem_name.downcase) + message += "\nDid you mean '#{missing_gem_name.downcase}'?" + elsif defined?(DidYouMean::SpellChecker) suggestions = DidYouMean::SpellChecker.new(:dictionary => alternate_names).correct(missing_gem_name) message += "\nDid you mean #{word_list(suggestions)}?" unless suggestions.empty? end diff --git a/bundler/spec/bundler/cli_common_spec.rb b/bundler/spec/bundler/cli_common_spec.rb index ab7d69b969bc..37a92c20e646 100644 --- a/bundler/spec/bundler/cli_common_spec.rb +++ b/bundler/spec/bundler/cli_common_spec.rb @@ -9,6 +9,8 @@ expect(message).to match("Could not find gem 'ralis'.$") message = subject.gem_not_found_message("ralis", ["rails"]) expect(message).to match("Did you mean 'rails'?") + message = subject.gem_not_found_message("Rails", ["rails"]) + expect(message).to match("Did you mean 'rails'?") message = subject.gem_not_found_message("meail", %w[email fail eval]) expect(message).to match("Did you mean 'email'?") message = subject.gem_not_found_message("nokogri", %w[nokogiri rails sidekiq dog]) diff --git a/bundler/spec/commands/update_spec.rb b/bundler/spec/commands/update_spec.rb index 92b9e4df0a6b..61d8ece2798a 100644 --- a/bundler/spec/commands/update_spec.rb +++ b/bundler/spec/commands/update_spec.rb @@ -193,7 +193,7 @@ end it "should suggest alternatives" do bundle "update platformspecific", raise_on_error: false - expect(err).to include "Did you mean platform_specific?" + expect(err).to include "Did you mean 'platform_specific'?" end end From 210fa87f65f3f3789cd84ddd8082a3e4c2ac0b17 Mon Sep 17 00:00:00 2001 From: Austin Pray Date: Sat, 1 Aug 2020 22:14:43 -0500 Subject: [PATCH 153/295] More tests --- bundler/spec/commands/open_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/spec/commands/open_spec.rb b/bundler/spec/commands/open_spec.rb index e0c79aa407a3..72038152f4f0 100644 --- a/bundler/spec/commands/open_spec.rb +++ b/bundler/spec/commands/open_spec.rb @@ -49,7 +49,7 @@ it "suggests alternatives for similar-sounding gems" do bundle "open Rails", env: { "EDITOR" => "echo editor", "VISUAL" => "", "BUNDLER_EDITOR" => "" }, raise_on_error: false - expect(err).to match(/did you mean rails\?/i) + expect(err).to match(/did you mean 'rails'\?/i) end it "opens the gem with short words" do From 40ace48651119f7a3e74f7f40f52ff96148109ac Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 18 Nov 2025 14:43:44 +0900 Subject: [PATCH 154/295] Removed unused SimilarityDetector --- Manifest.txt | 1 - bundler/lib/bundler/similarity_detector.rb | 66 ---------------------- 2 files changed, 67 deletions(-) delete mode 100644 bundler/lib/bundler/similarity_detector.rb diff --git a/Manifest.txt b/Manifest.txt index 16860895ae7f..5ea1584a5aac 100644 --- a/Manifest.txt +++ b/Manifest.txt @@ -190,7 +190,6 @@ bundler/lib/bundler/settings.rb bundler/lib/bundler/settings/validator.rb bundler/lib/bundler/setup.rb bundler/lib/bundler/shared_helpers.rb -bundler/lib/bundler/similarity_detector.rb bundler/lib/bundler/source.rb bundler/lib/bundler/source/gemspec.rb bundler/lib/bundler/source/git.rb diff --git a/bundler/lib/bundler/similarity_detector.rb b/bundler/lib/bundler/similarity_detector.rb deleted file mode 100644 index 1f4e61e940b3..000000000000 --- a/bundler/lib/bundler/similarity_detector.rb +++ /dev/null @@ -1,66 +0,0 @@ -# frozen_string_literal: true - -# This module is not used anywhere in Bundler -# It is included for backwards compatibility in-case someone is relying on it - -module Bundler - class SimilarityDetector - SimilarityScore = Struct.new(:string, :distance) - - # initialize with an array of words to be matched against - def initialize(corpus) - @corpus = corpus - end - - # return an array of words similar to 'word' from the corpus - def similar_words(word, limit = 3) - words_by_similarity = @corpus.map {|w| SimilarityScore.new(w, levenshtein_distance(word, w)) } - words_by_similarity.select {|s| s.distance <= limit }.sort_by(&:distance).map(&:string) - end - - # return the result of 'similar_words', concatenated into a list - # (eg "a, b, or c") - def similar_word_list(word, limit = 3) - words = similar_words(word, limit) - if words.length == 1 - words[0] - elsif words.length > 1 - [words[0..-2].join(", "), words[-1]].join(" or ") - end - end - - protected - - # https://www.informit.com/articles/article.aspx?p=683059&seqNum=36 - def levenshtein_distance(this, that, ins = 2, del = 2, sub = 1) - # ins, del, sub are weighted costs - return nil if this.nil? - return nil if that.nil? - dm = [] # distance matrix - - # Initialize first row values - dm[0] = (0..this.length).collect {|i| i * ins } - fill = [0] * (this.length - 1) - - # Initialize first column values - (1..that.length).each do |i| - dm[i] = [i * del, fill.flatten] - end - - # populate matrix - (1..that.length).each do |i| - (1..this.length).each do |j| - # critical comparison - dm[i][j] = [ - dm[i - 1][j - 1] + (this[j - 1] == that[i - 1] ? 0 : sub), - dm[i][j - 1] + ins, - dm[i - 1][j] + del, - ].min - end - end - - # The last value in matrix is the Levenshtein distance between the strings - dm[that.length][this.length] - end - end -end From fee8dd2f087f360a4ce97dd43baed8a330d163c9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 18 Nov 2025 14:44:29 +0900 Subject: [PATCH 155/295] bin/rubocop -a --- bundler/lib/bundler/cli/common.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bundler/lib/bundler/cli/common.rb b/bundler/lib/bundler/cli/common.rb index 7de6fb7fdb23..2f332ff36440 100644 --- a/bundler/lib/bundler/cli/common.rb +++ b/bundler/lib/bundler/cli/common.rb @@ -99,7 +99,7 @@ def self.gem_not_found_message(missing_gem_name, alternatives) if alternate_names.include?(missing_gem_name.downcase) message += "\nDid you mean '#{missing_gem_name.downcase}'?" elsif defined?(DidYouMean::SpellChecker) - suggestions = DidYouMean::SpellChecker.new(:dictionary => alternate_names).correct(missing_gem_name) + suggestions = DidYouMean::SpellChecker.new(dictionary: alternate_names).correct(missing_gem_name) message += "\nDid you mean #{word_list(suggestions)}?" unless suggestions.empty? end message @@ -138,8 +138,6 @@ def self.clean_after_install? clean end - protected - def self.word_list(words) if words.empty? return "" From d604c1d1cb29ba659314eed78d926846336b2b3a Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 18 Nov 2025 15:15:16 +0900 Subject: [PATCH 156/295] Spelling with the latest version of did_you_mean --- bundler/spec/commands/open_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bundler/spec/commands/open_spec.rb b/bundler/spec/commands/open_spec.rb index 72038152f4f0..77e7815017ee 100644 --- a/bundler/spec/commands/open_spec.rb +++ b/bundler/spec/commands/open_spec.rb @@ -80,12 +80,12 @@ it "suggests alternatives for similar-sounding gems when using subpath" do bundle "open Rails --path README.md", env: { "EDITOR" => "echo editor", "VISUAL" => "", "BUNDLER_EDITOR" => "" }, raise_on_error: false - expect(err).to match(/did you mean rails\?/i) + expect(err).to match(/did you mean 'rails'\?/i) end it "suggests alternatives for similar-sounding gems when using deep subpath" do bundle "open Rails --path some/path/here", env: { "EDITOR" => "echo editor", "VISUAL" => "", "BUNDLER_EDITOR" => "" }, raise_on_error: false - expect(err).to match(/did you mean rails\?/i) + expect(err).to match(/did you mean 'rails'\?/i) end it "opens subpath of the short worded gem" do From ab7d0fc7b02955539c68467a31525c0c66571612 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 18 Nov 2025 18:32:44 +0900 Subject: [PATCH 157/295] Handle to reverse order result in Ruby 3.2 https://github.com/ruby/rubygems/actions/runs/19458155903/job/55676075439?pr=3857 ``` -Did you mean 'methods' or 'method'? +Could not find gem 'methosd'. +Did you mean 'method' or 'methods'? ``` --- bundler/spec/bundler/cli_common_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/spec/bundler/cli_common_spec.rb b/bundler/spec/bundler/cli_common_spec.rb index 37a92c20e646..015894b3a13e 100644 --- a/bundler/spec/bundler/cli_common_spec.rb +++ b/bundler/spec/bundler/cli_common_spec.rb @@ -16,7 +16,7 @@ message = subject.gem_not_found_message("nokogri", %w[nokogiri rails sidekiq dog]) expect(message).to match("Did you mean 'nokogiri'?") message = subject.gem_not_found_message("methosd", %w[method methods bogus]) - expect(message).to match("Did you mean 'methods' or 'method'?") + expect(message).to match(/Did you mean 'method(|s)' or 'method(|s)'?/) end end end From 49dec52cb219b7efa8c1ac3cb59b77f13ccc955f Mon Sep 17 00:00:00 2001 From: eileencodes Date: Tue, 18 Nov 2025 11:56:09 -0500 Subject: [PATCH 158/295] Replace instance method look up in plugin installer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `Gem::Installer.instance_methods(false).include?(:generate_plugins)` is 63x slower than `Gem::Installer.method_defined?(:generate_plugins)` in a microbenchmark. The latter is a direct lookup, whereas the former will create an array, which will be slower. ```ruby require "benchmark/ips" Benchmark.ips do |x| x.report "instance_methods" do Gem::Installer.instance_methods(false).include?(:generate_plugins) end x.report "method_defined" do Gem::Installer.method_defined?(:generate_plugins) end x.compare! end ``` ``` $ ruby -I lib/ benchmark_methods.rb ruby 3.4.4 (2025-05-14 revision a38531fd3f) +PRISM [arm64-darwin23] Warming up -------------------------------------- instance_methods 58.449k i/100ms method_defined 3.375M i/100ms Calculating ------------------------------------- instance_methods 541.874k (± 5.7%) i/s (1.85 μs/i) - 2.747M in 5.087825s method_defined 34.263M (± 1.1%) i/s (29.19 ns/i) - 172.135M in 5.024524s Comparison: method_defined: 34263189.1 i/s instance_methods: 541874.3 i/s - 63.23x slower ``` This does not make much difference in an overall benchmark or profile, but this is more idiomatic Ruby than the prior code. --- bundler/lib/bundler/rubygems_gem_installer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/lib/bundler/rubygems_gem_installer.rb b/bundler/lib/bundler/rubygems_gem_installer.rb index 1af1b85ff015..25ddbeaceb6d 100644 --- a/bundler/lib/bundler/rubygems_gem_installer.rb +++ b/bundler/lib/bundler/rubygems_gem_installer.rb @@ -69,7 +69,7 @@ def ensure_writable_dir(dir) end def generate_plugins - return unless Gem::Installer.instance_methods(false).include?(:generate_plugins) + return unless Gem::Installer.method_defined?(:generate_plugins) latest = Gem::Specification.stubs_for(spec.name).first return if latest && latest.version > spec.version From 260d7d60b3e28c6378efe906ab9140bcca2befa2 Mon Sep 17 00:00:00 2001 From: Go Sueyoshi Date: Wed, 19 Nov 2025 09:46:35 +0900 Subject: [PATCH 159/295] Add `--ext=go` to `bundle gem` (#8183) * Add new gem templates * Add `--ext=go` in `bundle gem` * Add setup-go to .github/workflows/main.yml * Embed go version in go.mod * Use go in bundler CI * Add example method to template * Install Go in .circleci/config.yml * Install Go in .gitlab-ci.yml * Allow hard tabs in go template * Run `rake update_manifest` * Fix test * Move go_gem to gemspec Respect to 9b0ec80 * nits: :golf: * includes valid module name in go.mod * generate header file * Run `go mod tidy` to create `go.sum` * Check if `go.sum` is generated only when Go is installed To avoid test failure in environments where Go is not installed * Run CI * Workaround for hung up c.f. https://github.com/rubygems/rubygems/actions/runs/11639408044/job/32415545422 * Write man for --ext=go * Re-generate man with `./bin/rake man:build` * pinning :pushpin: * Update with `./bin/rake man:build` * nits: Extract to method * nits: Use `sys_exec` instead of `system` * Clean go module cache after test Workaround following error ``` 1) bundle gem gem naming with underscore --ext parameter set with go includes go_gem extension in extconf.rb Failure/Error: FileUtils.rm_r(dir) Errno::EACCES: Permission denied @ apply2files - /home/runner/work/rubygems/rubygems/bundler/tmp/2.2/home/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/decode_test.go # ./spec/support/helpers.rb:37:in `block in reset!' # ./spec/support/helpers.rb:21:in `each' # ./spec/support/helpers.rb:21:in `reset!' # ./spec/spec_helper.rb:130:in `block (2 levels) in ' # /home/runner/work/rubygems/rubygems/lib/rubygems.rb:303:in `load' # /home/runner/work/rubygems/rubygems/lib/rubygems.rb:303:in `activate_and_load_bin_path' ``` Files installed with `go get` have permissions set to 444 ref. https://github.com/golang/go/issues/35615 ``` $ ls -l /home/runner/work/rubygems/rubygems/bundler/tmp/2.2/home/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/decode_test.go -r--r--r-- 1 runner runner 42320 Nov 15 06:38 /home/runner/work/rubygems/rubygems/bundler/tmp/2.2/home/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/decode_test.go ``` So they cannot be deleted by `FileUtils.rm_r`. Therefore, this is necessary to execute `go clean -modcache` separately from `FileUtils.rm_r` to circumvent it. * Remove needless changes ref. https://github.com/ruby/rubygems/pull/8183#discussion_r2532902051 * ci: setup-go is needless * Don't run go command in `bundle gem` ref. https://github.com/ruby/rubygems/pull/8183#discussion_r2532765470 * Revert unrelated date changes --------- Co-authored-by: Hiroshi SHIBATA --- Manifest.txt | 4 + bundler/lib/bundler/cli.rb | 2 +- bundler/lib/bundler/cli/gem.rb | 16 +- bundler/lib/bundler/man/bundle-gem.1 | 4 +- bundler/lib/bundler/man/bundle-gem.1.ronn | 4 +- .../templates/newgem/circleci/config.yml.tt | 12 ++ .../newgem/ext/newgem/extconf-go.rb.tt | 11 ++ .../templates/newgem/ext/newgem/go.mod.tt | 5 + .../newgem/ext/newgem/newgem-go.c.tt | 2 + .../templates/newgem/ext/newgem/newgem.go.tt | 31 ++++ .../newgem/github/workflows/main.yml.tt | 6 + .../bundler/templates/newgem/gitlab-ci.yml.tt | 9 ++ .../templates/newgem/newgem.gemspec.tt | 5 +- bundler/spec/commands/newgem_spec.rb | 151 ++++++++++++++++++ bundler/spec/quality_spec.rb | 3 + 15 files changed, 258 insertions(+), 7 deletions(-) create mode 100644 bundler/lib/bundler/templates/newgem/ext/newgem/extconf-go.rb.tt create mode 100644 bundler/lib/bundler/templates/newgem/ext/newgem/go.mod.tt create mode 100644 bundler/lib/bundler/templates/newgem/ext/newgem/newgem-go.c.tt create mode 100644 bundler/lib/bundler/templates/newgem/ext/newgem/newgem.go.tt diff --git a/Manifest.txt b/Manifest.txt index 5ea1584a5aac..76e799964b05 100644 --- a/Manifest.txt +++ b/Manifest.txt @@ -221,8 +221,12 @@ bundler/lib/bundler/templates/newgem/circleci/config.yml.tt bundler/lib/bundler/templates/newgem/exe/newgem.tt bundler/lib/bundler/templates/newgem/ext/newgem/Cargo.toml.tt bundler/lib/bundler/templates/newgem/ext/newgem/extconf-c.rb.tt +bundler/lib/bundler/templates/newgem/ext/newgem/extconf-go.rb.tt bundler/lib/bundler/templates/newgem/ext/newgem/extconf-rust.rb.tt +bundler/lib/bundler/templates/newgem/ext/newgem/go.mod.tt +bundler/lib/bundler/templates/newgem/ext/newgem/newgem-go.c.tt bundler/lib/bundler/templates/newgem/ext/newgem/newgem.c.tt +bundler/lib/bundler/templates/newgem/ext/newgem/newgem.go.tt bundler/lib/bundler/templates/newgem/ext/newgem/newgem.h.tt bundler/lib/bundler/templates/newgem/ext/newgem/src/lib.rs.tt bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index af634291dd47..86b86b359fcf 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -11,7 +11,7 @@ class CLI < Thor AUTO_INSTALL_CMDS = %w[show binstubs outdated exec open console licenses clean].freeze PARSEABLE_COMMANDS = %w[check config help exec platform show version].freeze - EXTENSIONS = ["c", "rust"].freeze + EXTENSIONS = ["c", "rust", "go"].freeze COMMAND_ALIASES = { "check" => "c", diff --git a/bundler/lib/bundler/cli/gem.rb b/bundler/lib/bundler/cli/gem.rb index abfb095d469f..236ce530eccb 100644 --- a/bundler/lib/bundler/cli/gem.rb +++ b/bundler/lib/bundler/cli/gem.rb @@ -13,6 +13,8 @@ class CLI::Gem "test-unit" => "3.0", }.freeze + DEFAULT_GITHUB_USERNAME = "[USERNAME]" + attr_reader :options, :gem_name, :thor, :name, :target, :extension def initialize(options, gem_name, thor) @@ -72,7 +74,7 @@ def run bundle: options[:bundle], bundler_version: bundler_dependency_version, git: use_git, - github_username: github_username.empty? ? "[USERNAME]" : github_username, + github_username: github_username.empty? ? DEFAULT_GITHUB_USERNAME : github_username, required_ruby_version: required_ruby_version, rust_builder_required_rubygems_version: rust_builder_required_rubygems_version, minitest_constant_name: minitest_constant_name, @@ -231,6 +233,18 @@ def run ) end + if extension == "go" + templates.merge!( + "ext/newgem/go.mod.tt" => "ext/#{name}/go.mod", + "ext/newgem/extconf-go.rb.tt" => "ext/#{name}/extconf.rb", + "ext/newgem/newgem.h.tt" => "ext/#{name}/#{underscored_name}.h", + "ext/newgem/newgem.go.tt" => "ext/#{name}/#{underscored_name}.go", + "ext/newgem/newgem-go.c.tt" => "ext/#{name}/#{underscored_name}.c", + ) + + config[:go_module_username] = config[:github_username] == DEFAULT_GITHUB_USERNAME ? "username" : config[:github_username] + end + if target.exist? && !target.directory? Bundler.ui.error "Couldn't create a new gem named `#{gem_name}` because there's an existing file named `#{gem_name}`." exit Bundler::BundlerError.all_errors[Bundler::GenericSystemCallError] diff --git a/bundler/lib/bundler/man/bundle-gem.1 b/bundler/lib/bundler/man/bundle-gem.1 index 670a69d67e31..85c0f57674a4 100644 --- a/bundler/lib/bundler/man/bundle-gem.1 +++ b/bundler/lib/bundler/man/bundle-gem.1 @@ -38,8 +38,8 @@ Add a \fBCHANGELOG\.md\fR file to the root of the generated project\. If this op \fB\-\-no\-changelog\fR Do not create a \fBCHANGELOG\.md\fR (overrides \fB\-\-changelog\fR specified in the global config)\. .TP -\fB\-\-ext=c\fR, \fB\-\-ext=rust\fR -Add boilerplate for C or Rust (currently magnus \fIhttps://docs\.rs/magnus\fR based) extension code to the generated project\. This behavior is disabled by default\. +\fB\-\-ext=c\fR, \fB\-\-ext=go\fR, \fB\-\-ext=rust\fR +Add boilerplate for C, Go (currently go\-gem\-wrapper \fIhttps://github\.com/ruby\-go\-gem/go\-gem\-wrapper\fR based) or Rust (currently magnus \fIhttps://docs\.rs/magnus\fR based) extension code to the generated project\. This behavior is disabled by default\. .TP \fB\-\-no\-ext\fR Do not add extension code (overrides \fB\-\-ext\fR specified in the global config)\. diff --git a/bundler/lib/bundler/man/bundle-gem.1.ronn b/bundler/lib/bundler/man/bundle-gem.1.ronn index b71bde9f6506..488c8113e4f2 100644 --- a/bundler/lib/bundler/man/bundle-gem.1.ronn +++ b/bundler/lib/bundler/man/bundle-gem.1.ronn @@ -51,8 +51,8 @@ configuration file using the following names: Do not create a `CHANGELOG.md` (overrides `--changelog` specified in the global config). -* `--ext=c`, `--ext=rust`: - Add boilerplate for C or Rust (currently [magnus](https://docs.rs/magnus) based) extension code to the generated project. This behavior +* `--ext=c`, `--ext=go`, `--ext=rust`: + Add boilerplate for C, Go (currently [go-gem-wrapper](https://github.com/ruby-go-gem/go-gem-wrapper) based) or Rust (currently [magnus](https://docs.rs/magnus) based) extension code to the generated project. This behavior is disabled by default. * `--no-ext`: diff --git a/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt b/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt index f40f029bf130..c4dd9d06471e 100644 --- a/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +++ b/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt @@ -6,6 +6,10 @@ jobs: <%- if config[:ext] == 'rust' -%> environment: RB_SYS_FORCE_INSTALL_RUST_TOOLCHAIN: 'true' +<%- end -%> +<%- if config[:ext] == 'go' -%> + environment: + GO_VERSION: '1.23.0' <%- end -%> steps: - checkout @@ -16,6 +20,14 @@ jobs: - run: name: Install a RubyGems version that can compile rust extensions command: gem update --system '<%= ::Gem.rubygems_version %>' +<%- end -%> +<%- if config[:ext] == 'go' -%> + - run: + name: Install Go + command: | + wget https://go.dev/dl/go$GO_VERSION.linux-amd64.tar.gz -O /tmp/go.tar.gz + tar -C /usr/local -xzf /tmp/go.tar.gz + echo 'export PATH=/usr/local/go/bin:"$PATH"' >> "$BASH_ENV" <%- end -%> - run: name: Run the default task diff --git a/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-go.rb.tt b/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-go.rb.tt new file mode 100644 index 000000000000..a689e21ebe9c --- /dev/null +++ b/bundler/lib/bundler/templates/newgem/ext/newgem/extconf-go.rb.tt @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require "mkmf" +require "go_gem/mkmf" + +# Makes all symbols private by default to avoid unintended conflict +# with other gems. To explicitly export symbols you can use RUBY_FUNC_EXPORTED +# selectively, or entirely remove this flag. +append_cflags("-fvisibility=hidden") + +create_go_makefile(<%= config[:makefile_path].inspect %>) diff --git a/bundler/lib/bundler/templates/newgem/ext/newgem/go.mod.tt b/bundler/lib/bundler/templates/newgem/ext/newgem/go.mod.tt new file mode 100644 index 000000000000..3f4819d00465 --- /dev/null +++ b/bundler/lib/bundler/templates/newgem/ext/newgem/go.mod.tt @@ -0,0 +1,5 @@ +module github.com/<%= config[:go_module_username] %>/<%= config[:underscored_name] %> + +go 1.23 + +require github.com/ruby-go-gem/go-gem-wrapper latest diff --git a/bundler/lib/bundler/templates/newgem/ext/newgem/newgem-go.c.tt b/bundler/lib/bundler/templates/newgem/ext/newgem/newgem-go.c.tt new file mode 100644 index 000000000000..119c0c96ea5a --- /dev/null +++ b/bundler/lib/bundler/templates/newgem/ext/newgem/newgem-go.c.tt @@ -0,0 +1,2 @@ +#include "<%= config[:underscored_name] %>.h" +#include "_cgo_export.h" diff --git a/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.go.tt b/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.go.tt new file mode 100644 index 000000000000..f19b750e58c4 --- /dev/null +++ b/bundler/lib/bundler/templates/newgem/ext/newgem/newgem.go.tt @@ -0,0 +1,31 @@ +package main + +/* +#include "<%= config[:underscored_name] %>.h" + +VALUE rb_<%= config[:underscored_name] %>_sum(VALUE self, VALUE a, VALUE b); +*/ +import "C" + +import ( + "github.com/ruby-go-gem/go-gem-wrapper/ruby" +) + +//export rb_<%= config[:underscored_name] %>_sum +func rb_<%= config[:underscored_name] %>_sum(_ C.VALUE, a C.VALUE, b C.VALUE) C.VALUE { + longA := ruby.NUM2LONG(ruby.VALUE(a)) + longB := ruby.NUM2LONG(ruby.VALUE(b)) + + sum := longA + longB + + return C.VALUE(ruby.LONG2NUM(sum)) +} + +//export Init_<%= config[:underscored_name] %> +func Init_<%= config[:underscored_name] %>() { + rb_m<%= config[:constant_array].join %> := ruby.RbDefineModule(<%= config[:constant_name].inspect %>) + ruby.RbDefineSingletonMethod(rb_m<%= config[:constant_array].join %>, "sum", C.rb_<%= config[:underscored_name] %>_sum, 2) +} + +func main() { +} diff --git a/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt b/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt index 9224ee0ca272..7f3e3a5b66f9 100644 --- a/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +++ b/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt @@ -34,6 +34,12 @@ jobs: with: ruby-version: ${{ matrix.ruby }} bundler-cache: true +<%- end -%> +<%- if config[:ext] == 'go' -%> + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version-file: ext/<%= config[:underscored_name] %>/go.mod <%- end -%> - name: Run the default task run: bundle exec rake diff --git a/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt b/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt index d2e1f337362f..adbd70cbc050 100644 --- a/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +++ b/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt @@ -5,6 +5,11 @@ default: <%- if config[:ext] == 'rust' -%> - apt-get update && apt-get install -y clang - gem update --system '<%= ::Gem.rubygems_version %>' +<%- end -%> +<%- if config[:ext] == 'go' -%> + - wget https://go.dev/dl/go$GO_VERSION.linux-amd64.tar.gz -O /tmp/go.tar.gz + - tar -C /usr/local -xzf /tmp/go.tar.gz + - export PATH=/usr/local/go/bin:$PATH <%- end -%> - gem install bundler -v <%= Bundler::VERSION %> - bundle install @@ -13,6 +18,10 @@ example_job: <%- if config[:ext] == 'rust' -%> variables: RB_SYS_FORCE_INSTALL_RUST_TOOLCHAIN: 'true' +<%- end -%> +<%- if config[:ext] == 'go' -%> + variables: + GO_VERSION: '1.23.0' <%- end -%> script: - bundle exec rake diff --git a/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt b/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt index c87abda8a015..513875fd63ef 100644 --- a/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +++ b/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt @@ -38,7 +38,7 @@ Gem::Specification.new do |spec| spec.bindir = "exe" spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) } spec.require_paths = ["lib"] -<%- if config[:ext] == 'c' || config[:ext] == 'rust' -%> +<%- if %w(c rust go).include?(config[:ext]) -%> spec.extensions = ["ext/<%= config[:underscored_name] %>/extconf.rb"] <%- end -%> @@ -47,6 +47,9 @@ Gem::Specification.new do |spec| <%- if config[:ext] == 'rust' -%> spec.add_dependency "rb_sys", "~> 0.9.91" <%- end -%> +<%- if config[:ext] == 'go' -%> + spec.add_dependency "go_gem", "~> 0.2" +<%- end -%> # For more information and examples about making a new gem, check out our # guide at: https://bundler.io/guides/creating_gem.html diff --git a/bundler/spec/commands/newgem_spec.rb b/bundler/spec/commands/newgem_spec.rb index 1ce4a0da09ca..7a837bd08f01 100644 --- a/bundler/spec/commands/newgem_spec.rb +++ b/bundler/spec/commands/newgem_spec.rb @@ -31,6 +31,13 @@ def ignore_paths matched[:ignored]&.split(" ") end + def installed_go? + sys_exec("go version", raise_on_error: true) + true + rescue StandardError + false + end + let(:generated_gemspec) { Bundler.load_gemspec_uncached(bundled_app(gem_name).join("#{gem_name}.gemspec")) } let(:gem_name) { "mygem" } @@ -1748,6 +1755,150 @@ def create_temporary_dir(dir) expect(bundled_app("#{gem_name}/Rakefile").read).to eq(rakefile) end end + + context "--ext parameter set with go" do + let(:flags) { "--ext=go" } + + before do + bundle ["gem", gem_name, flags].compact.join(" ") + end + + after do + sys_exec("go clean -modcache", raise_on_error: true) if installed_go? + end + + it "is not deprecated" do + expect(err).not_to include "[DEPRECATED] Option `--ext` without explicit value is deprecated." + end + + it "builds ext skeleton" do + expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.c")).to exist + expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.go")).to exist + expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.h")).to exist + expect(bundled_app("#{gem_name}/ext/#{gem_name}/extconf.rb")).to exist + expect(bundled_app("#{gem_name}/ext/#{gem_name}/go.mod")).to exist + end + + it "includes extconf.rb in gem_name.gemspec" do + expect(bundled_app("#{gem_name}/#{gem_name}.gemspec").read).to include(%(spec.extensions = ["ext/#{gem_name}/extconf.rb"])) + end + + it "includes go_gem in gem_name.gemspec" do + expect(bundled_app("#{gem_name}/#{gem_name}.gemspec").read).to include('spec.add_dependency "go_gem", "~> 0.2"') + end + + it "includes go_gem extension in extconf.rb" do + expect(bundled_app("#{gem_name}/ext/#{gem_name}/extconf.rb").read).to include(<<~RUBY) + require "mkmf" + require "go_gem/mkmf" + RUBY + + expect(bundled_app("#{gem_name}/ext/#{gem_name}/extconf.rb").read).to include(%(create_go_makefile("#{gem_name}/#{gem_name}"))) + expect(bundled_app("#{gem_name}/ext/#{gem_name}/extconf.rb").read).not_to include("create_makefile") + end + + it "includes go_gem extension in gem_name.c" do + expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.c").read).to eq(<<~C) + #include "#{gem_name}.h" + #include "_cgo_export.h" + C + end + + it "includes skeleton code in gem_name.go" do + expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.go").read).to include(<<~GO) + /* + #include "#{gem_name}.h" + + VALUE rb_#{gem_name}_sum(VALUE self, VALUE a, VALUE b); + */ + import "C" + GO + + expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.go").read).to include(<<~GO) + //export rb_#{gem_name}_sum + func rb_#{gem_name}_sum(_ C.VALUE, a C.VALUE, b C.VALUE) C.VALUE { + GO + + expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.go").read).to include(<<~GO) + //export Init_#{gem_name} + func Init_#{gem_name}() { + GO + end + + it "includes valid module name in go.mod" do + expect(bundled_app("#{gem_name}/ext/#{gem_name}/go.mod").read).to include("module github.com/bundleuser/#{gem_name}") + end + + context "with --no-ci" do + let(:flags) { "--ext=go --no-ci" } + + it_behaves_like "CI config is absent" + end + + context "--ci set to github" do + let(:flags) { "--ext=go --ci=github" } + + it "generates .github/workflows/main.yml" do + expect(bundled_app("#{gem_name}/.github/workflows/main.yml")).to exist + expect(bundled_app("#{gem_name}/.github/workflows/main.yml").read).to include("go-version-file: ext/#{gem_name}/go.mod") + end + end + + context "--ci set to circle" do + let(:flags) { "--ext=go --ci=circle" } + + it "generates a .circleci/config.yml" do + expect(bundled_app("#{gem_name}/.circleci/config.yml")).to exist + + expect(bundled_app("#{gem_name}/.circleci/config.yml").read).to include(<<-YAML.strip) + environment: + GO_VERSION: + YAML + + expect(bundled_app("#{gem_name}/.circleci/config.yml").read).to include(<<-YAML) + - run: + name: Install Go + command: | + wget https://go.dev/dl/go$GO_VERSION.linux-amd64.tar.gz -O /tmp/go.tar.gz + tar -C /usr/local -xzf /tmp/go.tar.gz + echo 'export PATH=/usr/local/go/bin:"$PATH"' >> "$BASH_ENV" + YAML + end + end + + context "--ci set to gitlab" do + let(:flags) { "--ext=go --ci=gitlab" } + + it "generates a .gitlab-ci.yml" do + expect(bundled_app("#{gem_name}/.gitlab-ci.yml")).to exist + + expect(bundled_app("#{gem_name}/.gitlab-ci.yml").read).to include(<<-YAML) + - wget https://go.dev/dl/go$GO_VERSION.linux-amd64.tar.gz -O /tmp/go.tar.gz + - tar -C /usr/local -xzf /tmp/go.tar.gz + - export PATH=/usr/local/go/bin:$PATH + YAML + + expect(bundled_app("#{gem_name}/.gitlab-ci.yml").read).to include(<<-YAML.strip) + variables: + GO_VERSION: + YAML + end + end + + context "without github.user" do + before do + # FIXME: GitHub Actions Windows Runner hang up here for some reason... + skip "Workaround for hung up" if Gem.win_platform? + + git("config --global --unset github.user") + bundle ["gem", gem_name, flags].compact.join(" ") + end + + it "includes valid module name in go.mod" do + expect(bundled_app("#{gem_name}/ext/#{gem_name}/go.mod").read).to include("module github.com/username/#{gem_name}") + end + end + end end context "gem naming with dashed" do diff --git a/bundler/spec/quality_spec.rb b/bundler/spec/quality_spec.rb index bbd6517f21db..b60be9980fc1 100644 --- a/bundler/spec/quality_spec.rb +++ b/bundler/spec/quality_spec.rb @@ -20,6 +20,9 @@ def check_for_git_merge_conflicts(filename) end def check_for_tab_characters(filename) + # Because Go uses hard tabs + return if filename.end_with?(".go.tt") + failing_lines = [] each_line(filename) do |line, number| failing_lines << number + 1 if line.include?("\t") From ffa3eb9ac67e6c8c7a339da2d2943efd3ba93ed5 Mon Sep 17 00:00:00 2001 From: Cody Cutrer Date: Wed, 30 Aug 2023 16:52:45 -0600 Subject: [PATCH 160/295] Handle BUNDLER_VERSION being set to an empty string This is useful, in case you're using Docker, and an upstream Dockerfile sets BUNDLER_VERSION to something you don't want. It's impossible to unset it... only override to be the empty string. --- bundler/lib/bundler/self_manager.rb | 2 +- lib/rubygems/bundler_version_finder.rb | 1 + test/rubygems/test_gem_bundler_version_finder.rb | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/bundler/lib/bundler/self_manager.rb b/bundler/lib/bundler/self_manager.rb index 7db6c9f6f1cd..1db77fd46b3f 100644 --- a/bundler/lib/bundler/self_manager.rb +++ b/bundler/lib/bundler/self_manager.rb @@ -97,7 +97,7 @@ def needs_switching?(restart_version) end def autoswitching_applies? - ENV["BUNDLER_VERSION"].nil? && + (ENV["BUNDLER_VERSION"].nil? || ENV["BUNDLER_VERSION"].empty?) && ruby_can_restart_with_same_arguments? && lockfile_version end diff --git a/lib/rubygems/bundler_version_finder.rb b/lib/rubygems/bundler_version_finder.rb index 4ebbad1c0cfa..ac8988dea577 100644 --- a/lib/rubygems/bundler_version_finder.rb +++ b/lib/rubygems/bundler_version_finder.rb @@ -3,6 +3,7 @@ module Gem::BundlerVersionFinder def self.bundler_version v = ENV["BUNDLER_VERSION"] + v = nil if v&.empty? v ||= bundle_update_bundler_version return if v == true diff --git a/test/rubygems/test_gem_bundler_version_finder.rb b/test/rubygems/test_gem_bundler_version_finder.rb index 39255bc4e1d7..908f9278323c 100644 --- a/test/rubygems/test_gem_bundler_version_finder.rb +++ b/test/rubygems/test_gem_bundler_version_finder.rb @@ -32,6 +32,11 @@ def test_bundler_version_with_env_var assert_equal v("1.1.1.1"), bvf.bundler_version end + def test_bundler_version_with_empty_env_var + ENV["BUNDLER_VERSION"] = "" + assert_nil bvf.bundler_version + end + def test_bundler_version_with_bundle_update_bundler ARGV.replace %w[update --bundler] assert_nil bvf.bundler_version From e415480ac51b18919fe505e4fe6f93b719c3d1f8 Mon Sep 17 00:00:00 2001 From: Edouard CHIN Date: Mon, 17 Nov 2025 21:33:58 +0100 Subject: [PATCH 161/295] Warn users that `bundle` now display the help: - In https://github.com/ruby/rubygems/commit/31d67ecc056fb5a9193bc66a6e69e21576a87702 we enforced the new behaviour where running `bundle` no longer installs gems but displays the help. Users now have a way to configure their preferred default command using the `BUNDLE_DEFAULT_CLI_COMMAND` flag. With the preview of Ruby 4.0 now being released, some people will start to see this new change. The problem is that the previous behaviour had existed for like an eternity and we didn't warn users about this change in advance. I'd like to provide a deprecation/warning cycle because this is confusing users already and this breaks various CI setup that now needs to be changed immediately. --- bundler/lib/bundler/cli.rb | 17 ++++++++++++++++- bundler/lib/bundler/settings.rb | 1 - bundler/spec/bundler/cli_spec.rb | 12 ++++-------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index 86b86b359fcf..79f93a778473 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -107,7 +107,22 @@ def cli_help shell.say self.class.send(:class_options_help, shell) end - default_task(Bundler.settings[:default_cli_command]) + + def self.default_command(meth = nil) + return super if meth + + default_cli_command = Bundler.settings[:default_cli_command] + return default_cli_command if default_cli_command + + Bundler.ui.warn(<<~MSG) + In the next version of Bundler, running `bundle` without argument will no longer run `bundle install`. + Instead, the `help` command will be displayed. + + If you'd like to keep the previous behaviour please run `bundle config set default_cli_command install --global`. + MSG + + "install" + end class_option "no-color", type: :boolean, desc: "Disable colorization in output" class_option "retry", type: :numeric, aliases: "-r", banner: "NUM", diff --git a/bundler/lib/bundler/settings.rb b/bundler/lib/bundler/settings.rb index 81f1857eec76..fb1b875b2645 100644 --- a/bundler/lib/bundler/settings.rb +++ b/bundler/lib/bundler/settings.rb @@ -83,7 +83,6 @@ class Settings "BUNDLE_VERSION" => "lockfile", "BUNDLE_LOCKFILE_CHECKSUMS" => true, "BUNDLE_CACHE_ALL" => true, - "BUNDLE_DEFAULT_CLI_COMMAND" => "cli_help", "BUNDLE_PLUGINS" => true, "BUNDLE_GLOBAL_GEM_CACHE" => false, "BUNDLE_UPDATE_REQUIRES_ALL_FLAG" => false, diff --git a/bundler/spec/bundler/cli_spec.rb b/bundler/spec/bundler/cli_spec.rb index b3a97e72ceb2..ee3c0d0fd50f 100644 --- a/bundler/spec/bundler/cli_spec.rb +++ b/bundler/spec/bundler/cli_spec.rb @@ -87,14 +87,10 @@ def out_with_macos_man_workaround end context "with no arguments" do - it "prints a concise help message by default" do - bundle "" - expect(err).to be_empty - expect(out).to include("Bundler version #{Bundler::VERSION}"). - and include("\n\nBundler commands:\n\n"). - and include("\n\n Primary commands:\n"). - and include("\n\n Utilities:\n"). - and include("\n\nOptions:\n") + it "installs and log a warning by default" do + bundle "", raise_on_error: false + expect(err).to include("running `bundle` without argument will no longer run `bundle install`.") + expect(err).to include("Could not locate Gemfile") end it "prints a concise help message when default_cli_command set to cli_help" do From 6cc7d71dac3d0275c9727cf200c7acfbf6c78d37 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 15:29:56 +0900 Subject: [PATCH 162/295] Use method_defined?(:method, false) --- bundler/lib/bundler/rubygems_gem_installer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/lib/bundler/rubygems_gem_installer.rb b/bundler/lib/bundler/rubygems_gem_installer.rb index 25ddbeaceb6d..0da5ed236b2b 100644 --- a/bundler/lib/bundler/rubygems_gem_installer.rb +++ b/bundler/lib/bundler/rubygems_gem_installer.rb @@ -69,7 +69,7 @@ def ensure_writable_dir(dir) end def generate_plugins - return unless Gem::Installer.method_defined?(:generate_plugins) + return unless Gem::Installer.method_defined?(:generate_plugins, false) latest = Gem::Specification.stubs_for(spec.name).first return if latest && latest.version > spec.version From e37f21c42e6fc514c75b38752b28e54ce6d1f674 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 14 Nov 2025 14:36:40 +0900 Subject: [PATCH 163/295] Use tmp dir because rubygems repo is not under the rubygems org --- Rakefile | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/Rakefile b/Rakefile index a18cc85b65d2..58c814e2a8e3 100644 --- a/Rakefile +++ b/Rakefile @@ -258,30 +258,30 @@ end desc "Upload release to rubygems.org" task upload: %w[upload_to_github upload_to_s3] -directory "../guides.rubygems.org" do +directory "tmp/guides.rubygems.org" do sh "git", "clone", "https://github.com/rubygems/guides.git", - "../guides.rubygems.org" + "tmp/guides.rubygems.org" end namespace "guides" do - task "pull" => %w[../guides.rubygems.org] do - chdir "../guides.rubygems.org" do + task "pull" => %w[tmp/guides.rubygems.org] do + chdir "tmp/guides.rubygems.org" do sh "git", "pull" end end - task "update" => %w[../guides.rubygems.org] do + task "update" => %w[tmp/guides.rubygems.org] do lib_dir = File.join Dir.pwd, "lib" - chdir "../guides.rubygems.org" do + chdir "tmp/guides.rubygems.org" do ruby "-I", lib_dir, "-S", "rake", "command_guide" ruby "-I", lib_dir, "-S", "rake", "spec_guide" end end - task "commit" => %w[../guides.rubygems.org] do - chdir "../guides.rubygems.org" do + task "commit" => %w[tmp/guides.rubygems.org] do + chdir "tmp/guides.rubygems.org" do sh "git", "diff", "--quiet" rescue StandardError sh "git", "commit", "command-reference.md", "specification-reference.md", @@ -289,8 +289,8 @@ namespace "guides" do end end - task "push" => %w[../guides.rubygems.org] do - chdir "../guides.rubygems.org" do + task "push" => %w[tmp/guides.rubygems.org] do + chdir "tmp/guides.rubygems.org" do sh "git", "push" end end @@ -306,10 +306,10 @@ namespace "guides" do ] end -directory "../blog.rubygems.org" do +directory "tmp/blog.rubygems.org" do sh "git", "clone", "https://github.com/rubygems/rubygems.github.io.git", - "../blog.rubygems.org" + "tmp/blog.rubygems.org" end namespace "blog" do @@ -343,13 +343,13 @@ namespace "blog" do end end - task "pull" => %w[../blog.rubygems.org] do - chdir "../blog.rubygems.org" do + task "pull" => %w[tmp/blog.rubygems.org] do + chdir "tmp/blog.rubygems.org" do sh "git", "pull" end end - path = File.join "../blog.rubygems.org", post_page + path = File.join "tmp/blog.rubygems.org", post_page task "update" => [path] @@ -397,16 +397,16 @@ SHA256 Checksums: end end - task "commit" => %w[../blog.rubygems.org] do - chdir "../blog.rubygems.org" do + task "commit" => %w[tmp/blog.rubygems.org] do + chdir "tmp/blog.rubygems.org" do sh "git", "add", post_page sh "git", "commit", post_page, "-m", "Added #{v} release announcement" end end - task "push" => %w[../blog.rubygems.org] do - chdir "../blog.rubygems.org" do + task "push" => %w[tmp/blog.rubygems.org] do + chdir "tmp/blog.rubygems.org" do sh "git", "push" end end From cc033bf476117e497d941a8d78b2d2649723ac9d Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 13:21:38 +0900 Subject: [PATCH 164/295] Skip to upload artifacts to S3 when we published prerelease version --- Rakefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 58c814e2a8e3..eb279a567356 100644 --- a/Rakefile +++ b/Rakefile @@ -256,7 +256,10 @@ task :upload_to_s3 do end desc "Upload release to rubygems.org" -task upload: %w[upload_to_github upload_to_s3] +task :upload do + Rake::Task["upload_to_github"].invoke + Rake::Task["upload_to_s3"].invoke unless Gem::Specification.load("rubygems-update.gemspec").version.prerelease? +end directory "tmp/guides.rubygems.org" do sh "git", "clone", From 502e7e3dee01a5d4dee3ab119319fcc5dfc9c99a Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 15:28:53 +0900 Subject: [PATCH 165/295] Added DRYRUN mode --- Rakefile | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/Rakefile b/Rakefile index eb279a567356..82bd4c199352 100644 --- a/Rakefile +++ b/Rakefile @@ -186,7 +186,11 @@ end desc "Release rubygems-#{v}" task release: :prerelease do Rake::Task["package"].invoke - sh "gem push pkg/rubygems-update-#{v}.gem" + if ENV["DRYRUN"] + puts "DRYRUN mode: skipping push gem to rubygems.org" + else + sh "gem push pkg/rubygems-update-#{v}.gem" + end Rake::Task["postrelease"].invoke end @@ -257,8 +261,12 @@ end desc "Upload release to rubygems.org" task :upload do - Rake::Task["upload_to_github"].invoke - Rake::Task["upload_to_s3"].invoke unless Gem::Specification.load("rubygems-update.gemspec").version.prerelease? + if ENV["DRYRUN"] + puts "DRYRUN mode: skipping upload to GitHub and S3" + else + Rake::Task["upload_to_github"].invoke + Rake::Task["upload_to_s3"].invoke unless Gem::Specification.load("rubygems-update.gemspec").version.prerelease? + end end directory "tmp/guides.rubygems.org" do @@ -294,7 +302,11 @@ namespace "guides" do task "push" => %w[tmp/guides.rubygems.org] do chdir "tmp/guides.rubygems.org" do - sh "git", "push" + if ENV["DRYRUN"] + puts "DRYRUN mode: skipping push to guides repository" + else + sh "git", "push" + end end end @@ -410,7 +422,11 @@ SHA256 Checksums: task "push" => %w[tmp/blog.rubygems.org] do chdir "tmp/blog.rubygems.org" do - sh "git", "push" + if ENV["DRYRUN"] + puts "DRYRUN mode: skipping push to blog repository" + else + sh "git", "push" + end end end From 6426a43449dc1f491f914f4edd5984889b09e62d Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 15:57:43 +0900 Subject: [PATCH 166/295] Don't run test task when release time --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 82bd4c199352..92308966d648 100644 --- a/Rakefile +++ b/Rakefile @@ -140,7 +140,7 @@ task rubocop: %w[rubocop:setup rubocop:run] # -------------------------------------------------------------------- # Creating a release -task prerelease: %w[clobber install_release_dependencies test bundler:build_metadata check_deprecations] +task prerelease: %w[clobber install_release_dependencies bundler:build_metadata check_deprecations] task postrelease: %w[upload guides:publish blog:publish bundler:build_metadata:clean] desc "Check for deprecated methods with expired deprecation horizon" From a170d82f52d8170c0d952f77bd133ed5fd6a57e9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 16:11:01 +0900 Subject: [PATCH 167/295] Avoid to search parent rakefile for building guides pages --- Rakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Rakefile b/Rakefile index 92308966d648..20e8cfb24841 100644 --- a/Rakefile +++ b/Rakefile @@ -286,8 +286,8 @@ namespace "guides" do lib_dir = File.join Dir.pwd, "lib" chdir "tmp/guides.rubygems.org" do - ruby "-I", lib_dir, "-S", "rake", "command_guide" - ruby "-I", lib_dir, "-S", "rake", "spec_guide" + ruby "-I", lib_dir, "-S", "rake", "-N", "command_guide" + ruby "-I", lib_dir, "-S", "rake", "-N", "spec_guide" end end From f290ef677c611689128cda15ea9b176957f3c8c6 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 16:14:41 +0900 Subject: [PATCH 168/295] Skip to verify checksums if DRYRUN is enabled --- Rakefile | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/Rakefile b/Rakefile index 20e8cfb24841..73e9737c99d9 100644 --- a/Rakefile +++ b/Rakefile @@ -333,7 +333,6 @@ namespace "blog" do checksums = "" task "checksums" => "package" do - require "net/http" Dir["pkg/*{tgz,zip,gem}"].each do |file| digest = OpenSSL::Digest::SHA256.file(file).hexdigest basename = File.basename(file) @@ -341,19 +340,24 @@ namespace "blog" do checksums += "* #{basename} \n" checksums += " #{digest}\n" - release_url = URI("https://rubygems.org/#{file.end_with?("gem") ? "gems" : "rubygems"}/#{basename}") - response = Net::HTTP.get_response(release_url) - - if response.is_a?(Net::HTTPSuccess) - released_digest = OpenSSL::Digest::SHA256.hexdigest(response.body) - - if digest != released_digest - abort "Checksum of #{file} (#{digest}) doesn't match checksum of released package at #{release_url} (#{released_digest})" - end - elsif response.is_a?(Net::HTTPForbidden) - abort "#{basename} has not been yet uploaded to rubygems.org" + if ENV["DRYRUN"] + puts "DRYRUN mode: skipping checksum verification for #{file}" else - abort "Error fetching released package to verify checksums: #{response}\n#{response.body}" + release_url = URI("https://rubygems.org/#{file.end_with?("gem") ? "gems" : "rubygems"}/#{basename}") + require "net/http" + response = Net::HTTP.get_response(release_url) + + if response.is_a?(Net::HTTPSuccess) + released_digest = OpenSSL::Digest::SHA256.hexdigest(response.body) + + if digest != released_digest + abort "Checksum of #{file} (#{digest}) doesn't match checksum of released package at #{release_url} (#{released_digest})" + end + elsif response.is_a?(Net::HTTPForbidden) + abort "#{basename} has not been yet uploaded to rubygems.org" + else + abort "Error fetching released package to verify checksums: #{response}\n#{response.body}" + end end end end From 378c1e0af93ccd2bb2cc6221e98498ec7f273dd9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 17:16:35 +0900 Subject: [PATCH 169/295] Handle 4.0.0.beta1 update and previous stable branch --- tool/release.rb | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index d14b0994ab74..f5c37520885a 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -103,7 +103,12 @@ def extra_entry private def bundler_version - version.segments.map.with_index {|s, i| i == 0 ? s - 1 : s }.join(".") + v = if version.segments[0] >= 4 + version + else + version.segments.map.with_index {|s, i| i == 0 ? s - 1 : s }.join(".") + end + v.to_s.gsub(/([a-z])\.(\d)/i, '\1\2') end end @@ -122,7 +127,13 @@ def self.install_dependencies! end def self.for_bundler(version) - rubygems_version = Gem::Version.new(version).segments.map.with_index {|s, i| i == 0 ? s + 1 : s }.join(".") + segments = Gem::Version.new(version).segments + rubygems_version = if segments[0] >= 4 + segments.join(".") + else + segments.map.with_index {|s, i| i == 0 ? s + 1 : s }.join(".") + end + rubygems_version.gsub(/([a-z])\.(\d)/i, '\1\2') release = new(rubygems_version) release.set_bundler_as_current_library @@ -145,11 +156,18 @@ def initialize(version) @stable_branch = segments[0, 2].join(".") @previous_stable_branch = @level == :minor_or_major ? "#{segments[0]}.#{segments[1] - 1}" : @stable_branch + @previous_stable_branch = "3.7" if @stable_branch == '4.0' - rubygems_version = segments.join(".") + rubygems_version = segments.join(".").gsub(/([a-z])\.(\d)/i, '\1\2') @rubygems = Rubygems.new(rubygems_version, @stable_branch) - bundler_version = segments.map.with_index {|s, i| i == 0 ? s - 1 : s }.join(".") + bundler_version = if segments[0] == 4 + segments.join(".") + else + segments.map.with_index {|s, i| i == 0 ? s - 1 : s }.join(".") + end + bundler_version = bundler_version.gsub(/([a-z])\.(\d)/i, '\1\2') + @bundler = Bundler.new(bundler_version, @stable_branch) @release_branch = "release/bundler_#{bundler_version}_rubygems_#{rubygems_version}" From 089dac03bd46eb7d7a3e74b64055c640a684161b Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 18:44:52 +0900 Subject: [PATCH 170/295] Update maintainers --- doc/MAINTAINERS.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/doc/MAINTAINERS.txt b/doc/MAINTAINERS.txt index 2c2938cdcf67..5ffca9e8075e 100644 --- a/doc/MAINTAINERS.txt +++ b/doc/MAINTAINERS.txt @@ -1,7 +1 @@ -Luis Sagastume (@bronzdoc) -Daniel Berger (@djberg96) -Evan Phoenix (@evanphx) SHIBATA Hiroshi (@hsbt) -André Arko (@indirect) -Samuel Giddins (@segiddins) -David Rodríguez (@deivid-rodriguez) From 34b84d6050817ef2bdcd41f8d8e856051910663e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 18:47:49 +0900 Subject: [PATCH 171/295] We can upload prerelease versions too --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 73e9737c99d9..b617a4b384d4 100644 --- a/Rakefile +++ b/Rakefile @@ -265,7 +265,7 @@ task :upload do puts "DRYRUN mode: skipping upload to GitHub and S3" else Rake::Task["upload_to_github"].invoke - Rake::Task["upload_to_s3"].invoke unless Gem::Specification.load("rubygems-update.gemspec").version.prerelease? + Rake::Task["upload_to_s3"].invoke end end From 2dcf5a8eabc69d453185f0d6efcf3b1df44f11b0 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 19:07:21 +0900 Subject: [PATCH 172/295] bin/rubocop -a --- tool/release.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/release.rb b/tool/release.rb index f5c37520885a..0098cf529d6d 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -156,7 +156,7 @@ def initialize(version) @stable_branch = segments[0, 2].join(".") @previous_stable_branch = @level == :minor_or_major ? "#{segments[0]}.#{segments[1] - 1}" : @stable_branch - @previous_stable_branch = "3.7" if @stable_branch == '4.0' + @previous_stable_branch = "3.7" if @stable_branch == "4.0" rubygems_version = segments.join(".").gsub(/([a-z])\.(\d)/i, '\1\2') @rubygems = Rubygems.new(rubygems_version, @stable_branch) From 7935f9d469415198a25c85f69af35ce766e570d9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Nov 2025 20:35:20 +0900 Subject: [PATCH 173/295] Support to generate release note when beta2 released --- tool/release.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tool/release.rb b/tool/release.rb index 0098cf529d6d..8e6fee0a1c01 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -158,6 +158,10 @@ def initialize(version) @previous_stable_branch = @level == :minor_or_major ? "#{segments[0]}.#{segments[1] - 1}" : @stable_branch @previous_stable_branch = "3.7" if @stable_branch == "4.0" + if segments.size == 5 && segments[4] > 1 + @previous_prerelease = "#{segments[0]}.#{segments[1]}.#{segments[2]}.#{segments[3]}.#{segments[4] - 1}" + end + rubygems_version = segments.join(".").gsub(/([a-z])\.(\d)/i, '\1\2') @rubygems = Rubygems.new(rubygems_version, @stable_branch) @@ -321,11 +325,15 @@ def scan_unreleased_pull_requests(ids) def unreleased_pr_ids stable_merge_commit_messages = `git log --format=%s --grep "^Merge pull request #" #{@previous_stable_branch}`.split("\n") + prerelease_merge_commit_messages = [] + if @previous_prerelease + prerelease_merge_commit_messages = `git log --format=%s --grep "^Merge pull request #" #{@previous_stable_branch}..#{@previous_prerelease}`.split("\n") + end `git log --oneline --grep "^Merge pull request #" origin/master`.split("\n").filter_map do |l| _sha, message = l.split(/\s/, 2) - next if stable_merge_commit_messages.include?(message) + next if stable_merge_commit_messages.include?(message) || prerelease_merge_commit_messages.include?(message) /^Merge pull request #(\d+)/.match(message)[1].to_i end From 74f799b68e5044df758346ec4848ea4c830f27f9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 20 Nov 2025 07:51:20 +0900 Subject: [PATCH 174/295] Apply suggestion from @kou Co-authored-by: Sutou Kouhei --- tool/release.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index 8e6fee0a1c01..9cad0b8f7964 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -103,12 +103,11 @@ def extra_entry private def bundler_version - v = if version.segments[0] >= 4 - version + if version.segments[0] >= 4 + version.to_s.gsub(/([a-z])\.(\d)/i, '\1\2') else version.segments.map.with_index {|s, i| i == 0 ? s - 1 : s }.join(".") end - v.to_s.gsub(/([a-z])\.(\d)/i, '\1\2') end end @@ -133,7 +132,6 @@ def self.for_bundler(version) else segments.map.with_index {|s, i| i == 0 ? s + 1 : s }.join(".") end - rubygems_version.gsub(/([a-z])\.(\d)/i, '\1\2') release = new(rubygems_version) release.set_bundler_as_current_library @@ -165,7 +163,7 @@ def initialize(version) rubygems_version = segments.join(".").gsub(/([a-z])\.(\d)/i, '\1\2') @rubygems = Rubygems.new(rubygems_version, @stable_branch) - bundler_version = if segments[0] == 4 + bundler_version = if segments[0] >= 4 segments.join(".") else segments.map.with_index {|s, i| i == 0 ? s - 1 : s }.join(".") From 4a13684f07ebb1dea5501e3f826fab414f96bf47 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 20 Nov 2025 07:55:04 +0900 Subject: [PATCH 175/295] Use noop option and pass command Array instead of String Co-authored-by: Sutou Kouhei --- Rakefile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Rakefile b/Rakefile index b617a4b384d4..0371ce5301f6 100644 --- a/Rakefile +++ b/Rakefile @@ -186,11 +186,7 @@ end desc "Release rubygems-#{v}" task release: :prerelease do Rake::Task["package"].invoke - if ENV["DRYRUN"] - puts "DRYRUN mode: skipping push gem to rubygems.org" - else - sh "gem push pkg/rubygems-update-#{v}.gem" - end + sh "gem", "push", "pkg/rubygems-update-#{v}.gem", noop: ENV["DRYRUN"] Rake::Task["postrelease"].invoke end From 9be811c01a4cc759a6de5e8f24c4e60bd45fb147 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 20 Nov 2025 10:05:16 +0900 Subject: [PATCH 176/295] Bump up to 4.0.0.beta1 --- CHANGELOG.md | 90 +++++++++++++++++++ bundler/CHANGELOG.md | 73 +++++++++++++++ bundler/lib/bundler/version.rb | 2 +- .../realworld/fixtures/tapioca/Gemfile.lock | 2 +- .../realworld/fixtures/warbler/Gemfile.lock | 2 +- lib/rubygems.rb | 2 +- rubygems-update.gemspec | 2 +- tool/bundler/dev_gems.rb.lock | 2 +- tool/bundler/lint_gems.rb.lock | 2 +- tool/bundler/release_gems.rb.lock | 2 +- tool/bundler/rubocop_gems.rb.lock | 2 +- tool/bundler/standard_gems.rb.lock | 2 +- tool/bundler/test_gems.rb.lock | 2 +- tool/bundler/vendor_gems.rb.lock | 2 +- 14 files changed, 175 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42b9b93bb217..fa269d387a1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,95 @@ # Changelog +## 4.0.0.beta1 / 2025-11-20 + +### Security: + +* Bump up vendored URI to 1.0.4. Pull request + [#9031](https://github.com/ruby/rubygems/pull/9031) by hsbt + +### Breaking changes: + +* Removed deprecated `-C` option from gem build. Pull request + [#9088](https://github.com/ruby/rubygems/pull/9088) by hsbt +* Removed deprecated Gem::Specification#has_rdoc, has_rdoc= and has_rdoc?. + Pull request [#9084](https://github.com/ruby/rubygems/pull/9084) by hsbt +* Removed deprecated `gem query` command. Pull request + [#9083](https://github.com/ruby/rubygems/pull/9083) by hsbt +* Removed deprecated Gem::DependencyInstaller#find_gems_with_sources. Pull + request [#9082](https://github.com/ruby/rubygems/pull/9082) by hsbt +* Remove deprecated methods of RubyGems. Pull request + [#9081](https://github.com/ruby/rubygems/pull/9081) by hsbt +* Make verification methods private. Pull request + [#9051](https://github.com/ruby/rubygems/pull/9051) by tenderlove +* Deprecate `--default` option from install command. Pull request + [#7588](https://github.com/ruby/rubygems/pull/7588) by hsbt +* Switch to 4.0.0.dev in development version. Pull request + [#9002](https://github.com/ruby/rubygems/pull/9002) by hsbt +* Removed `compatibility.rb` for RG 4.0. Pull request + [#8899](https://github.com/ruby/rubygems/pull/8899) by hsbt + +### Deprecations: + +* Deprecate `Gem::Specification#datadir`. Pull request + [#8900](https://github.com/ruby/rubygems/pull/8900) by hsbt + +### Features: + +* Undeprecate `Gem::Version.new(nil)`. Pull request + [#9086](https://github.com/ruby/rubygems/pull/9086) by tenderlove +* Add pattern matching support to Gem::NameTuple. Pull request + [#9064](https://github.com/ruby/rubygems/pull/9064) by baweaver +* Add pattern matching support to Gem::Platform. Pull request + [#9062](https://github.com/ruby/rubygems/pull/9062) by baweaver + +### Performance: + +* Remove some memoization. Pull request + [#9017](https://github.com/ruby/rubygems/pull/9017) by tenderlove +* Pull `Gem.win_platform?` out of a hot path. Pull request + [#8983](https://github.com/ruby/rubygems/pull/8983) by tenderlove +* Stop trying to remove every file on extraction. Pull request + [#8974](https://github.com/ruby/rubygems/pull/8974) by tenderlove +* Use `IO.copy_stream` with IO object directly. Pull request + [#8970](https://github.com/ruby/rubygems/pull/8970) by tenderlove +* Pass a file size to `IO.copy_stream`. Pull request + [#8966](https://github.com/ruby/rubygems/pull/8966) by tenderlove +* Use File#chmod rather than FileUtils.chmod. Pull request + [#8965](https://github.com/ruby/rubygems/pull/8965) by tenderlove + +### Enhancements: + +* Update all vendored libraries to latest version. Pull request + [#9089](https://github.com/ruby/rubygems/pull/9089) by hsbt +* Removed unused `Gem::Deprecate`. Pull request + [#9090](https://github.com/ruby/rubygems/pull/9090) by hsbt +* Test all tests of `make test-all` by ruby core. Pull request + [#9075](https://github.com/ruby/rubygems/pull/9075) by hsbt +* Add debug logging information to see the time it took to download and + install a gem. Pull request + [#9066](https://github.com/ruby/rubygems/pull/9066) by Edouard-chin +* Use `assert_ractor` for testing Ractor. Pull request + [#9069](https://github.com/ruby/rubygems/pull/9069) by hsbt +* Fix constants in TAR to be frozen. Pull request + [#9041](https://github.com/ruby/rubygems/pull/9041) by tenderlove +* Remove open-ended and prerelease dependency warnings when building gems. + Pull request [#9050](https://github.com/ruby/rubygems/pull/9050) by + jeremyevans +* Revamp CmakeBuilder. Pull request + [#8753](https://github.com/ruby/rubygems/pull/8753) by cfis +* Restrict what schemes are acceptable in the remote fetcher. Pull request + [#9022](https://github.com/ruby/rubygems/pull/9022) by tenderlove +* Don't fail if there is no makefile, simply don't do anything. Pull + request [#8879](https://github.com/ruby/rubygems/pull/8879) by ioquatix +* Installs bundler 4.0.0.beta1 as a default gem. + +### Documentation: + +* [DOC] Fix the location of Gem::Deprecate document. Pull request + [#9065](https://github.com/ruby/rubygems/pull/9065) by nobu +* Fix typo. Pull request + [#9012](https://github.com/ruby/rubygems/pull/9012) by etiennebarrie + ## 3.7.2 / 2025-09-09 ### Enhancements: diff --git a/bundler/CHANGELOG.md b/bundler/CHANGELOG.md index 0363eaa5c3c7..ae06b9c0b4d4 100644 --- a/bundler/CHANGELOG.md +++ b/bundler/CHANGELOG.md @@ -1,5 +1,78 @@ # Changelog +## 4.0.0.beta1 (2025-11-20) + +### Security: + + - Bump up vendored URI to 1.0.4 [#9031](https://github.com/ruby/rubygems/pull/9031) + +### Breaking changes: + + - Fix triple spacing when generating lockfile [#9076](https://github.com/ruby/rubygems/pull/9076) + - Hide patchlevel from lockfile [#7772](https://github.com/ruby/rubygems/pull/7772) + - Remove `bundler_4_mode` [#9038](https://github.com/ruby/rubygems/pull/9038) + - Pick and add extra changes for 4.0.0 version [#9018](https://github.com/ruby/rubygems/pull/9018) + - Replaced Bundler::SharedHelpers.major_deprecation to feature_removed! or feature_deprecated! [#9016](https://github.com/ruby/rubygems/pull/9016) + - Removed legacy_check option from SpecSet#for [#9015](https://github.com/ruby/rubygems/pull/9015) + - Removed deprecated legacy windows platform support [#9013](https://github.com/ruby/rubygems/pull/9013) + - Make update_requires_all_flag to settings [#9011](https://github.com/ruby/rubygems/pull/9011) + - Make default cli command settings [#9010](https://github.com/ruby/rubygems/pull/9010) + - Make global_gem_cache flag to settings [#9009](https://github.com/ruby/rubygems/pull/9009) + - Consolidate removal of `Bundler.rubygems.all_specs` [#9008](https://github.com/ruby/rubygems/pull/9008) + - Consolidate removal of `Bundler::SpecSet#-` and `Bundler::SpecSet#<<` [#9007](https://github.com/ruby/rubygems/pull/9007) + - Replaced Bundler.feature_flag.plugins? to Bundler.settings [#9006](https://github.com/ruby/rubygems/pull/9006) + - Switch to 4.0.0.dev in development version [#9002](https://github.com/ruby/rubygems/pull/9002) + - Make `bundle show --outdated` raise an error [#8980](https://github.com/ruby/rubygems/pull/8980) + - Make `--local-git` flag to `bundle plugin install` raise an error [#8979](https://github.com/ruby/rubygems/pull/8979) + - Switch `cache_all` to be `true` by default [#8975](https://github.com/ruby/rubygems/pull/8975) + - Completely forbid passing `--ext` to `bundle gem` without a value [#8976](https://github.com/ruby/rubygems/pull/8976) + - Switch `lockfile_checksums` to be `true` by default [#8981](https://github.com/ruby/rubygems/pull/8981) + - Make `bundle install --binstubs` raise an error [#8978](https://github.com/ruby/rubygems/pull/8978) + - Make `bundle remove --install` raise an error [#8977](https://github.com/ruby/rubygems/pull/8977) + - Remove support for multiple global sources in Gemfile & lockfile [#8968](https://github.com/ruby/rubygems/pull/8968) + - Remove `allow_offline_install` setting [#8969](https://github.com/ruby/rubygems/pull/8969) + - Completely remove `--rubocop` flag to `bundle gem`, and related configuration [#8967](https://github.com/ruby/rubygems/pull/8967) + - Completely remove all remembered CLI flags [#8958](https://github.com/ruby/rubygems/pull/8958) + - Remove implementation of `deployment`, `capistrano` and `vlad` entrypoints [#8957](https://github.com/ruby/rubygems/pull/8957) + - Remove deprecated `Bundler.*clean*`, and `Bundler.environment` helpers [#8924](https://github.com/ruby/rubygems/pull/8924) + - Remove deprecated `bundle viz` and `bundle inject` commands [#8923](https://github.com/ruby/rubygems/pull/8923) + - Removed to workaround for Bundler 2.2 [#8903](https://github.com/ruby/rubygems/pull/8903) + +### Features: + + - Update Bundler::CurrentRuby::ALL_RUBY_VERSIONS [#9058](https://github.com/ruby/rubygems/pull/9058) + - Introduce `bundle list --format=json` [#8728](https://github.com/ruby/rubygems/pull/8728) + +### Performance: + + - Replace instance method look up in plugin installer [#9094](https://github.com/ruby/rubygems/pull/9094) + - Adjust the API_REQUEST_LIMIT to make less network roundtrip [#9071](https://github.com/ruby/rubygems/pull/9071) + +### Enhancements: + + - Use DidYouMean::SpellChecker for gem suggestions in Bundler [#3857](https://github.com/ruby/rubygems/pull/3857) + - Update all vendored libraries to latest version [#9089](https://github.com/ruby/rubygems/pull/9089) + - We don't need to allow some warning now [#9074](https://github.com/ruby/rubygems/pull/9074) + - Shell out fewer times [#9068](https://github.com/ruby/rubygems/pull/9068) + - Build gems directly instead of shelling out [#9053](https://github.com/ruby/rubygems/pull/9053) + - Support to embedded Pathname [#9056](https://github.com/ruby/rubygems/pull/9056) + - Forcely activate irb when running with bundle console [#9033](https://github.com/ruby/rubygems/pull/9033) + - Update Magnus version in Rust extension gem template [#9025](https://github.com/ruby/rubygems/pull/9025) + - Postpone to remove legacy mingw platform [#9023](https://github.com/ruby/rubygems/pull/9023) + - Add checksum of gems hosted on private servers: [#9004](https://github.com/ruby/rubygems/pull/9004) + - Loading support on Windows [#8254](https://github.com/ruby/rubygems/pull/8254) + +### Bug fixes: + + - Fix `bundle install` when the Gemfile contains "install_if" git gems: [#8992](https://github.com/ruby/rubygems/pull/8992) + - Fix installation issue related to path sources and precompiled gems [#8973](https://github.com/ruby/rubygems/pull/8973) + - Fix outdated lockfile during `bundle lock` when source changes [#8962](https://github.com/ruby/rubygems/pull/8962) + - Raise error on missing version file [#8963](https://github.com/ruby/rubygems/pull/8963) + +### Documentation: + + - Small clarifications to Bundler 4 upgrade docs [#8964](https://github.com/ruby/rubygems/pull/8964) + ## 2.7.2 (2025-09-09) ### Enhancements: diff --git a/bundler/lib/bundler/version.rb b/bundler/lib/bundler/version.rb index 0715f6dfee58..4acf10c6153e 100644 --- a/bundler/lib/bundler/version.rb +++ b/bundler/lib/bundler/version.rb @@ -1,7 +1,7 @@ # frozen_string_literal: false module Bundler - VERSION = "4.0.0.dev".freeze + VERSION = "4.0.0.beta1".freeze def self.bundler_major_version @bundler_major_version ||= gem_version.segments.first diff --git a/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock index 2a6c3178ef05..4a96e12169b7 100644 --- a/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock +++ b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock @@ -46,4 +46,4 @@ DEPENDENCIES tapioca BUNDLED WITH - 4.0.0.dev + 4.0.0.beta1 diff --git a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock index 7ba3fe68befa..8a13873f01b2 100644 --- a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock +++ b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock @@ -36,4 +36,4 @@ DEPENDENCIES warbler! BUNDLED WITH - 4.0.0.dev + 4.0.0.beta1 diff --git a/lib/rubygems.rb b/lib/rubygems.rb index db1da659f9d5..c398c985f585 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -9,7 +9,7 @@ require "rbconfig" module Gem - VERSION = "4.0.0.dev" + VERSION = "4.0.0.beta1" end require_relative "rubygems/defaults" diff --git a/rubygems-update.gemspec b/rubygems-update.gemspec index e5eaed40e3df..ef52a2c0edf2 100644 --- a/rubygems-update.gemspec +++ b/rubygems-update.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |s| s.name = "rubygems-update" - s.version = "4.0.0.dev" + s.version = "4.0.0.beta1" s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"] s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"] diff --git a/tool/bundler/dev_gems.rb.lock b/tool/bundler/dev_gems.rb.lock index dbb6218f9ca9..29e0a574bba8 100644 --- a/tool/bundler/dev_gems.rb.lock +++ b/tool/bundler/dev_gems.rb.lock @@ -129,4 +129,4 @@ CHECKSUMS turbo_tests (2.2.5) sha256=3fa31497d12976d11ccc298add29107b92bda94a90d8a0a5783f06f05102509f BUNDLED WITH - 4.0.0.dev + 4.0.0.beta1 diff --git a/tool/bundler/lint_gems.rb.lock b/tool/bundler/lint_gems.rb.lock index 0a219f309ecf..699d0c206fcc 100644 --- a/tool/bundler/lint_gems.rb.lock +++ b/tool/bundler/lint_gems.rb.lock @@ -119,4 +119,4 @@ CHECKSUMS wmi-lite (1.0.7) sha256=116ef5bb470dbe60f58c2db9047af3064c16245d6562c646bc0d90877e27ddda BUNDLED WITH - 4.0.0.dev + 4.0.0.beta1 diff --git a/tool/bundler/release_gems.rb.lock b/tool/bundler/release_gems.rb.lock index 9ae886283832..df753e5c24e4 100644 --- a/tool/bundler/release_gems.rb.lock +++ b/tool/bundler/release_gems.rb.lock @@ -87,4 +87,4 @@ CHECKSUMS uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 BUNDLED WITH - 4.0.0.dev + 4.0.0.beta1 diff --git a/tool/bundler/rubocop_gems.rb.lock b/tool/bundler/rubocop_gems.rb.lock index 84ce9bd4fda5..10a81012e4d6 100644 --- a/tool/bundler/rubocop_gems.rb.lock +++ b/tool/bundler/rubocop_gems.rb.lock @@ -156,4 +156,4 @@ CHECKSUMS unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5 BUNDLED WITH - 4.0.0.dev + 4.0.0.beta1 diff --git a/tool/bundler/standard_gems.rb.lock b/tool/bundler/standard_gems.rb.lock index e8a2cbd53e8b..8f4eba83c51b 100644 --- a/tool/bundler/standard_gems.rb.lock +++ b/tool/bundler/standard_gems.rb.lock @@ -176,4 +176,4 @@ CHECKSUMS unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5 BUNDLED WITH - 4.0.0.dev + 4.0.0.beta1 diff --git a/tool/bundler/test_gems.rb.lock b/tool/bundler/test_gems.rb.lock index ffcfb7a3e129..8c8c9b774365 100644 --- a/tool/bundler/test_gems.rb.lock +++ b/tool/bundler/test_gems.rb.lock @@ -100,4 +100,4 @@ CHECKSUMS tilt (2.6.1) sha256=35a99bba2adf7c1e362f5b48f9b581cce4edfba98117e34696dde6d308d84770 BUNDLED WITH - 4.0.0.dev + 4.0.0.beta1 diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index cc7886e60b60..1c8889d4d229 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -72,4 +72,4 @@ CHECKSUMS uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 BUNDLED WITH - 4.0.0.dev + 4.0.0.beta1 From 38dd1c810a735d7c8bda752fcf9cfece1e5944ee Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 20 Nov 2025 14:41:46 +0900 Subject: [PATCH 177/295] Guard task for required environmental variables --- Rakefile | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 0371ce5301f6..d742aadb8f62 100644 --- a/Rakefile +++ b/Rakefile @@ -260,6 +260,7 @@ task :upload do if ENV["DRYRUN"] puts "DRYRUN mode: skipping upload to GitHub and S3" else + Rake::Task["check_release_preparations"].invoke Rake::Task["upload_to_github"].invoke Rake::Task["upload_to_s3"].invoke end @@ -593,6 +594,16 @@ task :check_rubygems_integration do sh("ruby -Ilib -S gem install psych:5.1.1 psych:5.1.2 rdoc && ruby -Ibundler/lib -rrdoc/task -rbundler/rubygems_ext -e1") end +desc "Check release preparations" +task :check_release_preparations do + %w[AWS_PROFILE GITHUB_RELEASE_PAT].each do |env_var| + if ENV[env_var].nil? || ENV[env_var] == "" + puts "Environment variable #{env_var} is not set" + raise unless ENV["DRYRUN"] + end + end +end + namespace :man do if RUBY_ENGINE == "jruby" task(:build) {} @@ -677,7 +688,7 @@ namespace :bundler do end desc "Push to rubygems.org" - task "release:rubygem_push" => ["bundler:release:setup", "man:check", "bundler:build_metadata", "bundler:release:github"] + task "release:rubygem_push" => ["bundler:release:setup", "man:check", "bundler:build_metadata", "check_release_preparations", "bundler:release:github"] desc "Generates the Bundler changelog for a specific target version" task :generate_changelog, [:version] => [:install_release_dependencies] do |_t, opts| From 456b6ceeca30b240054d4757d2c0178b97c28a5b Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 20 Nov 2025 14:58:48 +0900 Subject: [PATCH 178/295] Ignore target_commitish params with prerelease version --- tool/release.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index 9cad0b8f7964..af484cbfa61c 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -40,10 +40,14 @@ def bump_versions! def create_for_github! tag = "#{@tag_prefix}#{@version}" - gh_client.create_release "ruby/rubygems", tag, name: tag, - body: @changelog.release_notes.join("\n").strip, - prerelease: @version.prerelease?, - target_commitish: @stable_branch + options = { + name: tag, + body: @changelog.release_notes.join("\n").strip, + prerelease: @version.prerelease? + } + options[:target_commitish] = @stable_branch unless @version.prerelease? + + gh_client.create_release "ruby/rubygems", tag, **options end def previous_version From 4968b1b222e741c28af2526fd791b70a754ecc0f Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 20 Nov 2025 15:09:56 +0900 Subject: [PATCH 179/295] Added Bundler release note and update instruction --- Rakefile | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Rakefile b/Rakefile index d742aadb8f62..137db99f7e69 100644 --- a/Rakefile +++ b/Rakefile @@ -374,7 +374,8 @@ namespace "blog" do email = `git config --get user.email`.strip require_relative "tool/changelog" - history = Changelog.for_rubygems(v.to_s) + rubygems_history = Changelog.for_rubygems(v.to_s) + bundler_history = Changelog.for_bundler(v.to_s) require "tempfile" @@ -387,15 +388,27 @@ author: #{name} author_email: #{email} --- -RubyGems #{v} includes #{history.change_types_for_blog}. +RubyGems #{v} includes #{rubygems_history.change_types_for_blog} and Bundler #{v} includes #{bundler_history.change_types_for_blog}. To update to the latest RubyGems you can run: - gem update --system + gem update --system [--pre] -To install RubyGems by hand see the [Download RubyGems][download] page. +To update to the latest Bundler you can run: + + gem install bundler [--pre] + +## RubyGems Release Notes + +#{rubygems_history.release_notes_for_blog.join("\n")} -#{history.release_notes_for_blog.join("\n")} +## Bundler Release Notes + +#{bundler_history.release_notes_for_blog.join("\n")} + +## Manual Installation + +To install RubyGems by hand see the [Download RubyGems][download] page. SHA256 Checksums: From d4b10228c7637278a4a028038ba34d6fc3252711 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 20 Nov 2025 15:23:19 +0900 Subject: [PATCH 180/295] bin/rubocop -a --- tool/release.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/release.rb b/tool/release.rb index af484cbfa61c..acb5bce0b45b 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -43,7 +43,7 @@ def create_for_github! options = { name: tag, body: @changelog.release_notes.join("\n").strip, - prerelease: @version.prerelease? + prerelease: @version.prerelease?, } options[:target_commitish] = @stable_branch unless @version.prerelease? From 68c39c8451be5fc4a3658642ea93a8752407fab2 Mon Sep 17 00:00:00 2001 From: eileencodes Date: Wed, 19 Nov 2025 12:08:43 -0500 Subject: [PATCH 181/295] Improve error messages and handling in tests This is a first pass to improve the way errors are handled and raised in bundler's tests. The goal is to clean up tests and modernize them - these were some obvious areas that could be cleaned up. - Instead of raising "ZOMG" in the load error tests, it now tests for the actual error and gem raising. - Improve error messages where applicable. - All errors raise a specific error class, rather than falling back to a default and just setting a message. - Removed arguments and `bundle_dir` option from `TheBundle` class as it wasn't actually used so therefore we don't need to raise an error for extra arguments. - Removed error from `BundlerBuilder`, as it won't work if it's not `bundler`, also it never uses `name`. The only reaon `name` is passed in is because of metaprogramming on loading the right builder. I think that should eventually be refactored. - Replaced and removed `update_repo3` and `update_repo4` in favor of just `build_repo3` and `build_repo4`. Rather than tell someone writing tests to use a different method, automatically use the right method. --- bundler/spec/bundler/retry_spec.rb | 2 +- bundler/spec/commands/exec_spec.rb | 4 +-- bundler/spec/commands/install_spec.rb | 7 ++-- bundler/spec/commands/lock_spec.rb | 4 +-- bundler/spec/commands/update_spec.rb | 6 ++-- bundler/spec/install/gemfile/gemspec_spec.rb | 7 ++-- bundler/spec/install/gemfile/groups_spec.rb | 6 ++-- bundler/spec/install/gemfile/sources_spec.rb | 2 +- .../spec/install/gems/compact_index_spec.rb | 6 ++-- .../install/gems/native_extensions_spec.rb | 8 ++--- bundler/spec/install/gems/standalone_spec.rb | 8 ++--- bundler/spec/plugins/install_spec.rb | 2 +- bundler/spec/realworld/edgecases_spec.rb | 2 +- bundler/spec/runtime/setup_spec.rb | 32 +++++++++++-------- .../artifice/compact_index_etag_match.rb | 2 +- bundler/spec/support/builders.rb | 26 ++++++++------- bundler/spec/support/helpers.rb | 12 +++---- bundler/spec/support/matchers.rb | 2 +- bundler/spec/support/the_bundle.rb | 8 ++--- 19 files changed, 76 insertions(+), 70 deletions(-) diff --git a/bundler/spec/bundler/retry_spec.rb b/bundler/spec/bundler/retry_spec.rb index ffbc07807429..7481622a967d 100644 --- a/bundler/spec/bundler/retry_spec.rb +++ b/bundler/spec/bundler/retry_spec.rb @@ -12,7 +12,7 @@ end it "returns the first valid result" do - jobs = [proc { raise "foo" }, proc { :bar }, proc { raise "foo" }] + jobs = [proc { raise "job 1 failed" }, proc { :bar }, proc { raise "job 2 failed" }] attempts = 0 result = Bundler::Retry.new(nil, nil, 3).attempt do attempts += 1 diff --git a/bundler/spec/commands/exec_spec.rb b/bundler/spec/commands/exec_spec.rb index 03f1d839c76c..1ac308bdda4b 100644 --- a/bundler/spec/commands/exec_spec.rb +++ b/bundler/spec/commands/exec_spec.rb @@ -1034,7 +1034,7 @@ def bin_path(a,b,c) puts 'Started' # For process sync STDOUT.flush sleep 1 # ignore quality_spec - raise "Didn't receive INT at all" + raise RuntimeError, "Didn't receive expected INT" end.join rescue Interrupt puts "foo" @@ -1218,7 +1218,7 @@ def require(path) build_repo4 do build_gem "openssl", openssl_version do |s| s.write("lib/openssl.rb", <<-RUBY) - raise "custom openssl should not be loaded, it's not in the gemfile!" + raise ArgumentError, "custom openssl should not be loaded" RUBY end end diff --git a/bundler/spec/commands/install_spec.rb b/bundler/spec/commands/install_spec.rb index 3ab7d4ab8800..0dbe950f87b6 100644 --- a/bundler/spec/commands/install_spec.rb +++ b/bundler/spec/commands/install_spec.rb @@ -688,13 +688,12 @@ it "fails gracefully when downloading an invalid specification from the full index" do build_repo2(build_compact_index: false) do build_gem "ajp-rails", "0.0.0", gemspec: false, skip_validation: true do |s| - bad_deps = [["ruby-ajp", ">= 0.2.0"], ["rails", ">= 0.14"]] + invalid_deps = [["ruby-ajp", ">= 0.2.0"], ["rails", ">= 0.14"]] s. instance_variable_get(:@spec). - instance_variable_set(:@dependencies, bad_deps) - - raise "failed to set bad deps" unless s.dependencies == bad_deps + instance_variable_set(:@dependencies, invalid_deps) end + build_gem "ruby-ajp", "1.0.0" end diff --git a/bundler/spec/commands/lock_spec.rb b/bundler/spec/commands/lock_spec.rb index 6ba69d466a9b..ab1926734c1e 100644 --- a/bundler/spec/commands/lock_spec.rb +++ b/bundler/spec/commands/lock_spec.rb @@ -834,7 +834,7 @@ bundle "lock --update --bundler --verbose", artifice: "compact_index", env: { "BUNDLER_SPEC_GEM_REPO" => gem_repo4.to_s } expect(lockfile).to end_with("BUNDLED WITH\n 55\n") - update_repo4 do + build_repo4 do build_gem "bundler", "99" end @@ -1456,7 +1456,7 @@ before do gemfile_with_rails_weakling_and_foo_from_repo4 - update_repo4 do + build_repo4 do build_gem "foo", "2.0" end diff --git a/bundler/spec/commands/update_spec.rb b/bundler/spec/commands/update_spec.rb index 61d8ece2798a..cdaeb75c4a33 100644 --- a/bundler/spec/commands/update_spec.rb +++ b/bundler/spec/commands/update_spec.rb @@ -247,7 +247,7 @@ expect(the_bundle).to include_gems("slim 3.0.9", "slim-rails 3.1.3", "slim_lint 0.16.1") - update_repo4 do + build_repo4 do build_gem "slim", "4.0.0" do |s| s.add_dependency "tilt", [">= 2.0.6", "< 2.1"] end @@ -572,7 +572,7 @@ expect(the_bundle).to include_gems("a 1.0", "b 1.0", "c 2.0") - update_repo4 do + build_repo4 do build_gem "b", "2.0" do |s| s.add_dependency "c", "< 2" end @@ -976,7 +976,7 @@ bundle "update", all: true expect(out).to match(/Resolving dependencies\.\.\.\.*\nBundle updated!/) - update_repo4 do + build_repo4 do build_gem "foo", "2.0" end diff --git a/bundler/spec/install/gemfile/gemspec_spec.rb b/bundler/spec/install/gemfile/gemspec_spec.rb index daa977fc9b7f..3d9766d21ff6 100644 --- a/bundler/spec/install/gemfile/gemspec_spec.rb +++ b/bundler/spec/install/gemfile/gemspec_spec.rb @@ -420,12 +420,13 @@ end build_lib "foo", path: bundled_app do |s| - if platform_specific_type == :runtime + case platform_specific_type + when :runtime s.add_runtime_dependency dependency - elsif platform_specific_type == :development + when :development s.add_development_dependency dependency else - raise "wrong dependency type #{platform_specific_type}, can only be :development or :runtime" + raise ArgumentError, "wrong dependency type #{platform_specific_type}, can only be :development or :runtime" end end diff --git a/bundler/spec/install/gemfile/groups_spec.rb b/bundler/spec/install/gemfile/groups_spec.rb index 32de3f2be2dc..4727d5ef9b02 100644 --- a/bundler/spec/install/gemfile/groups_spec.rb +++ b/bundler/spec/install/gemfile/groups_spec.rb @@ -25,7 +25,7 @@ puts ACTIVESUPPORT R - expect(err_without_deprecations).to eq("ZOMG LOAD ERROR") + expect(err_without_deprecations).to match(/cannot load such file -- activesupport/) end it "installs gems with inline :groups into those groups" do @@ -36,7 +36,7 @@ puts THIN R - expect(err_without_deprecations).to eq("ZOMG LOAD ERROR") + expect(err_without_deprecations).to match(/cannot load such file -- thin/) end it "sets up everything if Bundler.setup is used with no groups" do @@ -57,7 +57,7 @@ puts THIN RUBY - expect(err_without_deprecations).to eq("ZOMG LOAD ERROR") + expect(err_without_deprecations).to match(/cannot load such file -- thin/) end it "sets up old groups when they have previously been removed" do diff --git a/bundler/spec/install/gemfile/sources_spec.rb b/bundler/spec/install/gemfile/sources_spec.rb index bdc61c2b2694..c0b4d98f1c5c 100644 --- a/bundler/spec/install/gemfile/sources_spec.rb +++ b/bundler/spec/install/gemfile/sources_spec.rb @@ -570,7 +570,7 @@ bundle :install, artifice: "compact_index" # And then we add some new versions... - update_repo4 do + build_repo4 do build_gem "foo", "0.2" build_gem "bar", "0.3" end diff --git a/bundler/spec/install/gems/compact_index_spec.rb b/bundler/spec/install/gems/compact_index_spec.rb index cd64f85f9295..bb4d4011f5b9 100644 --- a/bundler/spec/install/gems/compact_index_spec.rb +++ b/bundler/spec/install/gems/compact_index_spec.rb @@ -770,7 +770,7 @@ def start gem 'myrack', '0.9.1' G - update_repo4 do + build_repo4 do build_gem "myrack", "1.0.0" end @@ -811,7 +811,7 @@ def start gem 'myrack', '0.9.1' G - update_repo4 do + build_repo4 do build_gem "myrack", "1.0.0" end @@ -833,7 +833,7 @@ def start gem 'myrack', '0.9.1' G - update_repo4 do + build_repo4 do build_gem "myrack", "1.0.0" end diff --git a/bundler/spec/install/gems/native_extensions_spec.rb b/bundler/spec/install/gems/native_extensions_spec.rb index 874818fa874f..7f230d132b9e 100644 --- a/bundler/spec/install/gems/native_extensions_spec.rb +++ b/bundler/spec/install/gems/native_extensions_spec.rb @@ -9,7 +9,7 @@ require "mkmf" name = "c_extension_bundle" dir_config(name) - raise "OMG" unless with_config("c_extension") == "hello" + raise ArgumentError unless with_config("c_extension") == "hello" create_makefile(name) E @@ -53,7 +53,7 @@ require "mkmf" name = "c_extension_bundle" dir_config(name) - raise "OMG" unless with_config("c_extension") == "hello" + raise ArgumentError unless with_config("c_extension") == "hello" create_makefile(name) E @@ -97,7 +97,7 @@ require "mkmf" name = "c_extension_bundle_#{n}" dir_config(name) - raise "OMG" unless with_config("c_extension_#{n}") == "#{n}" + raise ArgumentError unless with_config("c_extension_#{n}") == "#{n}" create_makefile(name) E @@ -149,7 +149,7 @@ require "mkmf" name = "c_extension_bundle" dir_config(name) - raise "OMG" unless with_config("c_extension") == "hello" && with_config("c_extension_bundle-dir") == "hola" + raise ArgumentError unless with_config("c_extension") == "hello" && with_config("c_extension_bundle-dir") == "hola" create_makefile(name) E diff --git a/bundler/spec/install/gems/standalone_spec.rb b/bundler/spec/install/gems/standalone_spec.rb index d5f6c896cd66..37997ffe4824 100644 --- a/bundler/spec/install/gems/standalone_spec.rb +++ b/bundler/spec/install/gems/standalone_spec.rb @@ -385,7 +385,7 @@ RUBY expect(out).to eq("2.3.2") - expect(err).to eq("ZOMG LOAD ERROR") + expect(err_without_deprecations).to match(/cannot load such file -- spec/) end it "allows `without` configuration to limit the groups used in a standalone" do @@ -403,7 +403,7 @@ RUBY expect(out).to eq("2.3.2") - expect(err).to eq("ZOMG LOAD ERROR") + expect(err_without_deprecations).to match(/cannot load such file -- spec/) end it "allows `path` configuration to change the location of the standalone bundle" do @@ -437,7 +437,7 @@ RUBY expect(out).to eq("2.3.2") - expect(err).to eq("ZOMG LOAD ERROR") + expect(err_without_deprecations).to match(/cannot load such file -- spec/) end end @@ -519,6 +519,6 @@ RUBY expect(out).to eq("1.0.0") - expect(err).to eq("ZOMG LOAD ERROR") + expect(err_without_deprecations).to match(/cannot load such file -- spec/) end end diff --git a/bundler/spec/plugins/install_spec.rb b/bundler/spec/plugins/install_spec.rb index 0cddeb09185b..6cace961f522 100644 --- a/bundler/spec/plugins/install_spec.rb +++ b/bundler/spec/plugins/install_spec.rb @@ -168,7 +168,7 @@ def exec(command, args) build_repo2 do build_plugin "chaplin" do |s| s.write "plugins.rb", <<-RUBY - raise "I got you man" + raise RuntimeError, "threw exception on load" RUBY end end diff --git a/bundler/spec/realworld/edgecases_spec.rb b/bundler/spec/realworld/edgecases_spec.rb index 86b4c91a0736..391aa0cef657 100644 --- a/bundler/spec/realworld/edgecases_spec.rb +++ b/bundler/spec/realworld/edgecases_spec.rb @@ -16,7 +16,7 @@ def rubygems_version(name, requirement) index.search(#{name.dump}).select {|spec| requirement.satisfied_by?(spec.version) }.last end if rubygem.nil? - raise "Could not find #{name} (#{requirement}) on rubygems.org!\n" \ + raise ArgumentError, "Could not find #{name} (#{requirement}) on rubygems.org!\n" \ "Found specs:\n\#{index.send(:specs).inspect}" end puts "#{name} (\#{rubygem.version})" diff --git a/bundler/spec/runtime/setup_spec.rb b/bundler/spec/runtime/setup_spec.rb index 9268d9d1cc45..1ffaffef0ed2 100644 --- a/bundler/spec/runtime/setup_spec.rb +++ b/bundler/spec/runtime/setup_spec.rb @@ -728,46 +728,52 @@ def clean_load_path(lp) G run <<-R - File.open(File.join(Gem.dir, "specifications", "broken.gemspec"), "w") do |f| + File.open(File.join(Gem.dir, "specifications", "invalid.gemspec"), "w") do |f| f.write <<-RUBY # -*- encoding: utf-8 -*- -# stub: broken 1.0.0 ruby lib +# stub: invalid 1.0.0 ruby lib Gem::Specification.new do |s| - s.name = "broken" + s.name = "invalid" s.version = "1.0.0" - raise "BROKEN GEMSPEC" + s.authors = ["Invalid Author"] + s.files = ["lib/invalid.rb"] + s.add_dependency "nonexistent-gem", "~> 999.999.999" + s.validate! end RUBY end R run <<-R - File.open(File.join(Gem.dir, "specifications", "broken-ext.gemspec"), "w") do |f| + File.open(File.join(Gem.dir, "specifications", "invalid-ext.gemspec"), "w") do |f| f.write <<-RUBY # -*- encoding: utf-8 -*- -# stub: broken-ext 1.0.0 ruby lib +# stub: invalid-ext 1.0.0 ruby lib # stub: a.ext\\0b.ext Gem::Specification.new do |s| - s.name = "broken-ext" + s.name = "invalid-ext" s.version = "1.0.0" - raise "BROKEN GEMSPEC EXT" + s.authors = ["Invalid Author"] + s.files = ["lib/invalid.rb"] + s.required_ruby_version = "~> 0.8.0" + s.validate! end RUBY end # Need to write the gem.build_complete file, # otherwise the full spec is loaded to check the installed_by_version extensions_dir = Gem.default_ext_dir_for(Gem.dir) || File.join(Gem.dir, "extensions", Gem::Platform.local.to_s, Gem.extension_api_version) - Bundler::FileUtils.mkdir_p(File.join(extensions_dir, "broken-ext-1.0.0")) - File.open(File.join(extensions_dir, "broken-ext-1.0.0", "gem.build_complete"), "w") {} + Bundler::FileUtils.mkdir_p(File.join(extensions_dir, "invalid-ext-1.0.0")) + File.open(File.join(extensions_dir, "invalid-ext-1.0.0", "gem.build_complete"), "w") {} R run <<-R - puts "WIN" + puts "Success" R - expect(out).to eq("WIN") + expect(out).to eq("Success") end it "ignores empty gem paths" do @@ -1151,7 +1157,7 @@ def clean_load_path(lp) bundler_module = class << Bundler; self; end bundler_module.send(:remove_method, :require) def Bundler.require(path) - raise "LOSE" + raise StandardError, "didn't use binding from top level" end Bundler.load RUBY diff --git a/bundler/spec/support/artifice/compact_index_etag_match.rb b/bundler/spec/support/artifice/compact_index_etag_match.rb index 08d7b5ec5391..6c621660513b 100644 --- a/bundler/spec/support/artifice/compact_index_etag_match.rb +++ b/bundler/spec/support/artifice/compact_index_etag_match.rb @@ -4,7 +4,7 @@ class CompactIndexEtagMatch < CompactIndexAPI get "/versions" do - raise "ETag header should be present" unless env["HTTP_IF_NONE_MATCH"] + raise ArgumentError, "ETag header should be present" unless env["HTTP_IF_NONE_MATCH"] headers "ETag" => env["HTTP_IF_NONE_MATCH"] status 304 body "" diff --git a/bundler/spec/support/builders.rb b/bundler/spec/support/builders.rb index 31d4f30a3b96..6087ea8cc8c6 100644 --- a/bundler/spec/support/builders.rb +++ b/bundler/spec/support/builders.rb @@ -187,17 +187,25 @@ def build_repo2(**kwargs, &blk) # A repo that has no pre-installed gems included. (The caller completely # determines the contents with the block.) + # + # If the repo already exists, `#update_repo` will be called. def build_repo3(**kwargs, &blk) - raise "gem_repo3 already exists -- use update_repo3 instead" if File.exist?(gem_repo3) - build_repo gem_repo3, **kwargs, &blk + if File.exist?(gem_repo3) + update_repo(gem_repo3, &blk) + else + build_repo gem_repo3, **kwargs, &blk + end end # Like build_repo3, this is a repo that has no pre-installed gems included. - # We have two different methods for situations where two different empty - # sources are needed. + # + # If the repo already exists, `#udpate_repo` will be called def build_repo4(**kwargs, &blk) - raise "gem_repo4 already exists -- use update_repo4 instead" if File.exist?(gem_repo4) - build_repo gem_repo4, **kwargs, &blk + if File.exist?(gem_repo4) + update_repo gem_repo4, &blk + else + build_repo gem_repo4, **kwargs, &blk + end end def update_repo2(**kwargs, &blk) @@ -208,10 +216,6 @@ def update_repo3(&blk) update_repo(gem_repo3, &blk) end - def update_repo4(&blk) - update_repo(gem_repo4, &blk) - end - def build_security_repo build_repo security_repo do build_gem "myrack" @@ -420,8 +424,6 @@ def required_ruby_version=(*reqs) class BundlerBuilder def initialize(context, name, version) - raise "can only build bundler" unless name == "bundler" - @context = context @spec = Spec::Path.loaded_gemspec.dup @spec.version = version || Bundler::VERSION diff --git a/bundler/spec/support/helpers.rb b/bundler/spec/support/helpers.rb index 12ff09b714a0..52e6ff5d9a31 100644 --- a/bundler/spec/support/helpers.rb +++ b/bundler/spec/support/helpers.rb @@ -28,8 +28,8 @@ def reset! Gem.clear_paths end - def the_bundle(*args) - TheBundle.new(*args) + def the_bundle + TheBundle.new end MAJOR_DEPRECATION = /^\[DEPRECATED\]\s*/ @@ -54,7 +54,7 @@ def load_error_run(ruby, name, *args) begin #{ruby} rescue LoadError => e - warn "ZOMG LOAD ERROR" if e.message.include?("-- #{name}") + warn e.message if e.message.include?("-- #{name}") end RUBY opts = args.last.is_a?(Hash) ? args.pop : {} @@ -132,7 +132,7 @@ def load_error_ruby(ruby, name, opts = {}) begin #{ruby} rescue LoadError => e - warn "ZOMG LOAD ERROR" if e.message.include?("-- #{name}") + warn e.message if e.message.include?("-- #{name}") end R end @@ -324,7 +324,7 @@ def self.install_dev_bundler end def install_gem(path, install_dir, default = false) - raise "OMG `#{path}` does not exist!" unless File.exist?(path) + raise ArgumentError, "`#{path}` does not exist!" unless File.exist?(path) args = "--no-document --ignore-dependencies --verbose --local --install-dir #{install_dir}" @@ -415,7 +415,7 @@ def cache_gems(*gems, gem_repo: gem_repo1) gems.each do |g| path = "#{gem_repo}/gems/#{g}.gem" - raise "OMG `#{path}` does not exist!" unless File.exist?(path) + raise ArgumentError, "`#{path}` does not exist!" unless File.exist?(path) FileUtils.cp(path, "#{bundled_app}/vendor/cache") end end diff --git a/bundler/spec/support/matchers.rb b/bundler/spec/support/matchers.rb index 9f311fc0d77c..5a3c38a4db36 100644 --- a/bundler/spec/support/matchers.rb +++ b/bundler/spec/support/matchers.rb @@ -52,7 +52,7 @@ def failing_matcher end def self.define_compound_matcher(matcher, preconditions, &declarations) - raise "Must have preconditions to define a compound matcher" if preconditions.empty? + raise ArgumentError, "Must have preconditions to define a compound matcher" if preconditions.empty? define_method(matcher) do |*expected, &block_arg| Precondition.new( RSpec::Matchers::DSL::Matcher.new(matcher, declarations, self, *expected, &block_arg), diff --git a/bundler/spec/support/the_bundle.rb b/bundler/spec/support/the_bundle.rb index bda717f3b00b..452abd7d4101 100644 --- a/bundler/spec/support/the_bundle.rb +++ b/bundler/spec/support/the_bundle.rb @@ -8,10 +8,8 @@ class TheBundle attr_accessor :bundle_dir - def initialize(opts = {}) - opts = opts.dup - @bundle_dir = Pathname.new(opts.delete(:bundle_dir) { bundled_app }) - raise "Too many options! #{opts}" unless opts.empty? + def initialize + @bundle_dir = Pathname.new(bundled_app) end def to_s @@ -28,7 +26,7 @@ def lockfile end def locked_gems - raise "Cannot read lockfile if it doesn't exist" unless locked? + raise ArgumentError, "Cannot read lockfile if it doesn't exist" unless locked? Bundler::LockfileParser.new(lockfile.read) end From f0ef526f23439411186bfbbe0ec0eda566e8d106 Mon Sep 17 00:00:00 2001 From: Edouard CHIN Date: Wed, 19 Nov 2025 15:59:08 +0100 Subject: [PATCH 182/295] Run git operations in parallel to speed things up: - ### Problem When you have a Gemfile that contains git gems, each repository will be fetched one by one. This is extremelly slow. A simple Gemfile with 5 git gems (small repositories) can take up to 10 seconds just to fetch the repos. We can speed this up by running multiple git process and fetching repositories silmutaneously. ### Solution The repositories are fetched in Bundler when `Source::Git#specs` is called. The problem is that `source.specs` is called in various places depending on Gemfile. I think the issue is that calling `source.specs` feels like that as a "side effect" we are going to clone repositories. I believe that fetching repositories should be an explicit call. For instance: ```ruby source "https://rubygems.org/" gem "foo", github: "foo/foo" # The repository foo will be fetched as a side effect to the call to `source.spec_names` # https://github.com/ruby/rubygems/blob/6cc7d71dac3d0275c9727cf200c7acfbf6c78d37/bundler/lib/bundler/source_map.rb#L21 ``` ```ruby source "https://rubygems.org/" gem "bar", source: "https://example.org/" gem "foo", github: "foo/foo" # The repository foo will be fetched on a different codepath # https://github.com/ruby/rubygems/blob/6cc7d71dac3d0275c9727cf200c7acfbf6c78d37/bundler/lib/bundler/source/rubygems_aggregate.rb#L35 # That is because the gem "bar" has a source that doesn't have the `/dependencies` API # endpoint and therefore Bundler enters a different branch condition. ``` I opted to add a self explanatory call to fetch the git source repositories just before we start the resolution, and *just* before any other calls to `source.specs` is performed. --- bundler/lib/bundler/definition.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/bundler/lib/bundler/definition.rb b/bundler/lib/bundler/definition.rb index 3c8c13b13031..21f3760e6d9d 100644 --- a/bundler/lib/bundler/definition.rb +++ b/bundler/lib/bundler/definition.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require_relative "lockfile_parser" +require_relative "worker" module Bundler class Definition @@ -1100,7 +1101,23 @@ def source_requirements @source_requirements ||= find_source_requirements end + def preload_git_source_worker + @preload_git_source_worker ||= Bundler::Worker.new(5, "Git source preloading", ->(source, _) { source.specs }) + end + + def preload_git_sources + sources.git_sources.each {|source| preload_git_source_worker.enq(source) } + ensure + preload_git_source_worker.stop + end + def find_source_requirements + if Gem.ruby_version >= "3.3" + # Ruby 3.2 has a bug that incorrectly triggers a circular dependency warning. This version will continue to + # fetch git repositories one by one. + preload_git_sources + end + # Record the specs available in each gem's source, so that those # specs will be available later when the resolver knows where to # look for that gemspec (or its dependencies) From 380653ae74b2d55c3ab893ccc41bfbd28ecf9176 Mon Sep 17 00:00:00 2001 From: Edouard CHIN Date: Wed, 19 Nov 2025 23:15:41 +0100 Subject: [PATCH 183/295] Make the Bundler logger thread safe: - The Logger is not thread safe when calling `with_level`. This now becomes problematic because we are using multiple threads during the resolution phase in order to fetch git gems. --- bundler/lib/bundler/ui/shell.rb | 16 +++++++++------ bundler/spec/bundler/ui/shell_spec.rb | 28 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/bundler/lib/bundler/ui/shell.rb b/bundler/lib/bundler/ui/shell.rb index 6f080b64598f..b836208da8e3 100644 --- a/bundler/lib/bundler/ui/shell.rb +++ b/bundler/lib/bundler/ui/shell.rb @@ -17,6 +17,7 @@ def initialize(options = {}) @level = ENV["DEBUG"] ? "debug" : "info" @warning_history = [] @output_stream = :stdout + @thread_safe_logger_key = "logger_level_#{object_id}" end def add_color(string, *color) @@ -97,11 +98,13 @@ def level=(level) end def level(name = nil) - return @level unless name + current_level = Thread.current.thread_variable_get(@thread_safe_logger_key) || @level + return current_level unless name + unless index = LEVELS.index(name) raise "#{name.inspect} is not a valid level" end - index <= LEVELS.index(@level) + index <= LEVELS.index(current_level) end def output_stream=(symbol) @@ -167,12 +170,13 @@ def word_wrap(text, line_width = Thor::Terminal.terminal_width) end * "\n" end - def with_level(level) - original = @level - @level = level + def with_level(desired_level) + old_level = level + Thread.current.thread_variable_set(@thread_safe_logger_key, desired_level) + yield ensure - @level = original + Thread.current.thread_variable_set(@thread_safe_logger_key, old_level) end def with_output_stream(symbol) diff --git a/bundler/spec/bundler/ui/shell_spec.rb b/bundler/spec/bundler/ui/shell_spec.rb index 422c850a6536..83f147191ef1 100644 --- a/bundler/spec/bundler/ui/shell_spec.rb +++ b/bundler/spec/bundler/ui/shell_spec.rb @@ -81,4 +81,32 @@ end end end + + describe "threads" do + it "is thread safe when using with_level" do + stop_thr1 = false + stop_thr2 = false + + expect(subject.level).to eq("debug") + + thr1 = Thread.new do + subject.silence do + sleep(0.1) until stop_thr1 + end + + stop_thr2 = true + end + + thr2 = Thread.new do + subject.silence do + stop_thr1 = true + sleep(0.1) until stop_thr2 + end + end + + [thr1, thr2].each(&:join) + + expect(subject.level).to eq("debug") + end + end end From e716adb6c9915f04efedc90ada92c94a1a9993c1 Mon Sep 17 00:00:00 2001 From: Edouard CHIN Date: Thu, 20 Nov 2025 01:57:21 +0100 Subject: [PATCH 184/295] Change the logger instance for this spec: - With the logger change that is now threadsafe, such code no longer behaves the same: ```ruby Bundler.ui.silence do Bundler.ui.level = 'info' Bundler.ui.info("foo") # This used to output something. Now it doesn't. end ``` IMHO this is the right behaviour since we are in a silence block, changing the level should have no effect. And fortunately it seems that we only need to change this spec. The call to `Bundler.ui.silence` is done in a `around` block https://github.com/ruby/rubygems/blob/4a13684f07ebb1dea5501e3f826fab414f96bf47/bundler/spec/spec_helper.rb#L119 --- bundler/spec/commands/ssl_spec.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bundler/spec/commands/ssl_spec.rb b/bundler/spec/commands/ssl_spec.rb index b4aca55194e2..4220731b6970 100644 --- a/bundler/spec/commands/ssl_spec.rb +++ b/bundler/spec/commands/ssl_spec.rb @@ -16,16 +16,17 @@ end end - @previous_level = Bundler.ui.level - Bundler.ui.instance_variable_get(:@warning_history).clear - @previous_client = Gem::Request::ConnectionPools.client + @previous_ui = Bundler.ui + Bundler.ui = Bundler::UI::Shell.new Bundler.ui.level = "info" + + @previous_client = Gem::Request::ConnectionPools.client Artifice.activate_with(@dummy_endpoint) Gem::Request::ConnectionPools.client = Gem::Net::HTTP end after(:each) do - Bundler.ui.level = @previous_level + Bundler.ui = @previous_ui Artifice.deactivate Gem::Request::ConnectionPools.client = @previous_client end From 2896aa3fc2ab954695987d434f6e853725628244 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Sat, 8 Nov 2025 16:00:57 -0800 Subject: [PATCH 185/295] Add support for lockfile in Gemfile This allows you to specify the lockfile to use. This is useful if you want to use different lockfiles for different ruby versions or platforms. You can also skip writing the lockfile by using a false value. Co-authored-by: Colby Swandale <996377+colby-swandale@users.noreply.github.com> --- bundler/lib/bundler/definition.rb | 4 +++- bundler/lib/bundler/dsl.rb | 14 +++++++++++++- bundler/lib/bundler/man/gemfile.5 | 19 ++++++++++++++++++- bundler/lib/bundler/man/gemfile.5.ronn | 17 +++++++++++++++++ bundler/spec/commands/install_spec.rb | 22 ++++++++++++++++++++++ 5 files changed, 73 insertions(+), 3 deletions(-) diff --git a/bundler/lib/bundler/definition.rb b/bundler/lib/bundler/definition.rb index 21f3760e6d9d..ca41d7953d8e 100644 --- a/bundler/lib/bundler/definition.rb +++ b/bundler/lib/bundler/definition.rb @@ -10,6 +10,8 @@ class << self attr_accessor :no_lock end + attr_writer :lockfile + attr_reader( :dependencies, :locked_checksums, @@ -380,7 +382,7 @@ def lock(file_or_preserve_unknown_sections = false, preserve_unknown_sections_or end def write_lock(file, preserve_unknown_sections) - return if Definition.no_lock || file.nil? + return if Definition.no_lock || !lockfile || file.nil? contents = to_lock diff --git a/bundler/lib/bundler/dsl.rb b/bundler/lib/bundler/dsl.rb index 998a8134f8e1..13e0783a436e 100644 --- a/bundler/lib/bundler/dsl.rb +++ b/bundler/lib/bundler/dsl.rb @@ -9,8 +9,9 @@ class Dsl def self.evaluate(gemfile, lockfile, unlock) builder = new + builder.lockfile(lockfile) builder.eval_gemfile(gemfile) - builder.to_definition(lockfile, unlock) + builder.to_definition(builder.lockfile_path, unlock) end VALID_PLATFORMS = Bundler::CurrentRuby::PLATFORM_MAP.keys.freeze @@ -38,6 +39,7 @@ def initialize @gemspecs = [] @gemfile = nil @gemfiles = [] + @lockfile = nil add_git_sources end @@ -101,6 +103,15 @@ def gem(name, *args) add_dependency(name, version, options) end + # For usage in Dsl.evaluate, since lockfile is used as part of the Gemfile. + def lockfile_path + @lockfile + end + + def lockfile(file) + @lockfile = file + end + def source(source, *args, &blk) options = args.last.is_a?(Hash) ? args.pop.dup : {} options = normalize_hash(options) @@ -175,6 +186,7 @@ def github(repo, options = {}) def to_definition(lockfile, unlock) check_primary_source_safety + lockfile = @lockfile unless @lockfile.nil? Definition.new(lockfile, @dependencies, @sources, unlock, @ruby_version, @optional_groups, @gemfiles) end diff --git a/bundler/lib/bundler/man/gemfile.5 b/bundler/lib/bundler/man/gemfile.5 index 4e1a63578076..1dbb2618afba 100644 --- a/bundler/lib/bundler/man/gemfile.5 +++ b/bundler/lib/bundler/man/gemfile.5 @@ -469,4 +469,21 @@ For implicit gems (dependencies of explicit gems), any source, git, or path repo .IP "3." 4 If neither of the above conditions are met, the global source will be used\. If multiple global sources are specified, they will be prioritized from last to first, but this is deprecated since Bundler 1\.13, so Bundler prints a warning and will abort with an error in the future\. .IP "" 0 - +.SH "LOCKFILE" +By default, Bundler will create a lockfile by adding \fB\.lock\fR to the end of the Gemfile name\. To change this, use the \fBlockfile\fR method: +.IP "" 4 +.nf +lockfile "/path/to/lockfile\.lock" +.fi +.IP "" 0 +.P +This is useful when you want to use different lockfiles per ruby version or platform\. +.P +To avoid writing a lock file, use \fBfalse\fR as the argument: +.IP "" 4 +.nf +lockfile false +.fi +.IP "" 0 +.P +This is useful for library development and other situations where the code is expected to work with a range of dependency versions\. diff --git a/bundler/lib/bundler/man/gemfile.5.ronn b/bundler/lib/bundler/man/gemfile.5.ronn index 802549737e38..619151aa8801 100644 --- a/bundler/lib/bundler/man/gemfile.5.ronn +++ b/bundler/lib/bundler/man/gemfile.5.ronn @@ -556,3 +556,20 @@ bundler uses the following priority order: If multiple global sources are specified, they will be prioritized from last to first, but this is deprecated since Bundler 1.13, so Bundler prints a warning and will abort with an error in the future. + +## LOCKFILE + +By default, Bundler will create a lockfile by adding `.lock` to the end of the +Gemfile name. To change this, use the `lockfile` method: + + lockfile "/path/to/lockfile.lock" + +This is useful when you want to use different lockfiles per ruby version or +platform. + +To avoid writing a lock file, use `false` as the argument: + + lockfile false + +This is useful for library development and other situations where the code is +expected to work with a range of dependency versions. diff --git a/bundler/spec/commands/install_spec.rb b/bundler/spec/commands/install_spec.rb index 0dbe950f87b6..68232d92de9b 100644 --- a/bundler/spec/commands/install_spec.rb +++ b/bundler/spec/commands/install_spec.rb @@ -29,6 +29,28 @@ expect(bundled_app_lock).to exist end + it "creates lockfile based on the lockfile method in Gemfile" do + install_gemfile <<-G + lockfile "OmgFile.lock" + source "https://gem.repo1/" + gem "myrack", "1.0" + G + + bundle "install" + + expect(bundled_app("OmgFile.lock")).to exist + end + + it "does not make a lockfile if lockfile false is used in Gemfile" do + install_gemfile <<-G + lockfile false + source "https://gem.repo1/" + gem 'myrack' + G + + expect(bundled_app_lock).not_to exist + end + it "does not create ./.bundle by default" do install_gemfile <<-G source "https://gem.repo1/" From 6c946238812a761a1464a0b4215ab7da270e6717 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Sat, 8 Nov 2025 16:03:07 -0800 Subject: [PATCH 186/295] Add support for bundle install --no-lock This allows for the same behavior as including `lockfile false` in the Gemfile. This allows you to get the behavior without modifying the Gemfile, which is useful if you do not control the Gemfile. This is similar to the --no-lock option already supported by `gem install -g Gemfile`. Co-authored-by: Colby Swandale <996377+colby-swandale@users.noreply.github.com> --- bundler/lib/bundler/cli.rb | 1 + bundler/lib/bundler/cli/install.rb | 1 + bundler/lib/bundler/man/bundle-install.1 | 7 ++++++- bundler/lib/bundler/man/bundle-install.1.ronn | 10 ++++++++++ bundler/spec/commands/install_spec.rb | 11 +++++++++++ 5 files changed, 29 insertions(+), 1 deletion(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index 79f93a778473..481789656976 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -234,6 +234,7 @@ def remove(*gems) method_option "local", type: :boolean, banner: "Do not attempt to fetch gems remotely and use the gem cache instead" method_option "prefer-local", type: :boolean, banner: "Only attempt to fetch gems remotely if not present locally, even if newer versions are available remotely" method_option "no-cache", type: :boolean, banner: "Don't update the existing gem cache." + method_option "no-lock", type: :boolean, banner: "Don't create a lockfile." method_option "force", type: :boolean, aliases: "--redownload", banner: "Force reinstalling every gem, even if already installed" method_option "no-prune", type: :boolean, banner: "Don't remove stale gems from the cache (removed)." method_option "path", type: :string, banner: "Specify a different path than the system default, namely, $BUNDLE_PATH or $GEM_HOME (removed)." diff --git a/bundler/lib/bundler/cli/install.rb b/bundler/lib/bundler/cli/install.rb index 20e22155de8e..85b303eee609 100644 --- a/bundler/lib/bundler/cli/install.rb +++ b/bundler/lib/bundler/cli/install.rb @@ -44,6 +44,7 @@ def run # (rather than some optimizations we perform at app runtime). definition = Bundler.definition(strict: true) definition.validate_runtime! + definition.lockfile = false if options["no-lock"] installer = Installer.install(Bundler.root, definition, options) diff --git a/bundler/lib/bundler/man/bundle-install.1 b/bundler/lib/bundler/man/bundle-install.1 index 2d7ef96b4490..1acbe430585e 100644 --- a/bundler/lib/bundler/man/bundle-install.1 +++ b/bundler/lib/bundler/man/bundle-install.1 @@ -4,7 +4,7 @@ .SH "NAME" \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile .SH "SYNOPSIS" -\fBbundle install\fR [\-\-force] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-local] [\-\-no\-cache] [\-\-prefer\-local] [\-\-quiet] [\-\-retry=NUMBER] [\-\-standalone[=GROUP[ GROUP\|\.\|\.\|\.]]] [\-\-trust\-policy=TRUST\-POLICY] [\-\-target\-rbconfig=TARGET\-RBCONFIG] +\fBbundle install\fR [\-\-force] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-local] [\-\-no\-cache] [\-\-no\-lock] [\-\-prefer\-local] [\-\-quiet] [\-\-retry=NUMBER] [\-\-standalone[=GROUP[ GROUP\|\.\|\.\|\.]]] [\-\-trust\-policy=TRUST\-POLICY] [\-\-target\-rbconfig=TARGET\-RBCONFIG] .SH "DESCRIPTION" Install the gems specified in your Gemfile(5)\. If this is the first time you run bundle install (and a \fBGemfile\.lock\fR does not exist), Bundler will fetch all remote sources, resolve dependencies and install all needed gems\. .P @@ -34,6 +34,11 @@ Force using locally installed gems, or gems already present in Rubygems' cache o \fB\-\-no\-cache\fR Do not update the cache in \fBvendor/cache\fR with the newly bundled gems\. This does not remove any gems in the cache but keeps the newly bundled gems from being cached during the install\. .TP +\fB\-\-no\-lock\fR +Do not create a lockfile\. Useful if you want to install dependencies but not lock versions of gems\. Recommended for library development, and other situations where the code is expected to work with a range of dependency versions\. +.IP +This has the same effect as using \fBlockfile false\fR in the Gemfile\. See gemfile(5) for more information\. +.TP \fB\-\-quiet\fR Do not print progress information to the standard output\. .TP diff --git a/bundler/lib/bundler/man/bundle-install.1.ronn b/bundler/lib/bundler/man/bundle-install.1.ronn index b946cbf83229..adb47490d74b 100644 --- a/bundler/lib/bundler/man/bundle-install.1.ronn +++ b/bundler/lib/bundler/man/bundle-install.1.ronn @@ -9,6 +9,7 @@ bundle-install(1) -- Install the dependencies specified in your Gemfile [--jobs=NUMBER] [--local] [--no-cache] + [--no-lock] [--prefer-local] [--quiet] [--retry=NUMBER] @@ -71,6 +72,15 @@ update process below under [CONSERVATIVE UPDATING][]. does not remove any gems in the cache but keeps the newly bundled gems from being cached during the install. +* `--no-lock`: + Do not create a lockfile. Useful if you want to install dependencies but not + lock versions of gems. Recommended for library development, and other + situations where the code is expected to work with a range of dependency + versions. + + This has the same effect as using `lockfile false` in the Gemfile. + See gemfile(5) for more information. + * `--quiet`: Do not print progress information to the standard output. diff --git a/bundler/spec/commands/install_spec.rb b/bundler/spec/commands/install_spec.rb index 68232d92de9b..69d9a8609961 100644 --- a/bundler/spec/commands/install_spec.rb +++ b/bundler/spec/commands/install_spec.rb @@ -89,6 +89,17 @@ expect(bundled_app("OmgFile.lock")).to exist end + it "doesn't create a lockfile if --no-lock option is given" do + gemfile bundled_app("OmgFile"), <<-G + source "https://gem.repo1/" + gem "myrack", "1.0" + G + + bundle "install --gemfile OmgFile --no-lock" + + expect(bundled_app("OmgFile.lock")).not_to exist + end + it "doesn't delete the lockfile if one already exists" do install_gemfile <<-G source "https://gem.repo1/" From b54d65bc0a87471f8e6dcd4c1dc890141a4cf69e Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Mon, 10 Nov 2025 18:23:58 -0800 Subject: [PATCH 187/295] Add support for BUNDLE_LOCKFILE environment variable This specifies the lockfile location. This allows for easy support of different lockfiles per Ruby version or platform. Co-authored-by: Sutou Kouhei Co-authored-by: Colby Swandale <996377+colby-swandale@users.noreply.github.com> --- bundler/lib/bundler/environment_preserver.rb | 1 + bundler/lib/bundler/inline.rb | 8 ++++++ bundler/lib/bundler/man/bundle-config.1 | 3 ++ bundler/lib/bundler/man/bundle-config.1.ronn | 4 +++ bundler/lib/bundler/man/gemfile.5 | 12 ++++++++ bundler/lib/bundler/man/gemfile.5.ronn | 10 +++++++ bundler/lib/bundler/settings.rb | 1 + bundler/lib/bundler/shared_helpers.rb | 4 +++ bundler/spec/commands/config_spec.rb | 17 ++++++++++++ bundler/spec/install/gemfile_spec.rb | 29 ++++++++++++++++++++ lib/rubygems/bundler_version_finder.rb | 9 ++++-- 11 files changed, 95 insertions(+), 3 deletions(-) diff --git a/bundler/lib/bundler/environment_preserver.rb b/bundler/lib/bundler/environment_preserver.rb index 444ab6fd373d..bf9478a29906 100644 --- a/bundler/lib/bundler/environment_preserver.rb +++ b/bundler/lib/bundler/environment_preserver.rb @@ -6,6 +6,7 @@ class EnvironmentPreserver BUNDLER_KEYS = %w[ BUNDLE_BIN_PATH BUNDLE_GEMFILE + BUNDLE_LOCKFILE BUNDLER_VERSION BUNDLER_SETUP GEM_HOME diff --git a/bundler/lib/bundler/inline.rb b/bundler/lib/bundler/inline.rb index 4e4b51e7a5df..c861bee14967 100644 --- a/bundler/lib/bundler/inline.rb +++ b/bundler/lib/bundler/inline.rb @@ -44,12 +44,14 @@ def gemfile(force_latest_compatible = false, options = {}, &gemfile) raise ArgumentError, "Unknown options: #{opts.keys.join(", ")}" unless opts.empty? old_gemfile = ENV["BUNDLE_GEMFILE"] + old_lockfile = ENV["BUNDLE_LOCKFILE"] Bundler.unbundle_env! begin Bundler.instance_variable_set(:@bundle_path, Pathname.new(Gem.dir)) Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", "Gemfile" + Bundler::SharedHelpers.set_env "BUNDLE_LOCKFILE", "Gemfile.lock" Bundler::Plugin.gemfile_install(&gemfile) if Bundler.settings[:plugins] builder = Bundler::Dsl.new @@ -94,5 +96,11 @@ def gemfile(force_latest_compatible = false, options = {}, &gemfile) else ENV["BUNDLE_GEMFILE"] = "" end + + if old_lockfile + ENV["BUNDLE_LOCKFILE"] = old_lockfile + else + ENV["BUNDLE_LOCKFILE"] = "" + end end end diff --git a/bundler/lib/bundler/man/bundle-config.1 b/bundler/lib/bundler/man/bundle-config.1 index b44891f6e923..05c13e2d0f32 100644 --- a/bundler/lib/bundler/man/bundle-config.1 +++ b/bundler/lib/bundler/man/bundle-config.1 @@ -145,6 +145,9 @@ Generate a \fBgems\.rb\fR instead of a \fBGemfile\fR when running \fBbundle init \fBjobs\fR (\fBBUNDLE_JOBS\fR) The number of gems Bundler can install in parallel\. Defaults to the number of available processors\. .TP +\fBlockfile\fR (\fBBUNDLE_LOCKFILE\fR) +The path to the lockfile that bundler should use\. By default, Bundler adds \fB\.lock\fR to the end of the \fBgemfile\fR entry\. Can be set to \fBfalse\fR in the Gemfile to disable lockfile creation entirely (see gemfile(5))\. +.TP \fBlockfile_checksums\fR (\fBBUNDLE_LOCKFILE_CHECKSUMS\fR) Whether Bundler should include a checksums section in new lockfiles, to protect from compromised gem sources\. Defaults to true\. .TP diff --git a/bundler/lib/bundler/man/bundle-config.1.ronn b/bundler/lib/bundler/man/bundle-config.1.ronn index 281ab2da0cd1..7c34f1d1afb2 100644 --- a/bundler/lib/bundler/man/bundle-config.1.ronn +++ b/bundler/lib/bundler/man/bundle-config.1.ronn @@ -189,6 +189,10 @@ learn more about their operation in [bundle install(1)](bundle-install.1.html). * `jobs` (`BUNDLE_JOBS`): The number of gems Bundler can install in parallel. Defaults to the number of available processors. +* `lockfile` (`BUNDLE_LOCKFILE`): + The path to the lockfile that bundler should use. By default, Bundler adds + `.lock` to the end of the `gemfile` entry. Can be set to `false` in the + Gemfile to disable lockfile creation entirely (see gemfile(5)). * `lockfile_checksums` (`BUNDLE_LOCKFILE_CHECKSUMS`): Whether Bundler should include a checksums section in new lockfiles, to protect from compromised gem sources. Defaults to true. * `no_install` (`BUNDLE_NO_INSTALL`): diff --git a/bundler/lib/bundler/man/gemfile.5 b/bundler/lib/bundler/man/gemfile.5 index 1dbb2618afba..f345580ed77e 100644 --- a/bundler/lib/bundler/man/gemfile.5 +++ b/bundler/lib/bundler/man/gemfile.5 @@ -487,3 +487,15 @@ lockfile false .IP "" 0 .P This is useful for library development and other situations where the code is expected to work with a range of dependency versions\. +.SS "LOCKFILE PRECEDENCE" +When determining path to the lockfile or whether to create a lockfile, the following precedence is used: +.IP "1." 4 +The \fBbundle install\fR \fB\-\-no\-lock\fR option (which disables lockfile creation)\. +.IP "2." 4 +The \fBlockfile\fR method in the Gemfile\. +.IP "3." 4 +The \fBBUNDLE_LOCKFILE\fR environment variable\. +.IP "4." 4 +The default behavior of adding \fB\.lock\fR to the end of the Gemfile name\. +.IP "" 0 + diff --git a/bundler/lib/bundler/man/gemfile.5.ronn b/bundler/lib/bundler/man/gemfile.5.ronn index 619151aa8801..3dea29cb3c6a 100644 --- a/bundler/lib/bundler/man/gemfile.5.ronn +++ b/bundler/lib/bundler/man/gemfile.5.ronn @@ -573,3 +573,13 @@ To avoid writing a lock file, use `false` as the argument: This is useful for library development and other situations where the code is expected to work with a range of dependency versions. + +### LOCKFILE PRECEDENCE + +When determining path to the lockfile or whether to create a lockfile, the +following precedence is used: + +1. The `bundle install` `--no-lock` option (which disables lockfile creation). +2. The `lockfile` method in the Gemfile. +3. The `BUNDLE_LOCKFILE` environment variable. +4. The default behavior of adding `.lock` to the end of the Gemfile name. diff --git a/bundler/lib/bundler/settings.rb b/bundler/lib/bundler/settings.rb index fb1b875b2645..d00a4bb916f6 100644 --- a/bundler/lib/bundler/settings.rb +++ b/bundler/lib/bundler/settings.rb @@ -65,6 +65,7 @@ class Settings gem.rubocop gem.test gemfile + lockfile path shebang simulate_version diff --git a/bundler/lib/bundler/shared_helpers.rb b/bundler/lib/bundler/shared_helpers.rb index 4c914eb1a447..6419e4299760 100644 --- a/bundler/lib/bundler/shared_helpers.rb +++ b/bundler/lib/bundler/shared_helpers.rb @@ -23,6 +23,9 @@ def default_gemfile end def default_lockfile + given = ENV["BUNDLE_LOCKFILE"] + return Pathname.new(given) if given && !given.empty? + gemfile = default_gemfile case gemfile.basename.to_s @@ -297,6 +300,7 @@ def set_env(key, value) def set_bundle_variables Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", bundle_bin_path Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile.to_s + Bundler::SharedHelpers.set_env "BUNDLE_LOCKFILE", default_lockfile.to_s Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION Bundler::SharedHelpers.set_env "BUNDLER_SETUP", File.expand_path("setup", __dir__) end diff --git a/bundler/spec/commands/config_spec.rb b/bundler/spec/commands/config_spec.rb index 1392b1731574..954cae09d846 100644 --- a/bundler/spec/commands/config_spec.rb +++ b/bundler/spec/commands/config_spec.rb @@ -592,3 +592,20 @@ end end end + +RSpec.describe "setting lockfile via config" do + it "persists the lockfile location to .bundle/config" do + gemfile bundled_app("NotGemfile"), <<-G + source "https://gem.repo1/" + gem 'myrack' + G + + bundle "config set --local gemfile #{bundled_app("NotGemfile")}" + bundle "config set --local lockfile #{bundled_app("ReallyNotGemfile.lock")}" + expect(File.exist?(bundled_app(".bundle/config"))).to eq(true) + + bundle "config list" + expect(out).to include("NotGemfile") + expect(out).to include("ReallyNotGemfile.lock") + end +end diff --git a/bundler/spec/install/gemfile_spec.rb b/bundler/spec/install/gemfile_spec.rb index 0e3b84776783..87326f67af69 100644 --- a/bundler/spec/install/gemfile_spec.rb +++ b/bundler/spec/install/gemfile_spec.rb @@ -27,6 +27,35 @@ ENV["BUNDLE_GEMFILE"] = "NotGemfile" expect(the_bundle).to include_gems "myrack 1.0.0" end + + it "respects lockfile and BUNDLE_LOCKFILE" do + gemfile bundled_app("NotGemfile"), <<-G + lockfile "ReallyNotGemfile.lock" + source "https://gem.repo1/" + gem 'myrack' + G + + bundle :install, gemfile: bundled_app("NotGemfile") + + ENV["BUNDLE_GEMFILE"] = "NotGemfile" + ENV["BUNDLE_LOCKFILE"] = "ReallyNotGemfile.lock" + expect(the_bundle).to include_gems "myrack 1.0.0" + end + + it "respects BUNDLE_LOCKFILE during bundle install" do + ENV["BUNDLE_LOCKFILE"] = "ReallyNotGemfile.lock" + + gemfile bundled_app("NotGemfile"), <<-G + source "https://gem.repo1/" + gem 'myrack' + G + + bundle :install, gemfile: bundled_app("NotGemfile") + expect(bundled_app("ReallyNotGemfile.lock")).to exist + + ENV["BUNDLE_GEMFILE"] = "NotGemfile" + expect(the_bundle).to include_gems "myrack 1.0.0" + end end context "with gemfile set via config" do diff --git a/lib/rubygems/bundler_version_finder.rb b/lib/rubygems/bundler_version_finder.rb index ac8988dea577..602e00c1d866 100644 --- a/lib/rubygems/bundler_version_finder.rb +++ b/lib/rubygems/bundler_version_finder.rb @@ -65,9 +65,12 @@ def self.lockfile_contents return unless gemfile - lockfile = case gemfile - when "gems.rb" then "gems.locked" - else "#{gemfile}.lock" + lockfile = ENV["BUNDLE_LOCKFILE"] + lockfile = nil if lockfile&.empty? + + lockfile ||= case gemfile + when "gems.rb" then "gems.locked" + else "#{gemfile}.lock" end return unless File.file?(lockfile) From f360af8e3bf66673cb39512b893dbabef0eef31c Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 20 Nov 2025 20:02:29 +0900 Subject: [PATCH 188/295] Keep legacy windows platform, not removed them --- bundler/lib/bundler/dsl.rb | 4 ++-- bundler/spec/bundler/dsl_spec.rb | 8 ++++---- bundler/spec/commands/cache_spec.rb | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bundler/lib/bundler/dsl.rb b/bundler/lib/bundler/dsl.rb index 13e0783a436e..6f06c4e91879 100644 --- a/bundler/lib/bundler/dsl.rb +++ b/bundler/lib/bundler/dsl.rb @@ -427,8 +427,8 @@ def normalize_options(name, version, opts) windows_platforms = platforms.select {|pl| pl.to_s.match?(/mingw|mswin/) } if windows_platforms.any? windows_platforms = windows_platforms.map! {|pl| ":#{pl}" }.join(", ") - removed_message = "Platform #{windows_platforms} has been removed. Please use platform :windows instead." - Bundler::SharedHelpers.feature_removed! removed_message + deprecated_message = "Platform #{windows_platforms} will be removed in the future. Please use platform :windows instead." + Bundler::SharedHelpers.feature_deprecated! deprecated_message end # Save sources passed in a key diff --git a/bundler/spec/bundler/dsl_spec.rb b/bundler/spec/bundler/dsl_spec.rb index 286dfa711518..a19f251be5d9 100644 --- a/bundler/spec/bundler/dsl_spec.rb +++ b/bundler/spec/bundler/dsl_spec.rb @@ -221,8 +221,8 @@ to raise_error(Bundler::GemfileError, /is not a valid platform/) end - it "raises an error for legacy windows platforms" do - expect(Bundler::SharedHelpers).to receive(:feature_removed!).with(/\APlatform :mswin, :x64_mingw has been removed/) + it "warn for legacy windows platforms" do + expect(Bundler::SharedHelpers).to receive(:feature_deprecated!).with(/\APlatform :mswin, :x64_mingw will be removed in the future./) subject.gem("foo", platforms: [:mswin, :jruby, :x64_mingw]) end @@ -291,8 +291,8 @@ end describe "#platforms" do - it "raises an error for legacy windows platforms" do - expect(Bundler::SharedHelpers).to receive(:feature_removed!).with(/\APlatform :mswin64, :mingw has been removed/) + it "warn for legacy windows platforms" do + expect(Bundler::SharedHelpers).to receive(:feature_deprecated!).with(/\APlatform :mswin64, :mingw will be removed in the future./) subject.platforms(:mswin64, :jruby, :mingw) do subject.gem("foo") end diff --git a/bundler/spec/commands/cache_spec.rb b/bundler/spec/commands/cache_spec.rb index 2414e1ca02e4..bd92a84e1853 100644 --- a/bundler/spec/commands/cache_spec.rb +++ b/bundler/spec/commands/cache_spec.rb @@ -207,15 +207,15 @@ expect(bundled_app("vendor/cache/myrack-1.0.0.gem")).to exist end - it "prints an error when using legacy windows rubies" do + it "prints a warn when using legacy windows rubies" do gemfile <<-D source "https://gem.repo1/" gem 'myrack', :platforms => [:ruby_20, :x64_mingw_20] D bundle "cache --all-platforms", raise_on_error: false - expect(err).to include("removed") - expect(bundled_app("vendor/cache/myrack-1.0.0.gem")).not_to exist + expect(err).to include("will be removed in the future") + expect(bundled_app("vendor/cache/myrack-1.0.0.gem")).to exist end it "does not attempt to install gems in without groups" do From 64f92d2da07c71d0a74da8ab6f72f6e45b10ea64 Mon Sep 17 00:00:00 2001 From: sue445 Date: Thu, 20 Nov 2025 22:34:01 +0900 Subject: [PATCH 189/295] Add go_gem/rake_task for Go native extention gem skeleton --- bundler/lib/bundler/templates/newgem/Rakefile.tt | 6 ++++++ bundler/spec/commands/newgem_spec.rb | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/bundler/lib/bundler/templates/newgem/Rakefile.tt b/bundler/lib/bundler/templates/newgem/Rakefile.tt index 172183d4b410..dfb9edaa39a1 100644 --- a/bundler/lib/bundler/templates/newgem/Rakefile.tt +++ b/bundler/lib/bundler/templates/newgem/Rakefile.tt @@ -59,6 +59,12 @@ Rake::ExtensionTask.new("<%= config[:underscored_name] %>", GEMSPEC) do |ext| end <% end -%> +<% if config[:ext] == "go" -%> +require "go_gem/rake_task" + +GoGem::RakeTask.new("<%= config[:underscored_name] %>") +<% end -%> + <% end -%> <% if default_task_names.size == 1 -%> task default: <%= default_task_names.first.inspect %> diff --git a/bundler/spec/commands/newgem_spec.rb b/bundler/spec/commands/newgem_spec.rb index 7a837bd08f01..1d158726bed6 100644 --- a/bundler/spec/commands/newgem_spec.rb +++ b/bundler/spec/commands/newgem_spec.rb @@ -1829,6 +1829,14 @@ def create_temporary_dir(dir) expect(bundled_app("#{gem_name}/ext/#{gem_name}/go.mod").read).to include("module github.com/bundleuser/#{gem_name}") end + it "includes go_gem extension in Rakefile" do + expect(bundled_app("#{gem_name}/Rakefile").read).to include(<<~RUBY) + require "go_gem/rake_task" + + GoGem::RakeTask.new("#{gem_name}") + RUBY + end + context "with --no-ci" do let(:flags) { "--ext=go --no-ci" } From 8c414729dffd705248e0b0be85ca81740da17d71 Mon Sep 17 00:00:00 2001 From: sue445 Date: Fri, 21 Nov 2025 09:50:27 +0900 Subject: [PATCH 190/295] Fixed RuboCop offense in Rakefile generated by `bundle gem` ``` Offenses: Rakefile:18:1: C: [Correctable] Layout/EmptyLines: Extra blank line detected. Diff: @@ -11,4 +11,5 @@ ext.lib_dir = "lib/test_gem" end + task default: :compile --- bundler/lib/bundler/templates/newgem/Rakefile.tt | 1 - 1 file changed, 1 deletion(-) diff --git a/bundler/lib/bundler/templates/newgem/Rakefile.tt b/bundler/lib/bundler/templates/newgem/Rakefile.tt index dfb9edaa39a1..83f10009c704 100644 --- a/bundler/lib/bundler/templates/newgem/Rakefile.tt +++ b/bundler/lib/bundler/templates/newgem/Rakefile.tt @@ -64,7 +64,6 @@ require "go_gem/rake_task" GoGem::RakeTask.new("<%= config[:underscored_name] %>") <% end -%> - <% end -%> <% if default_task_names.size == 1 -%> task default: <%= default_task_names.first.inspect %> From c1e3d4d63b17125548bc4f5fa476dbacc6d38d1e Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Sun, 16 Nov 2025 12:28:31 -0800 Subject: [PATCH 191/295] create a gem version instead of comparing with a string --- lib/rubygems.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/rubygems.rb b/lib/rubygems.rb index c398c985f585..8530a2a893cb 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -287,7 +287,7 @@ def self.activate_and_load_bin_path(name, exec_name = nil, *requirements) # RubyGems now uses this new `Gem.activate_and_load_bin_path` helper in # binstubs, which is of course not overridden in Bundler since it didn't # exist at the time. So, include the override here to workaround that. - load ENV["BUNDLE_BIN_PATH"] if ENV["BUNDLE_BIN_PATH"] && spec.version <= "2.5.22" + load ENV["BUNDLE_BIN_PATH"] if ENV["BUNDLE_BIN_PATH"] && spec.version <= Gem::Version.create("2.5.22") # Make sure there's no version of Bundler in `$LOAD_PATH` that's different # from the version we just activated. If that was the case (it happens @@ -666,7 +666,7 @@ def self.load_safe_marshal # warnings in platform constants def self.load_bundler_extensions(version) - return unless version <= "2.6.9" + return unless version <= Gem::Version.create("2.6.9") previous_platforms = {} From 81b76021832068efa3079f0b0453f73f1b99dc45 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Fri, 14 Nov 2025 17:26:40 -0800 Subject: [PATCH 192/295] Deprecate comparing Gem::Version objects with strings Comparing version objects is a huge bottleneck in dependency solvers (like inside Bundler). I would like to make comparing version objects cheaper. Right now we support comparing version objects with strings by trying to coerce the string to a version. So for example: ```ruby Gem::Version.new("1") <=> "12" ``` I would like to deprecate and remove support for this feature so that we can reduce the overhead of `def <=>`. I'm not sure what version of RubyGems we could remove this from though. --- lib/rubygems/version.rb | 12 +++++++++--- test/rubygems/test_gem_version.rb | 19 ++++++++++++++----- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/rubygems/version.rb b/lib/rubygems/version.rb index c9fffc1cb7ca..43a0e4e78375 100644 --- a/lib/rubygems/version.rb +++ b/lib/rubygems/version.rb @@ -339,11 +339,17 @@ def approximate_recommendation ## # Compares this version with +other+ returning -1, 0, or 1 if the # other version is larger, the same, or smaller than this - # one. Attempts to compare to something that's not a - # Gem::Version or a valid version String return +nil+. + # one. +other+ must be an instance of Gem::Version, comparing with + # other types may raise an exception. def <=>(other) - return self <=> self.class.new(other) if (String === other) && self.class.correct?(other) + if String === other + unless Gem::Deprecate.skip + warn "comparing version objects with strings is deprecated and will be removed" + end + return unless self.class.correct?(other) + return self <=> self.class.new(other) + end return unless Gem::Version === other return 0 if @version == other.version || canonical_segments == other.canonical_segments diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb index 1d963daa65ba..ad2a11c63180 100644 --- a/test/rubygems/test_gem_version.rb +++ b/test/rubygems/test_gem_version.rb @@ -154,11 +154,20 @@ def test_spaceship assert_equal(-1, v("5.a") <=> v("5.0.0.rc2")) assert_equal(1, v("5.x") <=> v("5.0.0.rc2")) - assert_equal(0, v("1.9.3") <=> "1.9.3") - assert_equal(1, v("1.9.3") <=> "1.9.2.99") - assert_equal(-1, v("1.9.3") <=> "1.9.3.1") - - assert_nil v("1.0") <=> "whatever" + [ + [0, "1.9.3"], + [1, "1.9.2.99"], + [-1, "1.9.3.1"], + [nil, "whatever"], + ].each do |cmp, string_ver| + expected = "comparing version objects with strings is deprecated and will be removed\n" + + actual_stdout, actual_stderr = capture_output do + assert_equal(cmp, v("1.9.3") <=> string_ver) + end + assert_empty actual_stdout + assert_equal expected, actual_stderr + end end def test_approximate_recommendation From 4eb66d9549b776257164564e815feb83490db8b2 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 11:22:01 +0900 Subject: [PATCH 193/295] Respect `BUNDLE_VERSION` config at Gem::BundlerVersionFinder If we use "system" variable in BUNDLE_VERSION on Bundler configuration, we can use bundler version provided by system installation. But the current logic returns the first activated version of bundler like 2.7.2. It makes to confuse users. --- lib/rubygems/bundler_version_finder.rb | 31 ++++++++ test/rubygems/helper.rb | 3 + .../test_gem_bundler_version_finder.rb | 70 +++++++++++++++++++ 3 files changed, 104 insertions(+) diff --git a/lib/rubygems/bundler_version_finder.rb b/lib/rubygems/bundler_version_finder.rb index 602e00c1d866..c930c2e19c26 100644 --- a/lib/rubygems/bundler_version_finder.rb +++ b/lib/rubygems/bundler_version_finder.rb @@ -2,6 +2,8 @@ module Gem::BundlerVersionFinder def self.bundler_version + return if bundle_config_version == "system" + v = ENV["BUNDLER_VERSION"] v = nil if v&.empty? @@ -78,4 +80,33 @@ def self.lockfile_contents File.read(lockfile) end private_class_method :lockfile_contents + + def self.bundle_config_version + config_file = bundler_config_file + return unless config_file && File.file?(config_file) + + contents = File.read(config_file) + contents =~ /^BUNDLE_VERSION:\s*["']?([^"'\s]+)["']?\s*$/ + + $1 + end + private_class_method :bundle_config_version + + def self.bundler_config_file + # see Bundler::Settings#global_config_file and local_config_file + # global + if ENV["BUNDLE_CONFIG"] && !ENV["BUNDLE_CONFIG"].empty? + ENV["BUNDLE_CONFIG"] + elsif ENV["BUNDLE_USER_CONFIG"] && !ENV["BUNDLE_USER_CONFIG"].empty? + ENV["BUNDLE_USER_CONFIG"] + elsif ENV["BUNDLE_USER_HOME"] && !ENV["BUNDLE_USER_HOME"].empty? + ENV["BUNDLE_USER_HOME"] + "config" + elsif Gem.user_home && !Gem.user_home.empty? + Gem.user_home + ".bundle/config" + else + # local + "config" + end + end + private_class_method :bundler_config_file end diff --git a/test/rubygems/helper.rb b/test/rubygems/helper.rb index 53bed0b4151b..6e0be10ef530 100644 --- a/test/rubygems/helper.rb +++ b/test/rubygems/helper.rb @@ -335,6 +335,9 @@ def setup ENV["XDG_STATE_HOME"] = nil ENV["SOURCE_DATE_EPOCH"] = nil ENV["BUNDLER_VERSION"] = nil + ENV["BUNDLE_CONFIG"] = nil + ENV["BUNDLE_USER_CONFIG"] = nil + ENV["BUNDLE_USER_HOME"] = nil ENV["RUBYGEMS_PREVENT_UPDATE_SUGGESTION"] = "true" @current_dir = Dir.pwd diff --git a/test/rubygems/test_gem_bundler_version_finder.rb b/test/rubygems/test_gem_bundler_version_finder.rb index 908f9278323c..a773d6249b59 100644 --- a/test/rubygems/test_gem_bundler_version_finder.rb +++ b/test/rubygems/test_gem_bundler_version_finder.rb @@ -2,6 +2,7 @@ require_relative "helper" require "rubygems/bundler_version_finder" +require "tempfile" class TestGemBundlerVersionFinder < Gem::TestCase def setup @@ -56,6 +57,75 @@ def test_bundler_version_with_bundle_update_bundler assert_nil bvf.bundler_version end + def test_bundler_version_with_bundle_config + config_content = <<~CONFIG + BUNDLE_VERSION: "system" + CONFIG + + Tempfile.create("bundle_config") do |f| + f.write(config_content) + f.flush + + bvf.stub(:bundler_config_file, f.path) do + assert_nil bvf.bundler_version + end + end + end + + def test_bundler_version_with_bundle_config_single_quoted + config_with_single_quoted_version = <<~CONFIG + BUNDLE_VERSION: 'system' + CONFIG + + Tempfile.create("bundle_config") do |f| + f.write(config_with_single_quoted_version) + f.flush + + bvf.stub(:bundler_config_file, f.path) do + assert_nil bvf.bundler_version + end + end + end + + def test_bundler_version_with_bundle_config_version + ENV["BUNDLER_VERSION"] = "1.1.1.1" + + config_content = <<~CONFIG + BUNDLE_VERSION: "1.2.3" + CONFIG + + Tempfile.create("bundle_config") do |f| + f.write(config_content) + f.flush + + bvf.stub(:bundler_config_file, f.path) do + assert_equal v("1.1.1.1"), bvf.bundler_version + end + end + end + + def test_bundler_version_with_bundle_config_non_existent_file + bvf.stub(:bundler_config_file, "/non/existent/path") do + assert_nil bvf.bundler_version + end + end + + def test_bundler_version_with_bundle_config_without_version + config_without_version = <<~CONFIG + BUNDLE_JOBS: "8" + BUNDLE_GEM__TEST: "minitest" + CONFIG + + Tempfile.create("bundle_config") do |f| + f.write(config_without_version) + f.flush + + bvf.stub(:bundler_config_file, f.path) do + assert_nil bvf.bundler_version + end + end + end + def test_bundler_version_with_lockfile bvf.stub(:lockfile_contents, "") do assert_nil bvf.bundler_version From b30bcbc6486c25cb396a888d90613610eb71dff4 Mon Sep 17 00:00:00 2001 From: Philip Arndt Date: Fri, 21 Nov 2025 17:33:57 +1300 Subject: [PATCH 194/295] Check for file existence before deletion from cache (#9095) * Rescue when deleting a non-existent cached gem file When a gem was in the cache, but another process deletes it first, this delete command fails. To work around this, I'm rescuing from Errno::ENOENT and swalling the error. The file is gone, and we can move on. * Apply suggestion from @kou Co-authored-by: Sutou Kouhei --------- Co-authored-by: Hiroshi SHIBATA Co-authored-by: Sutou Kouhei --- bundler/lib/bundler/runtime.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/bundler/lib/bundler/runtime.rb b/bundler/lib/bundler/runtime.rb index 9b2416402bb7..5eb827dcb2a8 100644 --- a/bundler/lib/bundler/runtime.rb +++ b/bundler/lib/bundler/runtime.rb @@ -240,7 +240,11 @@ def prune_gem_cache(resolve, cache_path) cached.each do |path| Bundler.ui.info " * #{File.basename(path)}" - File.delete(path) + + begin + File.delete(path) + rescue Errno::ENOENT + end end end end From 850fdffa5fb48f1b0c9c59c817b6a3650018d4b1 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 14:39:51 +0900 Subject: [PATCH 195/295] Fixed warning for String comparison of Gem::Version --- bundler/lib/bundler/definition.rb | 2 +- lib/rubygems/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bundler/lib/bundler/definition.rb b/bundler/lib/bundler/definition.rb index ca41d7953d8e..437390f3ec44 100644 --- a/bundler/lib/bundler/definition.rb +++ b/bundler/lib/bundler/definition.rb @@ -1114,7 +1114,7 @@ def preload_git_sources end def find_source_requirements - if Gem.ruby_version >= "3.3" + if Gem.ruby_version >= Gem::Version.new("3.3") # Ruby 3.2 has a bug that incorrectly triggers a circular dependency warning. This version will continue to # fetch git repositories one by one. preload_git_sources diff --git a/lib/rubygems/version.rb b/lib/rubygems/version.rb index 43a0e4e78375..a88a4a49ee2b 100644 --- a/lib/rubygems/version.rb +++ b/lib/rubygems/version.rb @@ -345,7 +345,7 @@ def approximate_recommendation def <=>(other) if String === other unless Gem::Deprecate.skip - warn "comparing version objects with strings is deprecated and will be removed" + warn "comparing version objects with strings is deprecated and will be removed", uplevel: 1 end return unless self.class.correct?(other) return self <=> self.class.new(other) From 4ec9dd8f44f73588cb0ff50e13be4408c6c4a8b4 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 14:52:46 +0900 Subject: [PATCH 196/295] Use assert_match for uplevel option --- test/rubygems/test_gem_version.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb index ad2a11c63180..567a4eb48743 100644 --- a/test/rubygems/test_gem_version.rb +++ b/test/rubygems/test_gem_version.rb @@ -160,13 +160,11 @@ def test_spaceship [-1, "1.9.3.1"], [nil, "whatever"], ].each do |cmp, string_ver| - expected = "comparing version objects with strings is deprecated and will be removed\n" - actual_stdout, actual_stderr = capture_output do assert_equal(cmp, v("1.9.3") <=> string_ver) end assert_empty actual_stdout - assert_equal expected, actual_stderr + assert_match /comparing version objects with strings is deprecated and will be removed/, actual_stderr end end From fbf6fb667eb74966ae0ac154f0ebbcc52efbb660 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 16:20:35 +0900 Subject: [PATCH 197/295] bin/rubocop -a --- test/rubygems/test_gem_version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb index 567a4eb48743..ce38a59113d2 100644 --- a/test/rubygems/test_gem_version.rb +++ b/test/rubygems/test_gem_version.rb @@ -164,7 +164,7 @@ def test_spaceship assert_equal(cmp, v("1.9.3") <=> string_ver) end assert_empty actual_stdout - assert_match /comparing version objects with strings is deprecated and will be removed/, actual_stderr + assert_match(/comparing version objects with strings is deprecated and will be removed/, actual_stderr) end end From acbdbd083016e7d9ad47ba770cca502feed5832a Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 15:04:01 +0900 Subject: [PATCH 198/295] Rewrite pr_ids with pr search command instead of merge commit message --- tool/release.rb | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index acb5bce0b45b..b67b1a75b252 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -160,10 +160,6 @@ def initialize(version) @previous_stable_branch = @level == :minor_or_major ? "#{segments[0]}.#{segments[1] - 1}" : @stable_branch @previous_stable_branch = "3.7" if @stable_branch == "4.0" - if segments.size == 5 && segments[4] > 1 - @previous_prerelease = "#{segments[0]}.#{segments[1]}.#{segments[2]}.#{segments[3]}.#{segments[4] - 1}" - end - rubygems_version = segments.join(".").gsub(/([a-z])\.(\d)/i, '\1\2') @rubygems = Rubygems.new(rubygems_version, @stable_branch) @@ -326,18 +322,16 @@ def scan_unreleased_pull_requests(ids) end def unreleased_pr_ids - stable_merge_commit_messages = `git log --format=%s --grep "^Merge pull request #" #{@previous_stable_branch}`.split("\n") - prerelease_merge_commit_messages = [] - if @previous_prerelease - prerelease_merge_commit_messages = `git log --format=%s --grep "^Merge pull request #" #{@previous_stable_branch}..#{@previous_prerelease}`.split("\n") - end + # TODO: This algorithm support only works with tag to tag range. + # We need to reduce the number of API calls for the first beta release like 4.1.0.beta1. - `git log --oneline --grep "^Merge pull request #" origin/master`.split("\n").filter_map do |l| - _sha, message = l.split(/\s/, 2) + previous_release_tag = `git describe --tags --abbrev=0`.strip - next if stable_merge_commit_messages.include?(message) || prerelease_merge_commit_messages.include?(message) + commits = `git log --format=%H #{previous_release_tag}..HEAD`.split("\n") - /^Merge pull request #(\d+)/.match(message)[1].to_i - end + pr_ids = commits.flat_map do |commit| + result = `gh search prs --repo ruby/rubygems #{commit} --json number --jq '.[].number'`.strip + result.empty? ? [] : result.split("\n").map(&:to_i) + end.to_set.to_a end end From 809704d1a0847d9cddebb5fd6f55f5b088710e95 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 17:01:37 +0900 Subject: [PATCH 199/295] Use batch request for gh search prs --- tool/release.rb | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index b67b1a75b252..ffc3eeb90e94 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -322,16 +322,30 @@ def scan_unreleased_pull_requests(ids) end def unreleased_pr_ids - # TODO: This algorithm support only works with tag to tag range. - # We need to reduce the number of API calls for the first beta release like 4.1.0.beta1. - previous_release_tag = `git describe --tags --abbrev=0`.strip - commits = `git log --format=%H #{previous_release_tag}..HEAD`.split("\n") + commits = `git log --format=%h #{previous_release_tag}..HEAD`.split("\n") + + # GitHub search API has a rate limit of 30 requests per minute for authenticated users + rate_limit = 28 + # GitHub search API only accepts 250 characters per search query + batch_size = 15 + sleep_duration = 60 # seconds + + pr_ids = Set.new + + commits.each_slice(batch_size).with_index do |batch, index| + result = `gh search prs --repo ruby/rubygems #{batch.join(",")} --json number --jq '.[].number'`.strip + unless result.empty? + result.split("\n").each { |pr_number| pr_ids.add(pr_number.to_i) } + end + + if index % rate_limit == 1 + puts "Sleeping for #{sleep_duration} seconds to avoid rate limiting..." + sleep(sleep_duration) + end + end - pr_ids = commits.flat_map do |commit| - result = `gh search prs --repo ruby/rubygems #{commit} --json number --jq '.[].number'`.strip - result.empty? ? [] : result.split("\n").map(&:to_i) - end.to_set.to_a + pr_ids.to_a end end From 9d293e276c6c4f6ecb7891e25b8bc55004cd9238 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 17:35:49 +0900 Subject: [PATCH 200/295] Support the final release of stable branch --- tool/release.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index ffc3eeb90e94..68f4695c79cf 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -160,6 +160,12 @@ def initialize(version) @previous_stable_branch = @level == :minor_or_major ? "#{segments[0]}.#{segments[1] - 1}" : @stable_branch @previous_stable_branch = "3.7" if @stable_branch == "4.0" + @previous_release_tag = if @level == :minor_or_major + "v#{@previous_stable_branch}.0" + else + `git describe --tags --abbrev=0`.strip + end + rubygems_version = segments.join(".").gsub(/([a-z])\.(\d)/i, '\1\2') @rubygems = Rubygems.new(rubygems_version, @stable_branch) @@ -322,9 +328,7 @@ def scan_unreleased_pull_requests(ids) end def unreleased_pr_ids - previous_release_tag = `git describe --tags --abbrev=0`.strip - - commits = `git log --format=%h #{previous_release_tag}..HEAD`.split("\n") + commits = `git log --format=%h #{@previous_release_tag}..HEAD`.split("\n") # GitHub search API has a rate limit of 30 requests per minute for authenticated users rate_limit = 28 @@ -335,12 +339,13 @@ def unreleased_pr_ids pr_ids = Set.new commits.each_slice(batch_size).with_index do |batch, index| + puts "Processing batch #{index + 1}/#{(commits.size / batch_size.to_f).ceil}" result = `gh search prs --repo ruby/rubygems #{batch.join(",")} --json number --jq '.[].number'`.strip unless result.empty? result.split("\n").each { |pr_number| pr_ids.add(pr_number.to_i) } end - if index % rate_limit == 1 + if index != 0 && index % rate_limit == 0 puts "Sleeping for #{sleep_duration} seconds to avoid rate limiting..." sleep(sleep_duration) end From 3f8cb1dfc7ca9361a9d38c3d5d74a9726cc1653e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 18:33:20 +0900 Subject: [PATCH 201/295] Use pull_request from ids directly --- tool/release.rb | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index 68f4695c79cf..de28da1fa933 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -314,17 +314,7 @@ def unreleased_pull_requests end def scan_unreleased_pull_requests(ids) - pulls = gh_client.pull_requests("ruby/rubygems", sort: :updated, state: :closed, direction: :desc) - - loop do - pulls.select! {|pull| ids.include?(pull.number) } - - break if (pulls.map(&:number) & ids).to_set == ids.to_set - - pulls.concat gh_client.get(gh_client.last_response.rels[:next].href) - end - - pulls + ids.map{|id| gh_client.pull_request("ruby/rubygems", id) } end def unreleased_pr_ids From e1310b1144a3bc88559de36dd76bef78f82dc8df Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 18:35:13 +0900 Subject: [PATCH 202/295] bin/rubocop -a --- tool/release.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index de28da1fa933..e7bdfef71677 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -161,7 +161,7 @@ def initialize(version) @previous_stable_branch = "3.7" if @stable_branch == "4.0" @previous_release_tag = if @level == :minor_or_major - "v#{@previous_stable_branch}.0" + "v#{@previous_stable_branch}.0" else `git describe --tags --abbrev=0`.strip end @@ -314,7 +314,7 @@ def unreleased_pull_requests end def scan_unreleased_pull_requests(ids) - ids.map{|id| gh_client.pull_request("ruby/rubygems", id) } + ids.map {|id| gh_client.pull_request("ruby/rubygems", id) } end def unreleased_pr_ids @@ -332,7 +332,7 @@ def unreleased_pr_ids puts "Processing batch #{index + 1}/#{(commits.size / batch_size.to_f).ceil}" result = `gh search prs --repo ruby/rubygems #{batch.join(",")} --json number --jq '.[].number'`.strip unless result.empty? - result.split("\n").each { |pr_number| pr_ids.add(pr_number.to_i) } + result.split("\n").each {|pr_number| pr_ids.add(pr_number.to_i) } end if index != 0 && index % rate_limit == 0 From 17a094abc3c28668b5b3e7a1efebc287478cb223 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 18:41:53 +0900 Subject: [PATCH 203/295] Use only merged pulls --- tool/release.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tool/release.rb b/tool/release.rb index e7bdfef71677..3ed519344381 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -314,7 +314,12 @@ def unreleased_pull_requests end def scan_unreleased_pull_requests(ids) - ids.map {|id| gh_client.pull_request("ruby/rubygems", id) } + pulls = [] + ids.each do |id| + pull = gh_client.pull_request("ruby/rubygems", id) + pulls << pull if pull.merged_at + end + pulls end def unreleased_pr_ids From 81bc4f6c61c24f28e9dd9eb0e06998422ab9defe Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 21 Nov 2025 19:13:26 +0900 Subject: [PATCH 204/295] Support stable branch like 3.7/4.0 --- tool/release.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tool/release.rb b/tool/release.rb index 3ed519344381..0eaebcab14e4 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -323,7 +323,13 @@ def scan_unreleased_pull_requests(ids) end def unreleased_pr_ids - commits = `git log --format=%h #{@previous_release_tag}..HEAD`.split("\n") + commits = if @level == :minor_or_major + `git log --format=%h #{@previous_release_tag}..HEAD`.split("\n") + else + `git log --format=%B #{@previous_release_tag}..HEAD`.split("\n").filter_map do |line| + line[/\(cherry picked from commit ([0-9a-f]+)\)/, 1]&.slice(0, 12) + end + end # GitHub search API has a rate limit of 30 requests per minute for authenticated users rate_limit = 28 From 024b4b547af05abafb5e2bc497678ef63971175c Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Fri, 21 Nov 2025 19:30:04 +0100 Subject: [PATCH 205/295] Undeprecate Gem::Version#<=> against strings This pattern is extremely common across the ecosystem, I don't think it's reasonable to deprecate it. I understand the performance argument, but perhaps the dependency resolution algorithm can use another method that is private API and only works with two `Version` instance. --- lib/rubygems/version.rb | 3 --- test/rubygems/test_gem_version.rb | 6 +----- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/lib/rubygems/version.rb b/lib/rubygems/version.rb index a88a4a49ee2b..90fe1b3c2432 100644 --- a/lib/rubygems/version.rb +++ b/lib/rubygems/version.rb @@ -344,9 +344,6 @@ def approximate_recommendation def <=>(other) if String === other - unless Gem::Deprecate.skip - warn "comparing version objects with strings is deprecated and will be removed", uplevel: 1 - end return unless self.class.correct?(other) return self <=> self.class.new(other) end diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb index ce38a59113d2..3987c620d0a7 100644 --- a/test/rubygems/test_gem_version.rb +++ b/test/rubygems/test_gem_version.rb @@ -160,11 +160,7 @@ def test_spaceship [-1, "1.9.3.1"], [nil, "whatever"], ].each do |cmp, string_ver| - actual_stdout, actual_stderr = capture_output do - assert_equal(cmp, v("1.9.3") <=> string_ver) - end - assert_empty actual_stdout - assert_match(/comparing version objects with strings is deprecated and will be removed/, actual_stderr) + assert_equal(cmp, v("1.9.3") <=> string_ver) end end From 17acdd4a8975bcfb85e621cf8f76628002e69a5e Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Sat, 22 Nov 2025 20:31:14 -0800 Subject: [PATCH 206/295] Support bundle install --lockfile option This allows for specifying the lockfile to read and write. It mirrors the --gemfile option, and has higher priority than the lockfile method in the Gemfile. It also mirrors the bundle lock --lockfile option. When the --lockfile option is used, it is applied twice. First, before the Gemfile is read, to specify the lockfile to operate on, and again after the Gemfile is read, so that if the Gemfile has a lockfile method that overrides the defintion's lockfile, the --lockfile option still has higher precedence. --- bundler/lib/bundler/cli.rb | 17 ++++++++++++-- bundler/lib/bundler/cli/install.rb | 1 + bundler/lib/bundler/man/bundle-install.1 | 5 +++- bundler/lib/bundler/man/bundle-install.1.ronn | 5 ++++ bundler/lib/bundler/man/gemfile.5 | 6 +++-- bundler/lib/bundler/man/gemfile.5.ronn | 7 +++--- bundler/spec/commands/install_spec.rb | 23 +++++++++++++++++++ 7 files changed, 56 insertions(+), 8 deletions(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index 481789656976..55f656e3f3af 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -59,17 +59,29 @@ def self.aliases_for(command_name) def initialize(*args) super + current_cmd = args.last[:current_command].name + custom_gemfile = options[:gemfile] || Bundler.settings[:gemfile] if custom_gemfile && !custom_gemfile.empty? Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", File.expand_path(custom_gemfile) - Bundler.reset_settings_and_root! + reset_settings = true end + # lock --lockfile works differently than install --lockfile + unless current_cmd == "lock" + custom_lockfile = options[:lockfile] || Bundler.settings[:lockfile] + if custom_lockfile && !custom_lockfile.empty? + Bundler::SharedHelpers.set_env "BUNDLE_LOCKFILE", File.expand_path(custom_lockfile) + reset_settings = true + end + end + + Bundler.reset_settings_and_root! if reset_settings + Bundler.auto_switch Bundler.settings.set_command_option_if_given :retry, options[:retry] - current_cmd = args.last[:current_command].name Bundler.auto_install if AUTO_INSTALL_CMDS.include?(current_cmd) rescue UnknownArgumentError => e raise InvalidOption, e.message @@ -232,6 +244,7 @@ def remove(*gems) method_option "gemfile", type: :string, banner: "Use the specified gemfile instead of Gemfile" method_option "jobs", aliases: "-j", type: :numeric, banner: "Specify the number of jobs to run in parallel" method_option "local", type: :boolean, banner: "Do not attempt to fetch gems remotely and use the gem cache instead" + method_option "lockfile", type: :string, banner: "Use the specified lockfile instead of the default." method_option "prefer-local", type: :boolean, banner: "Only attempt to fetch gems remotely if not present locally, even if newer versions are available remotely" method_option "no-cache", type: :boolean, banner: "Don't update the existing gem cache." method_option "no-lock", type: :boolean, banner: "Don't create a lockfile." diff --git a/bundler/lib/bundler/cli/install.rb b/bundler/lib/bundler/cli/install.rb index 85b303eee609..ba1cef8434e6 100644 --- a/bundler/lib/bundler/cli/install.rb +++ b/bundler/lib/bundler/cli/install.rb @@ -44,6 +44,7 @@ def run # (rather than some optimizations we perform at app runtime). definition = Bundler.definition(strict: true) definition.validate_runtime! + definition.lockfile = options["lockfile"] if options["lockfile"] definition.lockfile = false if options["no-lock"] installer = Installer.install(Bundler.root, definition, options) diff --git a/bundler/lib/bundler/man/bundle-install.1 b/bundler/lib/bundler/man/bundle-install.1 index 1acbe430585e..68530f3ebb58 100644 --- a/bundler/lib/bundler/man/bundle-install.1 +++ b/bundler/lib/bundler/man/bundle-install.1 @@ -4,7 +4,7 @@ .SH "NAME" \fBbundle\-install\fR \- Install the dependencies specified in your Gemfile .SH "SYNOPSIS" -\fBbundle install\fR [\-\-force] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-local] [\-\-no\-cache] [\-\-no\-lock] [\-\-prefer\-local] [\-\-quiet] [\-\-retry=NUMBER] [\-\-standalone[=GROUP[ GROUP\|\.\|\.\|\.]]] [\-\-trust\-policy=TRUST\-POLICY] [\-\-target\-rbconfig=TARGET\-RBCONFIG] +\fBbundle install\fR [\-\-force] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-jobs=NUMBER] [\-\-local] [\-\-lockfile=LOCKFILE] [\-\-no\-cache] [\-\-no\-lock] [\-\-prefer\-local] [\-\-quiet] [\-\-retry=NUMBER] [\-\-standalone[=GROUP[ GROUP\|\.\|\.\|\.]]] [\-\-trust\-policy=TRUST\-POLICY] [\-\-target\-rbconfig=TARGET\-RBCONFIG] .SH "DESCRIPTION" Install the gems specified in your Gemfile(5)\. If this is the first time you run bundle install (and a \fBGemfile\.lock\fR does not exist), Bundler will fetch all remote sources, resolve dependencies and install all needed gems\. .P @@ -28,6 +28,9 @@ The maximum number of parallel download and install jobs\. The default is the nu \fB\-\-local\fR Do not attempt to connect to \fBrubygems\.org\fR\. Instead, Bundler will use the gems already present in Rubygems' cache or in \fBvendor/cache\fR\. Note that if an appropriate platform\-specific gem exists on \fBrubygems\.org\fR it will not be found\. .TP +\fB\-\-lockfile=LOCKFILE\fR +The location of the lockfile which Bundler should use\. This defaults to the Gemfile location with \fB\.lock\fR appended\. +.TP \fB\-\-prefer\-local\fR Force using locally installed gems, or gems already present in Rubygems' cache or in \fBvendor/cache\fR, when resolving, even if newer versions are available remotely\. Only attempt to connect to \fBrubygems\.org\fR for gems that are not present locally\. .TP diff --git a/bundler/lib/bundler/man/bundle-install.1.ronn b/bundler/lib/bundler/man/bundle-install.1.ronn index adb47490d74b..c7d88bfb73c3 100644 --- a/bundler/lib/bundler/man/bundle-install.1.ronn +++ b/bundler/lib/bundler/man/bundle-install.1.ronn @@ -8,6 +8,7 @@ bundle-install(1) -- Install the dependencies specified in your Gemfile [--gemfile=GEMFILE] [--jobs=NUMBER] [--local] + [--lockfile=LOCKFILE] [--no-cache] [--no-lock] [--prefer-local] @@ -61,6 +62,10 @@ update process below under [CONSERVATIVE UPDATING][]. appropriate platform-specific gem exists on `rubygems.org` it will not be found. +* `--lockfile=LOCKFILE`: + The location of the lockfile which Bundler should use. This defaults + to the Gemfile location with `.lock` appended. + * `--prefer-local`: Force using locally installed gems, or gems already present in Rubygems' cache or in `vendor/cache`, when resolving, even if newer versions are available diff --git a/bundler/lib/bundler/man/gemfile.5 b/bundler/lib/bundler/man/gemfile.5 index f345580ed77e..fce7d8e17843 100644 --- a/bundler/lib/bundler/man/gemfile.5 +++ b/bundler/lib/bundler/man/gemfile.5 @@ -492,10 +492,12 @@ When determining path to the lockfile or whether to create a lockfile, the follo .IP "1." 4 The \fBbundle install\fR \fB\-\-no\-lock\fR option (which disables lockfile creation)\. .IP "2." 4 -The \fBlockfile\fR method in the Gemfile\. +The \fBbundle install\fR \fB\-\-lockfile\fR option\. .IP "3." 4 -The \fBBUNDLE_LOCKFILE\fR environment variable\. +The \fBlockfile\fR method in the Gemfile\. .IP "4." 4 +The \fBBUNDLE_LOCKFILE\fR environment variable\. +.IP "5." 4 The default behavior of adding \fB\.lock\fR to the end of the Gemfile name\. .IP "" 0 diff --git a/bundler/lib/bundler/man/gemfile.5.ronn b/bundler/lib/bundler/man/gemfile.5.ronn index 3dea29cb3c6a..e4bc91359e3c 100644 --- a/bundler/lib/bundler/man/gemfile.5.ronn +++ b/bundler/lib/bundler/man/gemfile.5.ronn @@ -580,6 +580,7 @@ When determining path to the lockfile or whether to create a lockfile, the following precedence is used: 1. The `bundle install` `--no-lock` option (which disables lockfile creation). -2. The `lockfile` method in the Gemfile. -3. The `BUNDLE_LOCKFILE` environment variable. -4. The default behavior of adding `.lock` to the end of the Gemfile name. +1. The `bundle install` `--lockfile` option. +1. The `lockfile` method in the Gemfile. +1. The `BUNDLE_LOCKFILE` environment variable. +1. The default behavior of adding `.lock` to the end of the Gemfile name. diff --git a/bundler/spec/commands/install_spec.rb b/bundler/spec/commands/install_spec.rb index 69d9a8609961..bacd8d64f2d6 100644 --- a/bundler/spec/commands/install_spec.rb +++ b/bundler/spec/commands/install_spec.rb @@ -41,6 +41,17 @@ expect(bundled_app("OmgFile.lock")).to exist end + it "creates lockfile based on --lockfile option is given" do + gemfile bundled_app("OmgFile"), <<-G + source "https://gem.repo1/" + gem "myrack", "1.0" + G + + bundle "install --gemfile OmgFile --lockfile ReallyOmgFile.lock" + + expect(bundled_app("ReallyOmgFile.lock")).to exist + end + it "does not make a lockfile if lockfile false is used in Gemfile" do install_gemfile <<-G lockfile false @@ -100,6 +111,18 @@ expect(bundled_app("OmgFile.lock")).not_to exist end + it "doesn't create a lockfile if --no-lock and --lockfile options are given" do + gemfile bundled_app("OmgFile"), <<-G + source "https://gem.repo1/" + gem "myrack", "1.0" + G + + bundle "install --gemfile OmgFile --no-lock --lockfile ReallyOmgFile.lock" + + expect(bundled_app("OmgFile.lock")).not_to exist + expect(bundled_app("ReallyOmgFile.lock")).not_to exist + end + it "doesn't delete the lockfile if one already exists" do install_gemfile <<-G source "https://gem.repo1/" From 34445f1ae21b486b9c795c7f849b7b6d858f8d99 Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Mon, 24 Nov 2025 17:33:03 -0500 Subject: [PATCH 207/295] Add SIGABRT to reserved signals in bundler spec Reverse sync https://github.com/ruby/ruby/commit/35445a736f509e6edbba8a08d8e4af69c206368a --- bundler/spec/commands/exec_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/spec/commands/exec_spec.rb b/bundler/spec/commands/exec_spec.rb index 1ac308bdda4b..19e836053fa1 100644 --- a/bundler/spec/commands/exec_spec.rb +++ b/bundler/spec/commands/exec_spec.rb @@ -1020,7 +1020,7 @@ def bin_path(a,b,c) context "signal handling" do let(:test_signals) do open3_reserved_signals = %w[CHLD CLD PIPE] - reserved_signals = %w[SEGV BUS ILL FPE VTALRM KILL STOP EXIT] + reserved_signals = %w[SEGV BUS ILL FPE ABRT IOT VTALRM KILL STOP EXIT] bundler_signals = %w[INT] Signal.list.keys - (bundler_signals + reserved_signals + open3_reserved_signals) From ea0885c63cac483ee7ed92cef698aa46ec0f0566 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 26 Nov 2025 09:42:57 +0900 Subject: [PATCH 208/295] Make gemspec version dynamic by reading from rubygems.rb and add test Co-authored-by: Sutou Kouhei --- rubygems-update.gemspec | 4 +++- test/test_gemspec.rb | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 test/test_gemspec.rb diff --git a/rubygems-update.gemspec b/rubygems-update.gemspec index ef52a2c0edf2..365eba6048a1 100644 --- a/rubygems-update.gemspec +++ b/rubygems-update.gemspec @@ -1,8 +1,10 @@ # frozen_string_literal: true +version = File.read(File.join(__dir__, "lib", "rubygems.rb"))[/^\s*VERSION\s*=\s*"(.*)"/, 1] + Gem::Specification.new do |s| s.name = "rubygems-update" - s.version = "4.0.0.beta1" + s.version = version s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"] s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"] diff --git a/test/test_gemspec.rb b/test/test_gemspec.rb new file mode 100644 index 000000000000..4a9136525046 --- /dev/null +++ b/test/test_gemspec.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +require_relative "rubygems/helper" + +class GemspecTest < Test::Unit::TestCase + def setup + @gemspec = Gem::Specification.load(File.expand_path("../rubygems-update.gemspec", __dir__)) + end + + def test_gemspec_version + assert_equal Gem::Version, @gemspec.version.class + assert_equal Gem::VERSION, @gemspec.version.to_s + end +end From ed703651621516b82c7630b9aea2a531be9cdd79 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 26 Nov 2025 11:36:49 +0900 Subject: [PATCH 209/295] Support pre-release for generating changelog --- tool/release.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/release.rb b/tool/release.rb index 0eaebcab14e4..53c9ea8bb428 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -160,7 +160,7 @@ def initialize(version) @previous_stable_branch = @level == :minor_or_major ? "#{segments[0]}.#{segments[1] - 1}" : @stable_branch @previous_stable_branch = "3.7" if @stable_branch == "4.0" - @previous_release_tag = if @level == :minor_or_major + @previous_release_tag = if @level == :minor_or_major && segments.size < 4 "v#{@previous_stable_branch}.0" else `git describe --tags --abbrev=0`.strip From 2953c5dd124ed050bf9106990de6a396c6f997e9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 26 Nov 2025 13:20:30 +0900 Subject: [PATCH 210/295] Add bundle update command to Bundler installation instructions --- Rakefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Rakefile b/Rakefile index 137db99f7e69..b78cc9bae5a5 100644 --- a/Rakefile +++ b/Rakefile @@ -397,6 +397,7 @@ To update to the latest RubyGems you can run: To update to the latest Bundler you can run: gem install bundler [--pre] + bundle update --bundler=#{v} ## RubyGems Release Notes From f0df0caf213bee20f1b2d02c545e16bcef71e442 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 26 Nov 2025 13:25:11 +0900 Subject: [PATCH 211/295] Invoke bundler changelog generation in rubygems changelog task --- Rakefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Rakefile b/Rakefile index b78cc9bae5a5..23781612b6fd 100644 --- a/Rakefile +++ b/Rakefile @@ -181,6 +181,7 @@ task :generate_changelog, [:version] => [:install_release_dependencies] do |_t, require_relative "tool/release" Release.for_rubygems(opts[:version]).cut_changelog! + Rake::Task["bundler:generate_changelog"].invoke(opts[:version]) end desc "Release rubygems-#{v}" From b8529f48bfb9a9c99335e9fdd9506eb7245713b4 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 26 Nov 2025 13:39:21 +0900 Subject: [PATCH 212/295] Bump up to 4.0.0.beta2 --- bundler/lib/bundler/version.rb | 2 +- bundler/spec/realworld/fixtures/tapioca/Gemfile.lock | 2 +- bundler/spec/realworld/fixtures/warbler/Gemfile.lock | 2 +- lib/rubygems.rb | 2 +- tool/bundler/dev_gems.rb.lock | 2 +- tool/bundler/lint_gems.rb.lock | 2 +- tool/bundler/release_gems.rb.lock | 2 +- tool/bundler/rubocop_gems.rb.lock | 2 +- tool/bundler/standard_gems.rb.lock | 2 +- tool/bundler/test_gems.rb.lock | 2 +- tool/bundler/vendor_gems.rb.lock | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/bundler/lib/bundler/version.rb b/bundler/lib/bundler/version.rb index 4acf10c6153e..3a5b5fd86bda 100644 --- a/bundler/lib/bundler/version.rb +++ b/bundler/lib/bundler/version.rb @@ -1,7 +1,7 @@ # frozen_string_literal: false module Bundler - VERSION = "4.0.0.beta1".freeze + VERSION = "4.0.0.beta2".freeze def self.bundler_major_version @bundler_major_version ||= gem_version.segments.first diff --git a/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock index 4a96e12169b7..6f86f3192ec3 100644 --- a/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock +++ b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock @@ -46,4 +46,4 @@ DEPENDENCIES tapioca BUNDLED WITH - 4.0.0.beta1 + 4.0.0.beta2 diff --git a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock index 8a13873f01b2..42036fc23d17 100644 --- a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock +++ b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock @@ -36,4 +36,4 @@ DEPENDENCIES warbler! BUNDLED WITH - 4.0.0.beta1 + 4.0.0.beta2 diff --git a/lib/rubygems.rb b/lib/rubygems.rb index 8530a2a893cb..52ccf1015950 100644 --- a/lib/rubygems.rb +++ b/lib/rubygems.rb @@ -9,7 +9,7 @@ require "rbconfig" module Gem - VERSION = "4.0.0.beta1" + VERSION = "4.0.0.beta2" end require_relative "rubygems/defaults" diff --git a/tool/bundler/dev_gems.rb.lock b/tool/bundler/dev_gems.rb.lock index 29e0a574bba8..cb2d6b4106f4 100644 --- a/tool/bundler/dev_gems.rb.lock +++ b/tool/bundler/dev_gems.rb.lock @@ -129,4 +129,4 @@ CHECKSUMS turbo_tests (2.2.5) sha256=3fa31497d12976d11ccc298add29107b92bda94a90d8a0a5783f06f05102509f BUNDLED WITH - 4.0.0.beta1 + 4.0.0.beta2 diff --git a/tool/bundler/lint_gems.rb.lock b/tool/bundler/lint_gems.rb.lock index 699d0c206fcc..9b8eb821d657 100644 --- a/tool/bundler/lint_gems.rb.lock +++ b/tool/bundler/lint_gems.rb.lock @@ -119,4 +119,4 @@ CHECKSUMS wmi-lite (1.0.7) sha256=116ef5bb470dbe60f58c2db9047af3064c16245d6562c646bc0d90877e27ddda BUNDLED WITH - 4.0.0.beta1 + 4.0.0.beta2 diff --git a/tool/bundler/release_gems.rb.lock b/tool/bundler/release_gems.rb.lock index df753e5c24e4..0feee439d186 100644 --- a/tool/bundler/release_gems.rb.lock +++ b/tool/bundler/release_gems.rb.lock @@ -87,4 +87,4 @@ CHECKSUMS uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 BUNDLED WITH - 4.0.0.beta1 + 4.0.0.beta2 diff --git a/tool/bundler/rubocop_gems.rb.lock b/tool/bundler/rubocop_gems.rb.lock index 10a81012e4d6..5cd23d7ef8bb 100644 --- a/tool/bundler/rubocop_gems.rb.lock +++ b/tool/bundler/rubocop_gems.rb.lock @@ -156,4 +156,4 @@ CHECKSUMS unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5 BUNDLED WITH - 4.0.0.beta1 + 4.0.0.beta2 diff --git a/tool/bundler/standard_gems.rb.lock b/tool/bundler/standard_gems.rb.lock index 8f4eba83c51b..20b7d1539299 100644 --- a/tool/bundler/standard_gems.rb.lock +++ b/tool/bundler/standard_gems.rb.lock @@ -176,4 +176,4 @@ CHECKSUMS unicode-emoji (4.1.0) sha256=4997d2d5df1ed4252f4830a9b6e86f932e2013fbff2182a9ce9ccabda4f325a5 BUNDLED WITH - 4.0.0.beta1 + 4.0.0.beta2 diff --git a/tool/bundler/test_gems.rb.lock b/tool/bundler/test_gems.rb.lock index 8c8c9b774365..44a2cdcd969d 100644 --- a/tool/bundler/test_gems.rb.lock +++ b/tool/bundler/test_gems.rb.lock @@ -100,4 +100,4 @@ CHECKSUMS tilt (2.6.1) sha256=35a99bba2adf7c1e362f5b48f9b581cce4edfba98117e34696dde6d308d84770 BUNDLED WITH - 4.0.0.beta1 + 4.0.0.beta2 diff --git a/tool/bundler/vendor_gems.rb.lock b/tool/bundler/vendor_gems.rb.lock index 1c8889d4d229..016ac81c4bde 100644 --- a/tool/bundler/vendor_gems.rb.lock +++ b/tool/bundler/vendor_gems.rb.lock @@ -72,4 +72,4 @@ CHECKSUMS uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 BUNDLED WITH - 4.0.0.beta1 + 4.0.0.beta2 From 743810236c9f6f98e181b094d1722ca79774962a Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 26 Nov 2025 13:39:31 +0900 Subject: [PATCH 213/295] Added changelog for RubyGems 4.0.0.beta2 --- CHANGELOG.md | 18 ++++++++++++++++++ bundler/CHANGELOG.md | 21 +++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa269d387a1d..9bce12ec87de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## 4.0.0.beta2 / 2025-11-26 + +### Deprecations: + +* Deprecate comparing Gem::Version objects with strings. Pull request + [#9085](https://github.com/ruby/rubygems/pull/9085) by tenderlove + +### Enhancements: + +* Undeprecate Gem::Version#<=> against strings. Pull request + [#9110](https://github.com/ruby/rubygems/pull/9110) by byroot +* Installs bundler 4.0.0.beta2 as a default gem. + +### Bug fixes: + +* Respect `BUNDLE_VERSION` config at Gem::BundlerVersionFinder. Pull + request [#9106](https://github.com/ruby/rubygems/pull/9106) by hsbt + ## 4.0.0.beta1 / 2025-11-20 ### Security: diff --git a/bundler/CHANGELOG.md b/bundler/CHANGELOG.md index ae06b9c0b4d4..b4b6c08f7a81 100644 --- a/bundler/CHANGELOG.md +++ b/bundler/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## 4.0.0.beta2 (2025-11-26) + +### Features: + + - Support bundle install --lockfile option [#9111](https://github.com/ruby/rubygems/pull/9111) + - Add support for lockfile in Gemfile and bundle install --no-lock [#9059](https://github.com/ruby/rubygems/pull/9059) + +### Performance: + + - Run git operations in parallel to speed things up: [#9100](https://github.com/ruby/rubygems/pull/9100) + +### Enhancements: + + - Fixup GH-9085 [#9108](https://github.com/ruby/rubygems/pull/9108) + - Add go_gem/rake_task for Go native extention gem skeleton [#9105](https://github.com/ruby/rubygems/pull/9105) + - Keep legacy windows platform, not removed them [#9104](https://github.com/ruby/rubygems/pull/9104) + +### Bug fixes: + + - Check for file existence before deletion from cache [#9095](https://github.com/ruby/rubygems/pull/9095) + ## 4.0.0.beta1 (2025-11-20) ### Security: From ed633d0b6a13fb493cd9b0137c8240d514b0307c Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 26 Nov 2025 14:45:26 +0900 Subject: [PATCH 214/295] typofix --- bundler/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundler/CHANGELOG.md b/bundler/CHANGELOG.md index b4b6c08f7a81..94701b0e23fc 100644 --- a/bundler/CHANGELOG.md +++ b/bundler/CHANGELOG.md @@ -14,7 +14,7 @@ ### Enhancements: - Fixup GH-9085 [#9108](https://github.com/ruby/rubygems/pull/9108) - - Add go_gem/rake_task for Go native extention gem skeleton [#9105](https://github.com/ruby/rubygems/pull/9105) + - Add go_gem/rake_task for Go native extension gem skeleton [#9105](https://github.com/ruby/rubygems/pull/9105) - Keep legacy windows platform, not removed them [#9104](https://github.com/ruby/rubygems/pull/9104) ### Bug fixes: From 9ed227733cf5d7f2578635535a53c2e6c1023d1e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 26 Nov 2025 16:02:44 +0900 Subject: [PATCH 215/295] Remove Ruby 3.2 from Windows CI matrix to improve build times --- .github/workflows/bundler.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/bundler.yml b/.github/workflows/bundler.yml index 1da5b754d6e8..20d9d364c778 100644 --- a/.github/workflows/bundler.yml +++ b/.github/workflows/bundler.yml @@ -38,7 +38,7 @@ jobs: - { os: { name: macOS, value: macos-15 }, ruby: { name: ruby-3.3, value: 3.3.9 }, timeout: 90 } - { os: { name: macOS, value: macos-15 }, ruby: { name: ruby-3.4, value: 3.4.5 }, timeout: 90 } - - { os: { name: Windows, value: windows-2025 }, ruby: { name: ruby-3.2, value: 3.2.9 }, timeout: 150 } + # Ruby 3.2 is about 20 minutes slower than 3.3/3.4, so it will be excluded from testing. - { os: { name: Windows, value: windows-2025 }, ruby: { name: ruby-3.3, value: 3.3.9 }, timeout: 150 } - { os: { name: Windows, value: windows-2025 }, ruby: { name: ruby-3.4, value: 3.4.5 }, timeout: 150 } From 8e2f88a553b74d27d00347cbdf54936246fe1319 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 27 Nov 2025 14:19:21 +0900 Subject: [PATCH 216/295] Unified release doc from bundler and rubygems. --- doc/RELEASE.md | 163 +++++++++++++++++++++++++++++++++++++++ doc/bundler/POLICIES.md | 18 ----- doc/rubygems/POLICIES.md | 144 ---------------------------------- 3 files changed, 163 insertions(+), 162 deletions(-) create mode 100644 doc/RELEASE.md diff --git a/doc/RELEASE.md b/doc/RELEASE.md new file mode 100644 index 000000000000..aabf04a14590 --- /dev/null +++ b/doc/RELEASE.md @@ -0,0 +1,163 @@ +# Release + +## Release guidelines + +**tl;dr**: Majors about once per year, minors for any finished features with docs, patches for any committed bugfix. + +Patch (bugfix) releases should generally be cut as soon as possible. A patch release for a single bugfix PR is totally okay. + +Minor (feature) releases can be cut anytime at least one new feature is ready, but don't have to be. Minor version releases must update their major version's man pages and docs website as needed, and should each have their own "What's new?" section. + +Major (breaking) version releases should be cut no more than once per year, and must include a new section of the docs website dedicated to that major version. Ideally, major releases will happen after a Ruby version loses support in February or March, to help us stay in sync with Ruby versions supported by the core team. + +Breaking changes other than dropping support for old Ruby versions should be avoided whenever possible, but may be included in major releases. In general, breaking changes should include at least one major version (and one year elapsed) with a deprecation warning before the breaking change takes effect. + +### User experience guidelines + +The experience of using Bundler should not include surprises. If users are surprised, we did something wrong, and we should fix it. There are no user errors, only UX design failures. Warnings should always include actionable instructions to resolve them. Errors should include instructions, helpful references, or other information to help users attempt to debug. + +Changing existing behavior is also surprising. If reducing user surprise will result in a backwards-incompatible change, that change should include at least one major version of deprecation warning before the breaking change is made. + +## Release Process + +### Permissions + +You'll need the following environment variables set to release RubyGems & +Bundler: + +* AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY: to be able to push RubyGems zip + files to s3 so that they appear at RubyGems [download page]. + +* GITHUB_RELEASE_PAT: A [GitHub PAT] with repo permissions, in order to push + GitHub releases and to use the GitHub API for changelog generation. + +[download page]: https://rubygems.org/pages/download +[GitHub PAT]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token + +### Recommendations for security releases + +* Obtain CVE numbers as needed from HackerOne or Red Hat. +* Agree on a release date with ruby-core, so patches can be backported to + older Ruby versions as needed. +* Avoid releasing security updates on Fridays, so platform services don't + have to work on weekends. +* Continue with the regular release process below. + +### Branching + +Bundler releases are synchronized with rubygems releases at the moment. That +means that releases for both share the same stable branch, and they should +generally happen together. + +The current conventional naming for stable branches is `x+1.y`, where `x.y` is +the version of `bundler` that will be released. This is because `rubygems-x+1.y` +will be released at the same time. + +For example, `rubygems-3.2.0` and `bundler-2.2.0` were both released from the +`3.2` stable branch. + +Once a stable branch has been cut from `master`, changes for that minor release +series are only made _intentionally_, via patch releases. That is to say, +changes to `master` by default _won't_ make their way into the current stable +branch, and development on `master` will be targeting the next minor +or major release. + +There is a `bin/rake prepare_release[]` rake task +that helps with creating a release. It takes a single argument, the _exact +rubygems release_ being made (e.g. `3.2.3` when releasing bundler `2.2.3`). +This task checks out the appropriate stable branch (`3.2`, for example), grabs +all merged but unreleased PRs from both bundler & rubygems from GitHub that are +compatible with the target release level, and then cherry-picks those changes +(and only those changes) to a new branch based off the stable branch. Then bumps +the version in all version files, synchronizes both changelogs to include all +backported changes and commits that change on top of the cherry-picks. + +Note that this task requires all user facing pull requests to be tagged with +specific labels. See [Merging a PR](../bundler/playbooks/MERGING_A_PR.md) for details. + +Also note that when this task cherry-picks, it cherry-picks the merge commits +using the following command: + +```bash +$ git cherry-pick -m 1 MERGE_COMMIT_SHAS +``` + +For example, for PR [#5029](https://github.com/rubygems/bundler/pull/5029), we +cherry picked commit [dd6aef9](https://github.com/rubygems/bundler/commit/dd6aef97a5f2e7173f406267256a8c319d6134ab), +not [4fe9291](https://github.com/rubygems/bundler/commit/4fe92919f51e3463f0aad6fa833ab68044311f03) +using: + +```bash +$ git cherry-pick -m 1 dd6aef9 +``` + +After running the task, you'll have a release branch ready to be merged into the +stable branch. You'll want to open a PR from this branch into the stable branch +and provided CI is green, you can go ahead, merge the PR and run release tasks +as specified below from the updated stable branch. + +### Automatic changelog and backport generation + +PR labels and titles are used to automatically generate changelogs for patch and +minor releases. + +When releasing, a changelog generation script goes through all PRs that have +never made it into a release, and selects only the ones with specific labels as +detailed in the `.changelog.yml` and `bundler/.changelog.yml` files. Those +particular PRs get backported to the stable branch and included in the release +changelog. + +If PRs don't have a proper label, they won't be backported to patch releases. + +If you want a PR to be backported to a patch level release, but don't want to +include it in the changelog, you can use the special `rubygems: skip changelog` +and `bundler: skip changelog` labels. For example, this is useful when +backporting a PR generates conflicts that are solved by backporting another PR +with no user visible changes. You can use these special labels to also backport +the other PR and not get any conflicts. + +### Breaking changes + +Bundler cares a lot about preserving compatibility. As a result, changes that +break backwards compatibility should (whenever this is possible) include a feature +release that is backwards compatible, and issue warnings for all options and +behaviors that will change. + +We only release major breaking changes when incrementing the _major_ version of +Bundler and RubyGems. However, experience shows that almost every single part of +Bundler and RubyGems is depended on by someone in ways hard to anticipate. So if +we were strict about breaking changes we'd need to hold on from making progress +a lot, or continuously increment the major version, emptying "really major" +versions from their meaning. Because of this, we also may release "small" +breaking changes in minor releases. "Small" here means that we expect them to +affect only very few users in rare cases. + +### Steps for patch releases + +* Confirm all PRs that you want backported are properly tagged with `rubygems: + ` or `bundler: ` labels at GitHub. +* Run `bin/rake prepare_release[]`. This will create + a PR to the stable branch with the backports included in the release, and + proper changelogs and version bumps. It will also create a PR to merge + release changelogs into master. +* Once CI passes, merge the release PR, switch to the stable branch and pull + the PR just merged. +* Release `bundler` with `bin/rake bundler:release`. +* Release `rubygems` with `bin/rake release`. + +### Steps for minor and major releases + +* Confirm all PRs that you want listed in changelogs are properly tagged with + `rubygems: ` or `bundler: ` labels at GitHub. +* Run `bin/rake prepare_release[]`. This will create + a new stable branch off the master branch, and create a PR to it with the + proper version bumps and changelogs. It will also create a PR to merge + release changelogs into master. +* Replace the stable branch in the workflows with the new stable branch, and + push that change to the release PR. +* Replace version numbers with the next ".dev" version, and push that change + to the master PR. +* Once CI passes, merge the release PR, switch to the stable branch and pull + the PR just merged. +* Release `bundler` with `bin/rake bundler:release`. +* Release `rubygems` with `bin/rake release`. diff --git a/doc/bundler/POLICIES.md b/doc/bundler/POLICIES.md index ad2e44fadbad..4cee19647049 100644 --- a/doc/bundler/POLICIES.md +++ b/doc/bundler/POLICIES.md @@ -59,24 +59,6 @@ As of May, 2024, that means Bundler 2.5 is the only supported version, but the B These policies are not a guarantee that any particular fix will be backported. Instead, this is a way for us to set an upper limit on the versions of Ruby, RubyGems, and Bundler that we have to consider while making changes. Without the limit, the number of versions grows exponentially over time and quickly becomes overwhelming, which leads to maintainer burnout. We want to avoid that. -## Release guidelines - -**tl;dr**: Majors about once per year, minors for any finished features with docs, patches for any committed bugfix. - -Patch (bugfix) releases should generally be cut as soon as possible. A patch release for a single bugfix PR is totally okay. - -Minor (feature) releases can be cut anytime at least one new feature is ready, but don't have to be. Minor version releases must update their major version's man pages and docs website as needed, and should each have their own "What's new?" section. - -Major (breaking) version releases should be cut no more than once per year, and must include a new section of the docs website dedicated to that major version. Ideally, major releases will happen after a Ruby version loses support in February or March, to help us stay in sync with Ruby versions supported by the core team. - -Breaking changes other than dropping support for old Ruby versions should be avoided whenever possible, but may be included in major releases. In general, breaking changes should include at least one major version (and one year elapsed) with a deprecation warning before the breaking change takes effect. - -### User experience guidelines - -The experience of using Bundler should not include surprises. If users are surprised, we did something wrong, and we should fix it. There are no user errors, only UX design failures. Warnings should always include actionable instructions to resolve them. Errors should include instructions, helpful references, or other information to help users attempt to debug. - -Changing existing behavior is also surprising. If reducing user surprise will result in a backwards-incompatible change, that change should include at least one major version of deprecation warning before the breaking change is made. - ## Issue guidelines Anyone is welcome to open an issue, or comment on an issue. Issue comments without useful content (like “me too”) may be removed. diff --git a/doc/rubygems/POLICIES.md b/doc/rubygems/POLICIES.md index ea44f09ca9b8..ce6ea9c29b23 100644 --- a/doc/rubygems/POLICIES.md +++ b/doc/rubygems/POLICIES.md @@ -40,150 +40,6 @@ releases will only support Ruby 2.3 and above. As of this writing RubyGems is at version 2.7, so when RubyGems 2.8 is released, it will only support Ruby 2.3 and later. -## Release Process - -### Permissions - -You'll need the following environment variables set to release RubyGems & -Bundler: - -* AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY: to be able to push RubyGems zip - files to s3 so that they appear at RubyGems [download page]. - -* GITHUB_RELEASE_PAT: A [GitHub PAT] with repo permissions, in order to push - GitHub releases and to use the GitHub API for changelog generation. - -[download page]: https://rubygems.org/pages/download -[GitHub PAT]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token - -### Recommendations for security releases - -* Obtain CVE numbers as needed from HackerOne or Red Hat. -* Agree on a release date with ruby-core, so patches can be backported to - older Ruby versions as needed. -* Avoid releasing security updates on Fridays, so platform services don't - have to work on weekends. -* Continue with the regular release process below. - -### Branching - -Bundler releases are synchronized with rubygems releases at the moment. That -means that releases for both share the same stable branch, and they should -generally happen together. - -The current conventional naming for stable branches is `x+1.y`, where `x.y` is -the version of `bundler` that will be released. This is because `rubygems-x+1.y` -will be released at the same time. - -For example, `rubygems-3.2.0` and `bundler-2.2.0` were both released from the -`3.2` stable branch. - -Once a stable branch has been cut from `master`, changes for that minor release -series are only made _intentionally_, via patch releases. That is to say, -changes to `master` by default _won't_ make their way into the current stable -branch, and development on `master` will be targeting the next minor -or major release. - -There is a `bin/rake prepare_release[]` rake task -that helps with creating a release. It takes a single argument, the _exact -rubygems release_ being made (e.g. `3.2.3` when releasing bundler `2.2.3`). -This task checks out the appropriate stable branch (`3.2`, for example), grabs -all merged but unreleased PRs from both bundler & rubygems from GitHub that are -compatible with the target release level, and then cherry-picks those changes -(and only those changes) to a new branch based off the stable branch. Then bumps -the version in all version files, synchronizes both changelogs to include all -backported changes and commits that change on top of the cherry-picks. - -Note that this task requires all user facing pull requests to be tagged with -specific labels. See [Merging a PR](../bundler/playbooks/MERGING_A_PR.md) for details. - -Also note that when this task cherry-picks, it cherry-picks the merge commits -using the following command: - -```bash -$ git cherry-pick -m 1 MERGE_COMMIT_SHAS -``` - -For example, for PR [#5029](https://github.com/rubygems/bundler/pull/5029), we -cherry picked commit [dd6aef9](https://github.com/rubygems/bundler/commit/dd6aef97a5f2e7173f406267256a8c319d6134ab), -not [4fe9291](https://github.com/rubygems/bundler/commit/4fe92919f51e3463f0aad6fa833ab68044311f03) -using: - -```bash -$ git cherry-pick -m 1 dd6aef9 -``` - -After running the task, you'll have a release branch ready to be merged into the -stable branch. You'll want to open a PR from this branch into the stable branch -and provided CI is green, you can go ahead, merge the PR and run release tasks -as specified below from the updated stable branch. - -### Automatic changelog and backport generation - -PR labels and titles are used to automatically generate changelogs for patch and -minor releases. - -When releasing, a changelog generation script goes through all PRs that have -never made it into a release, and selects only the ones with specific labels as -detailed in the `.changelog.yml` and `bundler/.changelog.yml` files. Those -particular PRs get backported to the stable branch and included in the release -changelog. - -If PRs don't have a proper label, they won't be backported to patch releases. - -If you want a PR to be backported to a patch level release, but don't want to -include it in the changelog, you can use the special `rubygems: skip changelog` -and `bundler: skip changelog` labels. For example, this is useful when -backporting a PR generates conflicts that are solved by backporting another PR -with no user visible changes. You can use these special labels to also backport -the other PR and not get any conflicts. - -### Breaking changes - -Bundler cares a lot about preserving compatibility. As a result, changes that -break backwards compatibility should (whenever this is possible) include a feature -release that is backwards compatible, and issue warnings for all options and -behaviors that will change. - -We only release major breaking changes when incrementing the _major_ version of -Bundler and RubyGems. However, experience shows that almost every single part of -Bundler and RubyGems is depended on by someone in ways hard to anticipate. So if -we were strict about breaking changes we'd need to hold on from making progress -a lot, or continuously increment the major version, emptying "really major" -versions from their meaning. Because of this, we also may release "small" -breaking changes in minor releases. "Small" here means that we expect them to -affect only very few users in rare cases. - -### Steps for patch releases - -* Confirm all PRs that you want backported are properly tagged with `rubygems: - ` or `bundler: ` labels at GitHub. -* Run `bin/rake prepare_release[]`. This will create - a PR to the stable branch with the backports included in the release, and - proper changelogs and version bumps. It will also create a PR to merge - release changelogs into master. -* Once CI passes, merge the release PR, switch to the stable branch and pull - the PR just merged. -* Release `bundler` with `bin/rake bundler:release`. -* Release `rubygems` with `bin/rake release`. - -### Steps for minor and major releases - -* Confirm all PRs that you want listed in changelogs are properly tagged with - `rubygems: ` or `bundler: ` labels at GitHub. -* Run `bin/rake prepare_release[]`. This will create - a new stable branch off the master branch, and create a PR to it with the - proper version bumps and changelogs. It will also create a PR to merge - release changelogs into master. -* Replace the stable branch in the workflows with the new stable branch, and - push that change to the release PR. -* Replace version numbers with the next ".dev" version, and push that change - to the master PR. -* Once CI passes, merge the release PR, switch to the stable branch and pull - the PR just merged. -* Release `bundler` with `bin/rake bundler:release`. -* Release `rubygems` with `bin/rake release`. - ## Committer Access RubyGems committers may lose their commit privileges if they are inactive for From a854b7f0cf430ce739d67512f923bb4421c616ba Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 27 Nov 2025 14:23:51 +0900 Subject: [PATCH 217/295] Formatting markdown --- doc/RELEASE.md | 116 ++++++++++++------------------------------------- 1 file changed, 27 insertions(+), 89 deletions(-) diff --git a/doc/RELEASE.md b/doc/RELEASE.md index aabf04a14590..5c7154f675df 100644 --- a/doc/RELEASE.md +++ b/doc/RELEASE.md @@ -22,14 +22,11 @@ Changing existing behavior is also surprising. If reducing user surprise will re ### Permissions -You'll need the following environment variables set to release RubyGems & -Bundler: +You'll need the following environment variables set to release RubyGems & Bundler: -* AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY: to be able to push RubyGems zip - files to s3 so that they appear at RubyGems [download page]. +* AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY: to be able to push RubyGems zip files to s3 so that they appear at RubyGems [download page]. -* GITHUB_RELEASE_PAT: A [GitHub PAT] with repo permissions, in order to push - GitHub releases and to use the GitHub API for changelog generation. +* GITHUB_RELEASE_PAT: A [GitHub PAT] with repo permissions, in order to push GitHub releases and to use the GitHub API for changelog generation. [download page]: https://rubygems.org/pages/download [GitHub PAT]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token @@ -37,127 +34,68 @@ Bundler: ### Recommendations for security releases * Obtain CVE numbers as needed from HackerOne or Red Hat. -* Agree on a release date with ruby-core, so patches can be backported to - older Ruby versions as needed. -* Avoid releasing security updates on Fridays, so platform services don't - have to work on weekends. +* Agree on a release date with ruby-core, so patches can be backported to older Ruby versions as needed. +* Avoid releasing security updates on Fridays, so platform services don't have to work on weekends. * Continue with the regular release process below. ### Branching -Bundler releases are synchronized with rubygems releases at the moment. That -means that releases for both share the same stable branch, and they should -generally happen together. +Bundler releases are synchronized with rubygems releases at the moment. That means that releases for both share the same stable branch, and they should generally happen together. -The current conventional naming for stable branches is `x+1.y`, where `x.y` is -the version of `bundler` that will be released. This is because `rubygems-x+1.y` -will be released at the same time. +The current conventional naming for stable branches is `x+1.y`, where `x.y` is the version of `bundler` that will be released. This is because `rubygems-x+1.y` will be released at the same time. -For example, `rubygems-3.2.0` and `bundler-2.2.0` were both released from the -`3.2` stable branch. +For example, `rubygems-3.2.0` and `bundler-2.2.0` were both released from the `3.2` stable branch. -Once a stable branch has been cut from `master`, changes for that minor release -series are only made _intentionally_, via patch releases. That is to say, -changes to `master` by default _won't_ make their way into the current stable -branch, and development on `master` will be targeting the next minor -or major release. +Once a stable branch has been cut from `master`, changes for that minor release series are only made _intentionally_, via patch releases. That is to say, changes to `master` by default _won't_ make their way into the current stable branch, and development on `master` will be targeting the next minor or major release. -There is a `bin/rake prepare_release[]` rake task -that helps with creating a release. It takes a single argument, the _exact -rubygems release_ being made (e.g. `3.2.3` when releasing bundler `2.2.3`). -This task checks out the appropriate stable branch (`3.2`, for example), grabs -all merged but unreleased PRs from both bundler & rubygems from GitHub that are -compatible with the target release level, and then cherry-picks those changes -(and only those changes) to a new branch based off the stable branch. Then bumps -the version in all version files, synchronizes both changelogs to include all -backported changes and commits that change on top of the cherry-picks. +There is a `bin/rake prepare_release[]` rake task that helps with creating a release. It takes a single argument, the _exact rubygems release_ being made (e.g. `3.2.3` when releasing bundler `2.2.3`). This task checks out the appropriate stable branch (`3.2`, for example), grabs all merged but unreleased PRs from both bundler & rubygems from GitHub that are compatible with the target release level, and then cherry-picks those changes (and only those changes) to a new branch based off the stable branch. Then bumps the version in all version files, synchronizes both changelogs to include all backported changes and commits that change on top of the cherry-picks. -Note that this task requires all user facing pull requests to be tagged with -specific labels. See [Merging a PR](../bundler/playbooks/MERGING_A_PR.md) for details. +Note that this task requires all user facing pull requests to be tagged with specific labels. See [Merging a PR](../bundler/playbooks/MERGING_A_PR.md) for details. -Also note that when this task cherry-picks, it cherry-picks the merge commits -using the following command: +Also note that when this task cherry-picks, it cherry-picks the merge commits using the following command: ```bash $ git cherry-pick -m 1 MERGE_COMMIT_SHAS ``` -For example, for PR [#5029](https://github.com/rubygems/bundler/pull/5029), we -cherry picked commit [dd6aef9](https://github.com/rubygems/bundler/commit/dd6aef97a5f2e7173f406267256a8c319d6134ab), -not [4fe9291](https://github.com/rubygems/bundler/commit/4fe92919f51e3463f0aad6fa833ab68044311f03) -using: +For example, for PR [#5029](https://github.com/rubygems/bundler/pull/5029), we cherry picked commit [dd6aef9](https://github.com/rubygems/bundler/commit/dd6aef97a5f2e7173f406267256a8c319d6134ab), not [4fe9291](https://github.com/rubygems/bundler/commit/4fe92919f51e3463f0aad6fa833ab68044311f03) using: ```bash $ git cherry-pick -m 1 dd6aef9 ``` -After running the task, you'll have a release branch ready to be merged into the -stable branch. You'll want to open a PR from this branch into the stable branch -and provided CI is green, you can go ahead, merge the PR and run release tasks -as specified below from the updated stable branch. +After running the task, you'll have a release branch ready to be merged into the stable branch. You'll want to open a PR from this branch into the stable branch and provided CI is green, you can go ahead, merge the PR and run release tasks as specified below from the updated stable branch. ### Automatic changelog and backport generation -PR labels and titles are used to automatically generate changelogs for patch and -minor releases. +PR labels and titles are used to automatically generate changelogs for patch and minor releases. -When releasing, a changelog generation script goes through all PRs that have -never made it into a release, and selects only the ones with specific labels as -detailed in the `.changelog.yml` and `bundler/.changelog.yml` files. Those -particular PRs get backported to the stable branch and included in the release -changelog. +When releasing, a changelog generation script goes through all PRs that have never made it into a release, and selects only the ones with specific labels as detailed in the `.changelog.yml` and `bundler/.changelog.yml` files. Those particular PRs get backported to the stable branch and included in the release changelog. If PRs don't have a proper label, they won't be backported to patch releases. -If you want a PR to be backported to a patch level release, but don't want to -include it in the changelog, you can use the special `rubygems: skip changelog` -and `bundler: skip changelog` labels. For example, this is useful when -backporting a PR generates conflicts that are solved by backporting another PR -with no user visible changes. You can use these special labels to also backport -the other PR and not get any conflicts. +If you want a PR to be backported to a patch level release, but don't want to include it in the changelog, you can use the special `rubygems: skip changelog` and `bundler: skip changelog` labels. For example, this is useful when backporting a PR generates conflicts that are solved by backporting another PR with no user visible changes. You can use these special labels to also backport the other PR and not get any conflicts. ### Breaking changes -Bundler cares a lot about preserving compatibility. As a result, changes that -break backwards compatibility should (whenever this is possible) include a feature -release that is backwards compatible, and issue warnings for all options and -behaviors that will change. +Bundler cares a lot about preserving compatibility. As a result, changes that break backwards compatibility should (whenever this is possible) include a feature release that is backwards compatible, and issue warnings for all options and behaviors that will change. -We only release major breaking changes when incrementing the _major_ version of -Bundler and RubyGems. However, experience shows that almost every single part of -Bundler and RubyGems is depended on by someone in ways hard to anticipate. So if -we were strict about breaking changes we'd need to hold on from making progress -a lot, or continuously increment the major version, emptying "really major" -versions from their meaning. Because of this, we also may release "small" -breaking changes in minor releases. "Small" here means that we expect them to -affect only very few users in rare cases. +We only release major breaking changes when incrementing the _major_ version of Bundler and RubyGems. However, experience shows that almost every single part of Bundler and RubyGems is depended on by someone in ways hard to anticipate. So if we were strict about breaking changes we'd need to hold on from making progress a lot, or continuously increment the major version, emptying "really major" versions from their meaning. Because of this, we also may release "small" breaking changes in minor releases. "Small" here means that we expect them to affect only very few users in rare cases. ### Steps for patch releases -* Confirm all PRs that you want backported are properly tagged with `rubygems: - ` or `bundler: ` labels at GitHub. -* Run `bin/rake prepare_release[]`. This will create - a PR to the stable branch with the backports included in the release, and - proper changelogs and version bumps. It will also create a PR to merge - release changelogs into master. -* Once CI passes, merge the release PR, switch to the stable branch and pull - the PR just merged. +* Confirm all PRs that you want backported are properly tagged with `rubygems: ` or `bundler: ` labels at GitHub. +* Run `bin/rake prepare_release[]`. This will create a PR to the stable branch with the backports included in the release, and proper changelogs and version bumps. It will also create a PR to merge release changelogs into master. +* Once CI passes, merge the release PR, switch to the stable branch and pull the PR just merged. * Release `bundler` with `bin/rake bundler:release`. * Release `rubygems` with `bin/rake release`. ### Steps for minor and major releases -* Confirm all PRs that you want listed in changelogs are properly tagged with - `rubygems: ` or `bundler: ` labels at GitHub. -* Run `bin/rake prepare_release[]`. This will create - a new stable branch off the master branch, and create a PR to it with the - proper version bumps and changelogs. It will also create a PR to merge - release changelogs into master. -* Replace the stable branch in the workflows with the new stable branch, and - push that change to the release PR. -* Replace version numbers with the next ".dev" version, and push that change - to the master PR. -* Once CI passes, merge the release PR, switch to the stable branch and pull - the PR just merged. +* Confirm all PRs that you want listed in changelogs are properly tagged with `rubygems: ` or `bundler: ` labels at GitHub. +* Run `bin/rake prepare_release[]`. This will create a new stable branch off the master branch, and create a PR to it with the proper version bumps and changelogs. It will also create a PR to merge release changelogs into master. +* Replace the stable branch in the workflows with the new stable branch, and push that change to the release PR. +* Replace version numbers with the next ".dev" version, and push that change to the master PR. +* Once CI passes, merge the release PR, switch to the stable branch and pull the PR just merged. * Release `bundler` with `bin/rake bundler:release`. * Release `rubygems` with `bin/rake release`. From a636de839ffe0fbe2d9edd660a88870ded23db73 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 27 Nov 2025 14:26:56 +0900 Subject: [PATCH 218/295] Update release documentation to modernize and recent instructions included beta release. --- doc/RELEASE.md | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/doc/RELEASE.md b/doc/RELEASE.md index 5c7154f675df..3a7b8cd589f8 100644 --- a/doc/RELEASE.md +++ b/doc/RELEASE.md @@ -2,19 +2,19 @@ ## Release guidelines -**tl;dr**: Majors about once per year, minors for any finished features with docs, patches for any committed bugfix. +**tl;dr**: Majors about once per three or four years, minor releases about once per year, and both types require all features to be complete and fully documented, patches for any committed bugfix. Patch (bugfix) releases should generally be cut as soon as possible. A patch release for a single bugfix PR is totally okay. Minor (feature) releases can be cut anytime at least one new feature is ready, but don't have to be. Minor version releases must update their major version's man pages and docs website as needed, and should each have their own "What's new?" section. -Major (breaking) version releases should be cut no more than once per year, and must include a new section of the docs website dedicated to that major version. Ideally, major releases will happen after a Ruby version loses support in February or March, to help us stay in sync with Ruby versions supported by the core team. +Major (breaking) version releases should be cut no more than once per three or four years, and must include a new section of the docs website dedicated to that major version. Ideally, major releases will happen after a Ruby version loses support in February or March, to help us stay in sync with Ruby versions supported by the Ruby core team. Breaking changes other than dropping support for old Ruby versions should be avoided whenever possible, but may be included in major releases. In general, breaking changes should include at least one major version (and one year elapsed) with a deprecation warning before the breaking change takes effect. ### User experience guidelines -The experience of using Bundler should not include surprises. If users are surprised, we did something wrong, and we should fix it. There are no user errors, only UX design failures. Warnings should always include actionable instructions to resolve them. Errors should include instructions, helpful references, or other information to help users attempt to debug. +The experience of using RubyGems and Bundler should not include surprises. If users are surprised, we did something wrong, and we should fix it. There are no user errors, only UX design failures. Warnings should always include actionable instructions to resolve them. Errors should include instructions, helpful references, or other information to help users attempt to debug. Changing existing behavior is also surprising. If reducing user surprise will result in a backwards-incompatible change, that change should include at least one major version of deprecation warning before the breaking change is made. @@ -22,9 +22,9 @@ Changing existing behavior is also surprising. If reducing user surprise will re ### Permissions -You'll need the following environment variables set to release RubyGems & Bundler: +You'll need the following environment variables set to release RubyGems and Bundler: -* AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY: to be able to push RubyGems zip files to s3 so that they appear at RubyGems [download page]. +* AWS_PROFILE: to be able to push RubyGems zip files to s3 so that they appear at RubyGems [download page]. This profile is provided by AWS SSO credentials that is managed by Ruby Central. * GITHUB_RELEASE_PAT: A [GitHub PAT] with repo permissions, in order to push GitHub releases and to use the GitHub API for changelog generation. @@ -33,7 +33,7 @@ You'll need the following environment variables set to release RubyGems & Bundle ### Recommendations for security releases -* Obtain CVE numbers as needed from HackerOne or Red Hat. +* Obtain CVE numbers as needed from HackerOne or GitHub. * Agree on a release date with ruby-core, so patches can be backported to older Ruby versions as needed. * Avoid releasing security updates on Fridays, so platform services don't have to work on weekends. * Continue with the regular release process below. @@ -92,10 +92,25 @@ We only release major breaking changes when incrementing the _major_ version of ### Steps for minor and major releases +#### Preparation + * Confirm all PRs that you want listed in changelogs are properly tagged with `rubygems: ` or `bundler: ` labels at GitHub. -* Run `bin/rake prepare_release[]`. This will create a new stable branch off the master branch, and create a PR to it with the proper version bumps and changelogs. It will also create a PR to merge release changelogs into master. -* Replace the stable branch in the workflows with the new stable branch, and push that change to the release PR. -* Replace version numbers with the next ".dev" version, and push that change to the master PR. -* Once CI passes, merge the release PR, switch to the stable branch and pull the PR just merged. -* Release `bundler` with `bin/rake bundler:release`. +* Confirm to set `AWS_PROFILE` and `GITHUB_RELEASE_PAT` environment variables. + +#### Release + +* Create the release branch like `4-0-0` or `4-0-0-beta1`. +* Bump up version number at `lib/rubygems.rb` and `bundler/lib/bundler/version.rb`. +* Run `rake generate_changelog[4.0.0.beta1]` and `rake version:update_locked_bundler`. +* Run `DRYRUN=1 rake release` to verify that everything is working as expected. +* Push the release branch and open a PR to the stable branch. And confirm to CI passes. +* Tag the release commit with the proper version tag, e.g. `v4.0.0.beta1`. +* Push the tag to GitHub. * Release `rubygems` with `bin/rake release`. +* Release `bundler` with `bin/rake bundler:release`. + +#### Post-release + +* Replace version numbers with the next ".dev" version. +* Run `rake version:update_locked_bundler`, and push that change to the master PR. +* Once CI passes, merge the release PR, switch to the stable branch and pull the PR just merged. From d9214b169d908aafcf0e15277219762b73bcc173 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Thu, 27 Nov 2025 16:32:15 +0900 Subject: [PATCH 219/295] Remove italic formatting from change types in blog release notes --- tool/changelog.rb | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/tool/changelog.rb b/tool/changelog.rb index 90649a697d41..e13664035d01 100644 --- a/tool/changelog.rb +++ b/tool/changelog.rb @@ -77,13 +77,7 @@ def release_notes end def release_notes_for_blog - release_notes.map do |line| - if change_types.include?(line) - "_#{line}_" - else - line - end - end + release_notes end def change_types_for_blog From bf486f6d442d37aff1c267a0cd5125ff005c6a76 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 12:59:02 +0900 Subject: [PATCH 220/295] We don't need to update gemspec anymore --- tool/release.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/release.rb b/tool/release.rb index 53c9ea8bb428..96dffdf29fd1 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -96,7 +96,7 @@ def initialize(version, stable_branch) @version = Gem::Version.new(version) @stable_branch = stable_branch @changelog = Changelog.for_rubygems(version) - @version_files = [File.expand_path("../lib/rubygems.rb", __dir__), File.expand_path("../rubygems-update.gemspec", __dir__)] + @version_files = [File.expand_path("../lib/rubygems.rb", __dir__)] @tag_prefix = "v" end From 6ee607e6a03623107daaff03d89289ffc8cdc4b9 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 13:11:55 +0900 Subject: [PATCH 221/295] Disable destructive action --- tool/release.rb | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index 96dffdf29fd1..c60e2edaeaa1 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -194,7 +194,7 @@ def prepare! create_if_not_exist_and_switch_to(@stable_branch, from: "master") - system("git", "push", "origin", @stable_branch, exception: true) if @level == :minor_or_major + # system("git", "push", "origin", @stable_branch, exception: true) if @level == :minor_or_major create_if_not_exist_and_switch_to(@release_branch, from: @stable_branch) @@ -206,31 +206,31 @@ def prepare! bundler_changelog, rubygems_changelog = cut_changelogs_and_bump_versions - system("git", "push", exception: true) + # system("git", "push", exception: true) - gh_client.create_pull_request( - "ruby/rubygems", - @stable_branch, - @release_branch, - "Prepare RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", - "It's release day!" - ) + # gh_client.create_pull_request( + # "ruby/rubygems", + # @stable_branch, + # @release_branch, + # "Prepare RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", + # "It's release day!" + # ) create_if_not_exist_and_switch_to("cherry_pick_changelogs", from: "master") begin system("git", "cherry-pick", bundler_changelog, rubygems_changelog, exception: true) - system("git", "push", exception: true) + # system("git", "push", exception: true) rescue StandardError system("git", "cherry-pick", "--abort") else - gh_client.create_pull_request( - "ruby/rubygems", - "master", - "cherry_pick_changelogs", - "Changelogs for RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", - "Cherry-picking change logs from future RubyGems #{@rubygems.version} and Bundler #{@bundler.version} into master." - ) + # gh_client.create_pull_request( + # "ruby/rubygems", + # "master", + # "cherry_pick_changelogs", + # "Changelogs for RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", + # "Cherry-picking change logs from future RubyGems #{@rubygems.version} and Bundler #{@bundler.version} into master." + # ) end rescue StandardError, LoadError system("git", "checkout", initial_branch) From 3be629b75569838e6027c9d9ea51ec110784edb8 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 13:38:28 +0900 Subject: [PATCH 222/295] Replace hardcoded version checks with prerelease flag for accurate version determination --- tool/release.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index c60e2edaeaa1..c8a7b20befb8 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -131,7 +131,7 @@ def self.install_dependencies! def self.for_bundler(version) segments = Gem::Version.new(version).segments - rubygems_version = if segments[0] >= 4 + rubygems_version = if @prerelease segments.join(".") else segments.map.with_index {|s, i| i == 0 ? s + 1 : s }.join(".") @@ -155,12 +155,13 @@ def initialize(version) segments = Gem::Version.new(version).segments @level = segments[2] != 0 ? :patch : :minor_or_major + @prerelease = segments.size > 3 @stable_branch = segments[0, 2].join(".") @previous_stable_branch = @level == :minor_or_major ? "#{segments[0]}.#{segments[1] - 1}" : @stable_branch @previous_stable_branch = "3.7" if @stable_branch == "4.0" - @previous_release_tag = if @level == :minor_or_major && segments.size < 4 + @previous_release_tag = if @level == :minor_or_major && !@prerelease "v#{@previous_stable_branch}.0" else `git describe --tags --abbrev=0`.strip @@ -169,7 +170,7 @@ def initialize(version) rubygems_version = segments.join(".").gsub(/([a-z])\.(\d)/i, '\1\2') @rubygems = Rubygems.new(rubygems_version, @stable_branch) - bundler_version = if segments[0] >= 4 + bundler_version = if @prerelease segments.join(".") else segments.map.with_index {|s, i| i == 0 ? s - 1 : s }.join(".") From 363f3910e4b821386e5d06d0f91bcd9d1db6fb30 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 13:41:50 +0900 Subject: [PATCH 223/295] Simplify bundler version calculation in tool/release.rb --- tool/release.rb | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index c8a7b20befb8..3edd3b7ea814 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -101,17 +101,7 @@ def initialize(version, stable_branch) end def extra_entry - "Installs bundler #{bundler_version} as a default gem" - end - - private - - def bundler_version - if version.segments[0] >= 4 - version.to_s.gsub(/([a-z])\.(\d)/i, '\1\2') - else - version.segments.map.with_index {|s, i| i == 0 ? s - 1 : s }.join(".") - end + "Installs bundler #{@version} as a default gem" end end @@ -130,14 +120,7 @@ def self.install_dependencies! end def self.for_bundler(version) - segments = Gem::Version.new(version).segments - rubygems_version = if @prerelease - segments.join(".") - else - segments.map.with_index {|s, i| i == 0 ? s + 1 : s }.join(".") - end - - release = new(rubygems_version) + release = new(version) release.set_bundler_as_current_library release end @@ -170,13 +153,7 @@ def initialize(version) rubygems_version = segments.join(".").gsub(/([a-z])\.(\d)/i, '\1\2') @rubygems = Rubygems.new(rubygems_version, @stable_branch) - bundler_version = if @prerelease - segments.join(".") - else - segments.map.with_index {|s, i| i == 0 ? s - 1 : s }.join(".") - end - bundler_version = bundler_version.gsub(/([a-z])\.(\d)/i, '\1\2') - + bundler_version = segments.join(".").gsub(/([a-z])\.(\d)/i, '\1\2') @bundler = Bundler.new(bundler_version, @stable_branch) @release_branch = "release/bundler_#{bundler_version}_rubygems_#{rubygems_version}" From 57bb18ed53f7ddd4df4c384684660a84182d378b Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 13:47:08 +0900 Subject: [PATCH 224/295] Simplify release branch naming to use version directly --- tool/release.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tool/release.rb b/tool/release.rb index 3edd3b7ea814..10004b93caff 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -156,7 +156,7 @@ def initialize(version) bundler_version = segments.join(".").gsub(/([a-z])\.(\d)/i, '\1\2') @bundler = Bundler.new(bundler_version, @stable_branch) - @release_branch = "release/bundler_#{bundler_version}_rubygems_#{rubygems_version}" + @release_branch = "release/#{version}" end def set_bundler_as_current_library From 158ce0fe8bb53b60145edaee08c79640fb346b3e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 13:58:40 +0900 Subject: [PATCH 225/295] Skip stable branch creation and changelog cherry-picking for prerelease versions --- tool/release.rb | 46 +++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index 10004b93caff..b04b3a0cc679 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -170,11 +170,17 @@ def set_rubygems_as_current_library def prepare! initial_branch = `git rev-parse --abbrev-ref HEAD`.strip - create_if_not_exist_and_switch_to(@stable_branch, from: "master") - - # system("git", "push", "origin", @stable_branch, exception: true) if @level == :minor_or_major + unless @prerelease + create_if_not_exist_and_switch_to(@stable_branch, from: "master") + # system("git", "push", "origin", @stable_branch, exception: true) if @level == :minor_or_major + end - create_if_not_exist_and_switch_to(@release_branch, from: @stable_branch) + from_branch = if @level == :minor_or_major && @prerelease + "master" + else + @stable_branch + end + create_if_not_exist_and_switch_to(@release_branch, from: from_branch) begin @bundler.set_relevant_pull_requests_from(unreleased_pull_requests) @@ -194,21 +200,23 @@ def prepare! # "It's release day!" # ) - create_if_not_exist_and_switch_to("cherry_pick_changelogs", from: "master") - - begin - system("git", "cherry-pick", bundler_changelog, rubygems_changelog, exception: true) - # system("git", "push", exception: true) - rescue StandardError - system("git", "cherry-pick", "--abort") - else - # gh_client.create_pull_request( - # "ruby/rubygems", - # "master", - # "cherry_pick_changelogs", - # "Changelogs for RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", - # "Cherry-picking change logs from future RubyGems #{@rubygems.version} and Bundler #{@bundler.version} into master." - # ) + unless @prerelease + create_if_not_exist_and_switch_to("cherry_pick_changelogs", from: "master") + + begin + system("git", "cherry-pick", bundler_changelog, rubygems_changelog, exception: true) + # system("git", "push", exception: true) + rescue StandardError + system("git", "cherry-pick", "--abort") + else + # gh_client.create_pull_request( + # "ruby/rubygems", + # "master", + # "cherry_pick_changelogs", + # "Changelogs for RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", + # "Cherry-picking change logs from future RubyGems #{@rubygems.version} and Bundler #{@bundler.version} into master." + # ) + end end rescue StandardError, LoadError system("git", "checkout", initial_branch) From 4dc288c4936074e3de1d73c36068b7518b4b8d8a Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 14:06:35 +0900 Subject: [PATCH 226/295] Enabled git push and pull request again --- tool/release.rb | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index b04b3a0cc679..bea61616a67c 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -172,7 +172,7 @@ def prepare! unless @prerelease create_if_not_exist_and_switch_to(@stable_branch, from: "master") - # system("git", "push", "origin", @stable_branch, exception: true) if @level == :minor_or_major + system("git", "push", "origin", @stable_branch, exception: true) if @level == :minor_or_major end from_branch = if @level == :minor_or_major && @prerelease @@ -190,32 +190,32 @@ def prepare! bundler_changelog, rubygems_changelog = cut_changelogs_and_bump_versions - # system("git", "push", exception: true) + system("git", "push", exception: true) - # gh_client.create_pull_request( - # "ruby/rubygems", - # @stable_branch, - # @release_branch, - # "Prepare RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", - # "It's release day!" - # ) + gh_client.create_pull_request( + "ruby/rubygems", + from_branch, + @release_branch, + "Prepare RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", + "It's release day!" + ) unless @prerelease create_if_not_exist_and_switch_to("cherry_pick_changelogs", from: "master") begin system("git", "cherry-pick", bundler_changelog, rubygems_changelog, exception: true) - # system("git", "push", exception: true) + system("git", "push", exception: true) rescue StandardError system("git", "cherry-pick", "--abort") else - # gh_client.create_pull_request( - # "ruby/rubygems", - # "master", - # "cherry_pick_changelogs", - # "Changelogs for RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", - # "Cherry-picking change logs from future RubyGems #{@rubygems.version} and Bundler #{@bundler.version} into master." - # ) + gh_client.create_pull_request( + "ruby/rubygems", + "master", + "cherry_pick_changelogs", + "Changelogs for RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", + "Cherry-picking change logs from future RubyGems #{@rubygems.version} and Bundler #{@bundler.version} into master." + ) end end rescue StandardError, LoadError From f47e7c804141e5b141804b6dae6fc3f5a5312c82 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 14:14:35 +0900 Subject: [PATCH 227/295] Add git tag creation and push steps to release task --- Rakefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Rakefile b/Rakefile index 23781612b6fd..21c236b22490 100644 --- a/Rakefile +++ b/Rakefile @@ -187,6 +187,11 @@ end desc "Release rubygems-#{v}" task release: :prerelease do Rake::Task["package"].invoke + puts "Tagging v#{v}" + sh "git", "tag", "v#{v}", noop: ENV["DRYRUN"] + puts "Pushing v#{v} to origin" + sh "git", "push", "origin", "v#{v}", noop: ENV["DRYRUN"] + puts "Pushing rubygems-update-#{v} to RubyGems.org" sh "gem", "push", "pkg/rubygems-update-#{v}.gem", noop: ENV["DRYRUN"] Rake::Task["postrelease"].invoke end From 5373d258bfe1cb64efda81afaeed160aefe14f16 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 14:22:17 +0900 Subject: [PATCH 228/295] Update release documentation to clarify automated release process steps --- doc/RELEASE.md | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/doc/RELEASE.md b/doc/RELEASE.md index 3a7b8cd589f8..f6314927dab7 100644 --- a/doc/RELEASE.md +++ b/doc/RELEASE.md @@ -99,15 +99,23 @@ We only release major breaking changes when incrementing the _major_ version of #### Release -* Create the release branch like `4-0-0` or `4-0-0-beta1`. -* Bump up version number at `lib/rubygems.rb` and `bundler/lib/bundler/version.rb`. -* Run `rake generate_changelog[4.0.0.beta1]` and `rake version:update_locked_bundler`. -* Run `DRYRUN=1 rake release` to verify that everything is working as expected. -* Push the release branch and open a PR to the stable branch. And confirm to CI passes. -* Tag the release commit with the proper version tag, e.g. `v4.0.0.beta1`. -* Push the tag to GitHub. -* Release `rubygems` with `bin/rake release`. +* Run `rake prepare_release[4.0.0.beta3]`, this will: + * Create the release branch like `release/4.0.0`. + * Bump up version number at `lib/rubygems.rb` and `bundler/lib/bundler/version.rb`. + * Run `rake version:update_locked_bundler`. + * Run `rake generate_changelog[4.0.0.beta1]`. + * Push the release branch and open a PR to the stable or master branch +* Run `DRYRUN=1 rake release` to verify that everything is working as expected. And confirm to CI passes on the release PR. +* Release `rubygems` with `bin/rake release`, this will: + * Run `rake check_deprecations` and package `rubygems-update` gem. + * Tag the release like `v4.0.0.beta3` and push the tag to GitHub. + * Push `rubygems-update-4.0.0.beta3` to RubyGems.org. + * Upload RubyGems tgz and zip files to s3 and create a GitHub release. + * Update the guides website and blog posts of rubygems.org. * Release `bundler` with `bin/rake bundler:release`. + * Package `bundler` gem and run `rake man:check`. + * Tag the release like `v2.4.0.beta3` and push the tag to GitHub. And create a GitHub release. + * Push `bundler-2.4.0.beta3` to RubyGems.org. #### Post-release From 679976f33fa029c7211a050befec88d8c524402e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 18:24:46 +0900 Subject: [PATCH 229/295] Added DRYRUN mode for release_prepare --- tool/release.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tool/release.rb b/tool/release.rb index bea61616a67c..c1422ccd19ad 100644 --- a/tool/release.rb +++ b/tool/release.rb @@ -172,7 +172,7 @@ def prepare! unless @prerelease create_if_not_exist_and_switch_to(@stable_branch, from: "master") - system("git", "push", "origin", @stable_branch, exception: true) if @level == :minor_or_major + system("git", "push", "origin", @stable_branch, exception: true) if @level == :minor_or_major && !ENV["DRYRUN"] end from_branch = if @level == :minor_or_major && @prerelease @@ -190,7 +190,7 @@ def prepare! bundler_changelog, rubygems_changelog = cut_changelogs_and_bump_versions - system("git", "push", exception: true) + system("git", "push", exception: true) unless ENV["DRYRUN"] gh_client.create_pull_request( "ruby/rubygems", @@ -198,14 +198,14 @@ def prepare! @release_branch, "Prepare RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", "It's release day!" - ) + ) unless ENV["DRYRUN"] unless @prerelease create_if_not_exist_and_switch_to("cherry_pick_changelogs", from: "master") begin system("git", "cherry-pick", bundler_changelog, rubygems_changelog, exception: true) - system("git", "push", exception: true) + system("git", "push", exception: true) unless ENV["DRYRUN"] rescue StandardError system("git", "cherry-pick", "--abort") else @@ -215,7 +215,7 @@ def prepare! "cherry_pick_changelogs", "Changelogs for RubyGems #{@rubygems.version} and Bundler #{@bundler.version}", "Cherry-picking change logs from future RubyGems #{@rubygems.version} and Bundler #{@bundler.version} into master." - ) + ) unless ENV["DRYRUN"] end end rescue StandardError, LoadError From 61340081c6ecbd31e3899d96bd12f1a003e544a6 Mon Sep 17 00:00:00 2001 From: Edouard CHIN Date: Fri, 28 Nov 2025 02:08:21 +0100 Subject: [PATCH 230/295] Add `MAKEFLAGS=-j` by default before compiling: - Depending on the native extension, it can greatly reduce compilation time when executing recipes simultaneously. For example on Prism: ``` # Before time gem install prism Building native extensions. This could take a while... Successfully installed prism-1.6.0 1 gem installed gem install prism 3.61s user 0.80s system 95% cpu 4.595 total ``` ``` # After time MAKEFLAGS="-j" gem install prism Building native extensions. This could take a while... Successfully installed prism-1.6.0 1 gem installed MAKEFLAGS="-j" gem install prism 4.47s user 1.27s system 246% cpu 2.330 total ``` I don't think adding `-j` as a default is harmful, but I'm admitedly not very knowledgable when it comes to compiler. Co-authored-by: Aaron Patterson --- lib/rubygems/ext/ext_conf_builder.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/rubygems/ext/ext_conf_builder.rb b/lib/rubygems/ext/ext_conf_builder.rb index ec2fa59412df..021273ef12e3 100644 --- a/lib/rubygems/ext/ext_conf_builder.rb +++ b/lib/rubygems/ext/ext_conf_builder.rb @@ -40,6 +40,7 @@ def self.build(extension, dest_path, results, args = [], lib_dir = nil, extensio end ENV["DESTDIR"] = nil + ENV["MAKEFLAGS"] ||= "-j#{Etc.nprocessors + 1}" make dest_path, results, extension_dir, tmp_dest_relative, target_rbconfig: target_rbconfig From bb4d791cb44f6c481fb556c9ab55f7741f7135de Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 16:57:15 +0900 Subject: [PATCH 231/295] Fixed checksums generation issue when no source is specified --- bundler/lib/bundler/definition.rb | 2 ++ bundler/spec/commands/lock_spec.rb | 50 ++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/bundler/lib/bundler/definition.rb b/bundler/lib/bundler/definition.rb index 437390f3ec44..2fa7d0d27794 100644 --- a/bundler/lib/bundler/definition.rb +++ b/bundler/lib/bundler/definition.rb @@ -539,6 +539,8 @@ def unlocking? end def add_checksums + require "rubygems/package" + @locked_checksums = true setup_domain!(add_checksums: true) diff --git a/bundler/spec/commands/lock_spec.rb b/bundler/spec/commands/lock_spec.rb index ab1926734c1e..c8af9c8dd404 100644 --- a/bundler/spec/commands/lock_spec.rb +++ b/bundler/spec/commands/lock_spec.rb @@ -2035,6 +2035,56 @@ L end + it "adds checksums when source is not specified" do + system_gems(%w[myrack-1.0.0], path: default_bundle_path) + + gemfile <<-G + gem "myrack" + G + + lockfile <<~L + GEM + specs: + myrack (1.0.0) + + PLATFORMS + ruby + x86_64-linux + + DEPENDENCIES + myrack + + BUNDLED WITH + #{Bundler::VERSION} + L + + simulate_platform "x86_64-linux" do + bundle "lock --add-checksums" + end + + # myrack is coming from gem_repo1 + # but it's simulated to install in the system gems path + checksums = checksums_section do |c| + c.checksum gem_repo1, "myrack", "1.0.0" + end + + expect(lockfile).to eq <<~L + GEM + specs: + myrack (1.0.0) + + PLATFORMS + ruby + x86_64-linux + + DEPENDENCIES + myrack + #{checksums} + BUNDLED WITH + #{Bundler::VERSION} + L + end + it "adds checksums to an existing lockfile, when gems are already installed" do build_repo4 do build_gem "nokogiri", "1.14.2" From 6e54c7cfb523514c446160d03d32dda64a4bbed8 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Sat, 29 Nov 2025 07:06:24 +0900 Subject: [PATCH 232/295] nmake didn't support -j flag --- lib/rubygems/ext/ext_conf_builder.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/rubygems/ext/ext_conf_builder.rb b/lib/rubygems/ext/ext_conf_builder.rb index 021273ef12e3..745cf08b6c8b 100644 --- a/lib/rubygems/ext/ext_conf_builder.rb +++ b/lib/rubygems/ext/ext_conf_builder.rb @@ -40,7 +40,9 @@ def self.build(extension, dest_path, results, args = [], lib_dir = nil, extensio end ENV["DESTDIR"] = nil - ENV["MAKEFLAGS"] ||= "-j#{Etc.nprocessors + 1}" + unless RbConfig::CONFIG["MAKE"] =~ /nmake/ + ENV["MAKEFLAGS"] ||= "-j#{Etc.nprocessors + 1}" + end make dest_path, results, extension_dir, tmp_dest_relative, target_rbconfig: target_rbconfig From fdd3419144b1a773843c171e4ade5001a8f02494 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Sat, 29 Nov 2025 07:18:43 +0900 Subject: [PATCH 233/295] Use String#include? with suggested by Performance/StringInclude cop --- lib/rubygems/ext/ext_conf_builder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rubygems/ext/ext_conf_builder.rb b/lib/rubygems/ext/ext_conf_builder.rb index 745cf08b6c8b..bc70ed67fb86 100644 --- a/lib/rubygems/ext/ext_conf_builder.rb +++ b/lib/rubygems/ext/ext_conf_builder.rb @@ -40,7 +40,7 @@ def self.build(extension, dest_path, results, args = [], lib_dir = nil, extensio end ENV["DESTDIR"] = nil - unless RbConfig::CONFIG["MAKE"] =~ /nmake/ + unless RbConfig::CONFIG["MAKE"]&.include?("nmake") ENV["MAKEFLAGS"] ||= "-j#{Etc.nprocessors + 1}" end From 628e0ede469b6cf4b88f6a5dd9de6480d17df38e Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Wed, 26 Nov 2025 18:58:42 +0100 Subject: [PATCH 234/295] Restore `install` as default command Fix: https://github.com/ruby/rubygems/issues/9124 This behavior is a deeply entrenched convention and changing it will annoy lots of developers with unclear gains. --- bundler/lib/bundler/cli.rb | 12 +----------- bundler/spec/bundler/cli_spec.rb | 3 +-- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index 55f656e3f3af..b7829f2a0db2 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -123,17 +123,7 @@ def cli_help def self.default_command(meth = nil) return super if meth - default_cli_command = Bundler.settings[:default_cli_command] - return default_cli_command if default_cli_command - - Bundler.ui.warn(<<~MSG) - In the next version of Bundler, running `bundle` without argument will no longer run `bundle install`. - Instead, the `help` command will be displayed. - - If you'd like to keep the previous behaviour please run `bundle config set default_cli_command install --global`. - MSG - - "install" + Bundler.settings[:default_cli_command] || "install" end class_option "no-color", type: :boolean, desc: "Disable colorization in output" diff --git a/bundler/spec/bundler/cli_spec.rb b/bundler/spec/bundler/cli_spec.rb index ee3c0d0fd50f..611c1985e277 100644 --- a/bundler/spec/bundler/cli_spec.rb +++ b/bundler/spec/bundler/cli_spec.rb @@ -87,9 +87,8 @@ def out_with_macos_man_workaround end context "with no arguments" do - it "installs and log a warning by default" do + it "installs by default" do bundle "", raise_on_error: false - expect(err).to include("running `bundle` without argument will no longer run `bundle install`.") expect(err).to include("Could not locate Gemfile") end From f3f505c02ab6efba14f358563449c522da995dde Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Wed, 26 Nov 2025 20:03:13 +0100 Subject: [PATCH 235/295] Print help summary when the default command fail As mentioned in https://github.com/ruby/rubygems/issues/9124, the intent for changing the default command was to be more welcoming. I think we can acheive that by attempting to install, but to print that same help message if there is no Gemfile. That should address both concerns. --- bundler/lib/bundler/cli.rb | 23 ++++++++++++++++++++- bundler/lib/bundler/vendor/thor/lib/thor.rb | 2 +- bundler/spec/bundler/cli_spec.rb | 13 +----------- bundler/spec/other/cli_dispatch_spec.rb | 2 +- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index b7829f2a0db2..d3c948c7ce22 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -120,10 +120,18 @@ def cli_help self.class.send(:class_options_help, shell) end + desc "install_or_cli_help", "Tries to run bundle install but prints a summary of bundler commands if there is no Gemfile", hide: true + def install_or_cli_help + invoke_other_command("install") + rescue GemfileNotFound => error + Bundler.ui.error error.message, wrap: true + invoke_other_command("cli_help") + end + def self.default_command(meth = nil) return super if meth - Bundler.settings[:default_cli_command] || "install" + Bundler.settings[:default_cli_command] || "install_or_cli_help" end class_option "no-color", type: :boolean, desc: "Disable colorization in output" @@ -713,6 +721,19 @@ def current_command config[:current_command] end + def invoke_other_command(name) + _, _, config = @_initializer + original_command = config[:current_command] + command = self.class.all_commands[name] + config[:current_command] = command + send(name) + ensure + config[:current_command] = original_command + end + + def current_command=(command) + end + def print_command return unless Bundler.ui.debug? cmd = current_command diff --git a/bundler/lib/bundler/vendor/thor/lib/thor.rb b/bundler/lib/bundler/vendor/thor/lib/thor.rb index bfd9f5c91412..945bdbd5515f 100644 --- a/bundler/lib/bundler/vendor/thor/lib/thor.rb +++ b/bundler/lib/bundler/vendor/thor/lib/thor.rb @@ -625,7 +625,7 @@ def normalize_command_name(meth) #:nodoc: # alias name. def find_command_possibilities(meth) len = meth.to_s.length - possibilities = all_commands.merge(map).keys.select { |n| meth == n[0, len] }.sort + possibilities = all_commands.reject { |_k, c| c.hidden? }.merge(map).keys.select { |n| meth == n[0, len] }.sort unique_possibilities = possibilities.map { |k| map[k] || k }.uniq if possibilities.include?(meth) diff --git a/bundler/spec/bundler/cli_spec.rb b/bundler/spec/bundler/cli_spec.rb index 611c1985e277..33a23a75def1 100644 --- a/bundler/spec/bundler/cli_spec.rb +++ b/bundler/spec/bundler/cli_spec.rb @@ -87,27 +87,16 @@ def out_with_macos_man_workaround end context "with no arguments" do - it "installs by default" do + it "tries to installs by default but print help on missing Gemfile" do bundle "", raise_on_error: false expect(err).to include("Could not locate Gemfile") - end - it "prints a concise help message when default_cli_command set to cli_help" do - bundle "config set default_cli_command cli_help" - bundle "" - expect(err).to be_empty expect(out).to include("Bundler version #{Bundler::VERSION}"). and include("\n\nBundler commands:\n\n"). and include("\n\n Primary commands:\n"). and include("\n\n Utilities:\n"). and include("\n\nOptions:\n") end - - it "runs bundle install when default_cli_command set to install" do - bundle "config set default_cli_command install" - bundle "", raise_on_error: false - expect(err).to include("Could not locate Gemfile") - end end context "when ENV['BUNDLE_GEMFILE'] is set to an empty string" do diff --git a/bundler/spec/other/cli_dispatch_spec.rb b/bundler/spec/other/cli_dispatch_spec.rb index 1039737b9939..a2c745b0703d 100644 --- a/bundler/spec/other/cli_dispatch_spec.rb +++ b/bundler/spec/other/cli_dispatch_spec.rb @@ -15,6 +15,6 @@ it "print a friendly error when ambiguous" do bundle "in", raise_on_error: false - expect(err).to eq("Ambiguous command in matches [info, init, inject, install]") + expect(err).to eq("Ambiguous command in matches [info, init, install]") end end From 9e44b5ebc4c3cf0031968e9ba3db89d00badcfc6 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Fri, 28 Nov 2025 19:23:50 +0900 Subject: [PATCH 236/295] Add informational message when default_cli_command is unset. --- bundler/lib/bundler/cli.rb | 10 ++++++++++ bundler/spec/bundler/cli_spec.rb | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index d3c948c7ce22..f5977863ddcc 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -131,6 +131,16 @@ def install_or_cli_help def self.default_command(meth = nil) return super if meth + unless Bundler.settings[:default_cli_command] + Bundler.ui.info <<-MSG + In the feature version of Bundler, running `bundle` without argument will no longer run `bundle install`. + Instead, the `cli_help` command will be displayed. Please use `bundle install` explicitly for scripts like CI/CD. + If you wish to use feature behavior now with `bundle config set default_cli_command cli_help --global` + or you can continue to use the old behavior with `bundle config set default_cli_command install_or_cli_help --global`. + This message will be removed after a default_cli_command value is set. + MSG + end + Bundler.settings[:default_cli_command] || "install_or_cli_help" end diff --git a/bundler/spec/bundler/cli_spec.rb b/bundler/spec/bundler/cli_spec.rb index 33a23a75def1..ac6b77ad7483 100644 --- a/bundler/spec/bundler/cli_spec.rb +++ b/bundler/spec/bundler/cli_spec.rb @@ -90,6 +90,7 @@ def out_with_macos_man_workaround it "tries to installs by default but print help on missing Gemfile" do bundle "", raise_on_error: false expect(err).to include("Could not locate Gemfile") + expect(out).to include("In the feature version of Bundler") expect(out).to include("Bundler version #{Bundler::VERSION}"). and include("\n\nBundler commands:\n\n"). @@ -97,6 +98,13 @@ def out_with_macos_man_workaround and include("\n\n Utilities:\n"). and include("\n\nOptions:\n") end + + it "runs bundle install when default_cli_command set to install" do + bundle "config set default_cli_command install_or_cli_help" + bundle "", raise_on_error: false + expect(out).to_not include("In the feature version of Bundler") + expect(err).to include("Could not locate Gemfile") + end end context "when ENV['BUNDLE_GEMFILE'] is set to an empty string" do From 69ac3ae4009b0189029c1943f7da02a5e7e7c4f2 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Sat, 29 Nov 2025 07:46:43 +0900 Subject: [PATCH 237/295] Added vendored thor change to automatiek patch https://github.com/ruby/rubygems/pull/9125#discussion_r2570885019 --- tool/automatiek/thor-v1.4.0.patch | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tool/automatiek/thor-v1.4.0.patch b/tool/automatiek/thor-v1.4.0.patch index 6c4dc977ca64..216e3eb41c9e 100644 --- a/tool/automatiek/thor-v1.4.0.patch +++ b/tool/automatiek/thor-v1.4.0.patch @@ -1,3 +1,17 @@ +diff --git a/bundler/lib/bundler/vendor/thor/lib/thor.rb b/bundler/lib/bundler/vendor/thor/lib/thor.rb +index bfd9f5c914..945bdbd551 100644 +--- a/bundler/lib/bundler/vendor/thor/lib/thor.rb ++++ b/bundler/lib/bundler/vendor/thor/lib/thor.rb +@@ -625,7 +625,7 @@ def normalize_command_name(meth) #:nodoc: + # alias name. + def find_command_possibilities(meth) + len = meth.to_s.length +- possibilities = all_commands.merge(map).keys.select { |n| meth == n[0, len] }.sort ++ possibilities = all_commands.reject { |_k, c| c.hidden? }.merge(map).keys.select { |n| meth == n[0, len] }.sort + unique_possibilities = possibilities.map { |k| map[k] || k }.uniq + + if possibilities.include?(meth) + diff --git a/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb b/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb index 95f8b16e31..f0ce6df96c 100644 --- a/bundler/lib/bundler/vendor/thor/lib/thor/runner.rb From ca64ac21c2d5012d2658050422a1c7204c5a9073 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Sat, 29 Nov 2025 09:05:14 +0900 Subject: [PATCH 238/295] Fixup with mswin and nmake build for -j flag --- lib/rubygems/ext/ext_conf_builder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rubygems/ext/ext_conf_builder.rb b/lib/rubygems/ext/ext_conf_builder.rb index bc70ed67fb86..5bc8b01f3be9 100644 --- a/lib/rubygems/ext/ext_conf_builder.rb +++ b/lib/rubygems/ext/ext_conf_builder.rb @@ -40,7 +40,7 @@ def self.build(extension, dest_path, results, args = [], lib_dir = nil, extensio end ENV["DESTDIR"] = nil - unless RbConfig::CONFIG["MAKE"]&.include?("nmake") + unless RUBY_PLATFORM =~ /mswin/ && RbConfig::CONFIG["configure_args"]&.include?("nmake") ENV["MAKEFLAGS"] ||= "-j#{Etc.nprocessors + 1}" end From 5fd95f38d31f6093702e252c592373015d0de0cb Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Sat, 29 Nov 2025 10:06:03 +0900 Subject: [PATCH 239/295] Also use String#include? for RUBY_PLATFORM --- lib/rubygems/ext/ext_conf_builder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rubygems/ext/ext_conf_builder.rb b/lib/rubygems/ext/ext_conf_builder.rb index 5bc8b01f3be9..81491eac79ab 100644 --- a/lib/rubygems/ext/ext_conf_builder.rb +++ b/lib/rubygems/ext/ext_conf_builder.rb @@ -40,7 +40,7 @@ def self.build(extension, dest_path, results, args = [], lib_dir = nil, extensio end ENV["DESTDIR"] = nil - unless RUBY_PLATFORM =~ /mswin/ && RbConfig::CONFIG["configure_args"]&.include?("nmake") + unless RUBY_PLATFORM.include?("mswin") && RbConfig::CONFIG["configure_args"]&.include?("nmake") ENV["MAKEFLAGS"] ||= "-j#{Etc.nprocessors + 1}" end From 50080b73ccae9438f30cd0389ccbf35b12033443 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 16:19:14 +0000 Subject: [PATCH 240/295] Bump github/codeql-action from 4.31.2 to 4.31.6 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.2 to 4.31.6. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/0499de31b99561a6d14a36a5f662c2a54f91beee...fe4161a26a8629af62121b670040955b330f9af2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 4.31.6 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- .github/workflows/ubuntu-lint.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index d914cdc63b44..c1dba80fbda6 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: Upload to code-scanning - uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 + uses: github/codeql-action/upload-sarif@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 with: sarif_file: results.sarif diff --git a/.github/workflows/ubuntu-lint.yml b/.github/workflows/ubuntu-lint.yml index a4e3e990a455..c2c253d51d1e 100644 --- a/.github/workflows/ubuntu-lint.yml +++ b/.github/workflows/ubuntu-lint.yml @@ -52,7 +52,7 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Upload SARIF file - uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 + uses: github/codeql-action/upload-sarif@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 if: matrix.command == 'zizmor' with: sarif_file: results.sarif From 034a46ef18393751133df36388ce287f376504c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 16:19:32 +0000 Subject: [PATCH 241/295] Bump ruby/setup-ruby from 1.267.0 to 1.268.0 Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.267.0 to 1.268.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Changelog](https://github.com/ruby/setup-ruby/blob/master/release.rb) - [Commits](https://github.com/ruby/setup-ruby/compare/d5126b9b3579e429dd52e51e68624dda2e05be25...8aeb6ff8030dd539317f8e1769a044873b56ea71) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-version: 1.268.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/bundler.yml | 2 +- .github/workflows/daily-bundler.yml | 2 +- .github/workflows/daily-rubygems.yml | 2 +- .github/workflows/install-rubygems.yml | 10 +++++----- .github/workflows/realworld-bundler.yml | 8 ++++---- .github/workflows/rubygems.yml | 2 +- .github/workflows/system-rubygems-bundler.yml | 2 +- .github/workflows/truffleruby-bundler.yml | 2 +- .github/workflows/ubuntu-lint.yml | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/bundler.yml b/.github/workflows/bundler.yml index 20d9d364c778..4394520a1960 100644 --- a/.github/workflows/bundler.yml +++ b/.github/workflows/bundler.yml @@ -53,7 +53,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/daily-bundler.yml b/.github/workflows/daily-bundler.yml index d35c37105fba..b2339d1db2eb 100644 --- a/.github/workflows/daily-bundler.yml +++ b/.github/workflows/daily-bundler.yml @@ -25,7 +25,7 @@ jobs: persist-credentials: false - name: Set up Ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ruby-head bundler: none diff --git a/.github/workflows/daily-rubygems.yml b/.github/workflows/daily-rubygems.yml index 7336225f03dc..f1caf1d14d97 100644 --- a/.github/workflows/daily-rubygems.yml +++ b/.github/workflows/daily-rubygems.yml @@ -28,7 +28,7 @@ jobs: persist-credentials: false - name: Set up Ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby }} bundler: none diff --git a/.github/workflows/install-rubygems.yml b/.github/workflows/install-rubygems.yml index 94192860b20a..db7f03768de4 100644 --- a/.github/workflows/install-rubygems.yml +++ b/.github/workflows/install-rubygems.yml @@ -35,7 +35,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -128,7 +128,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -170,7 +170,7 @@ jobs: with: persist-credentials: false - name: Setup original ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: 3.2 bundler: none @@ -191,7 +191,7 @@ jobs: GEM_HOME: bar GEM_PATH: bar - name: Setup final ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: 3.3 bundler: none @@ -220,7 +220,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/realworld-bundler.yml b/.github/workflows/realworld-bundler.yml index 12456eb5a783..1f1cbc939f26 100644 --- a/.github/workflows/realworld-bundler.yml +++ b/.github/workflows/realworld-bundler.yml @@ -41,7 +41,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -64,7 +64,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: 3.4.5 bundler: none @@ -91,7 +91,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -115,7 +115,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: 3.4.5 bundler: none diff --git a/.github/workflows/rubygems.yml b/.github/workflows/rubygems.yml index dbcc86ee05ae..bc3f8dd7862c 100644 --- a/.github/workflows/rubygems.yml +++ b/.github/workflows/rubygems.yml @@ -43,7 +43,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/system-rubygems-bundler.yml b/.github/workflows/system-rubygems-bundler.yml index bab1f9fe0969..6b56448eef25 100644 --- a/.github/workflows/system-rubygems-bundler.yml +++ b/.github/workflows/system-rubygems-bundler.yml @@ -37,7 +37,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/truffleruby-bundler.yml b/.github/workflows/truffleruby-bundler.yml index a085f6f171d7..eb825d461d2f 100644 --- a/.github/workflows/truffleruby-bundler.yml +++ b/.github/workflows/truffleruby-bundler.yml @@ -28,7 +28,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: truffleruby-24.2.1 bundler: none diff --git a/.github/workflows/ubuntu-lint.yml b/.github/workflows/ubuntu-lint.yml index a4e3e990a455..6225efc4a1db 100644 --- a/.github/workflows/ubuntu-lint.yml +++ b/.github/workflows/ubuntu-lint.yml @@ -75,7 +75,7 @@ jobs: with: persist-credentials: false - name: Setup ruby - uses: ruby/setup-ruby@d5126b9b3579e429dd52e51e68624dda2e05be25 # v1.267.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none From 42aef0956a90cfc99337d3a54b1418a55713bcdf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 16:19:48 +0000 Subject: [PATCH 242/295] Bump actions/checkout from 5.0.0 to 6.0.0 Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0 to 6.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/08c6903cd8c0fde910a37f88322edcfb5dd907a8...1af3b93b6815bc44a9784bd300feb67ff0d1eeb3) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/bundler.yml | 2 +- .github/workflows/daily-bundler.yml | 2 +- .github/workflows/daily-rubygems.yml | 2 +- .github/workflows/install-rubygems.yml | 8 ++++---- .github/workflows/read-only.yml | 2 +- .github/workflows/realworld-bundler.yml | 8 ++++---- .github/workflows/ruby-core.yml | 4 ++-- .github/workflows/rubygems.yml | 2 +- .github/workflows/scorecards.yml | 2 +- .github/workflows/sync-ruby.yml | 2 +- .github/workflows/system-rubygems-bundler.yml | 4 ++-- .github/workflows/truffleruby-bundler.yml | 2 +- .github/workflows/ubuntu-lint.yml | 4 ++-- .github/workflows/weekly-update.yml | 2 +- 14 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/workflows/bundler.yml b/.github/workflows/bundler.yml index 20d9d364c778..8ca53bf424ad 100644 --- a/.github/workflows/bundler.yml +++ b/.github/workflows/bundler.yml @@ -49,7 +49,7 @@ jobs: RGV: .. RUBYOPT: --disable-gems steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby diff --git a/.github/workflows/daily-bundler.yml b/.github/workflows/daily-bundler.yml index d35c37105fba..41ebdd4b999f 100644 --- a/.github/workflows/daily-bundler.yml +++ b/.github/workflows/daily-bundler.yml @@ -20,7 +20,7 @@ jobs: env: RGV: .. steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false diff --git a/.github/workflows/daily-rubygems.yml b/.github/workflows/daily-rubygems.yml index 7336225f03dc..31b30d76706a 100644 --- a/.github/workflows/daily-rubygems.yml +++ b/.github/workflows/daily-rubygems.yml @@ -23,7 +23,7 @@ jobs: env: TRUFFLERUBYOPT: --experimental-options --testing-rubygems steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false diff --git a/.github/workflows/install-rubygems.yml b/.github/workflows/install-rubygems.yml index 94192860b20a..e4d1441eda65 100644 --- a/.github/workflows/install-rubygems.yml +++ b/.github/workflows/install-rubygems.yml @@ -31,7 +31,7 @@ jobs: - { name: openssl, value: true } - { name: no-openssl, value: false } steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby @@ -124,7 +124,7 @@ jobs: - { name: "3.4", value: 3.4.5 } - { name: jruby, value: jruby-10.0.2.0, rails-args: --skip-webpack-install } steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby @@ -166,7 +166,7 @@ jobs: - dev - system steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup original ruby @@ -216,7 +216,7 @@ jobs: - { name: "3.4", value: 3.4.5 } steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby diff --git a/.github/workflows/read-only.yml b/.github/workflows/read-only.yml index d67af012d569..3124b576ea27 100644 --- a/.github/workflows/read-only.yml +++ b/.github/workflows/read-only.yml @@ -31,7 +31,7 @@ jobs: - { name: ruby-3.4, value: 3.4.5 } steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Basic usage on a read-only filesystem diff --git a/.github/workflows/realworld-bundler.yml b/.github/workflows/realworld-bundler.yml index 12456eb5a783..80685e171d81 100644 --- a/.github/workflows/realworld-bundler.yml +++ b/.github/workflows/realworld-bundler.yml @@ -37,7 +37,7 @@ jobs: RGV: .. RUBYOPT: --disable-gems steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby @@ -60,7 +60,7 @@ jobs: name: Tapioca runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby @@ -87,7 +87,7 @@ jobs: - { ruby: { name: ruby-3.3, value: 3.3.9 } } - { ruby: { name: ruby-3.4, value: 3.4.5 } } steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby @@ -111,7 +111,7 @@ jobs: needs: [bundler, system_rubygems_bundler] runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby diff --git a/.github/workflows/ruby-core.yml b/.github/workflows/ruby-core.yml index 199f7fb7024b..0d30d17b3014 100644 --- a/.github/workflows/ruby-core.yml +++ b/.github/workflows/ruby-core.yml @@ -23,7 +23,7 @@ jobs: matrix: target: [Rubygems, Bundler] steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: repository: ruby/ruby path: ruby/ruby @@ -41,7 +41,7 @@ jobs: ./configure -C --disable-install-doc make working-directory: ruby/ruby - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: path: rubygems/rubygems # We need to backport repository url to sync_default_gems.rb of `ruby_3_4` branch. persist-credentials: false diff --git a/.github/workflows/rubygems.yml b/.github/workflows/rubygems.yml index dbcc86ee05ae..ab41bed76ba7 100644 --- a/.github/workflows/rubygems.yml +++ b/.github/workflows/rubygems.yml @@ -39,7 +39,7 @@ jobs: os: { name: Ubuntu, value: ubuntu-24.04 } steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index d914cdc63b44..b599ea72ef45 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -28,7 +28,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false diff --git a/.github/workflows/sync-ruby.yml b/.github/workflows/sync-ruby.yml index 79096bb2b1a1..620cec4b8eec 100644 --- a/.github/workflows/sync-ruby.yml +++ b/.github/workflows/sync-ruby.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest if: ${{ github.repository_owner == 'ruby' }} steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false diff --git a/.github/workflows/system-rubygems-bundler.yml b/.github/workflows/system-rubygems-bundler.yml index bab1f9fe0969..1478e874de5a 100644 --- a/.github/workflows/system-rubygems-bundler.yml +++ b/.github/workflows/system-rubygems-bundler.yml @@ -33,7 +33,7 @@ jobs: - { ruby: { name: ruby-3.3, value: 3.3.0 } } - { ruby: { name: ruby-3.4, value: 3.4.1 } } steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby @@ -52,7 +52,7 @@ jobs: run: | RGV=$(ruby -e 'puts Gem::VERSION.split(".")[0..2].join(".")') echo "RGV=v$RGV" >> $GITHUB_ENV - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: path: bundler/tmp/rubygems ref: ${{ env.RGV }} diff --git a/.github/workflows/truffleruby-bundler.yml b/.github/workflows/truffleruby-bundler.yml index a085f6f171d7..dd6247c0cc83 100644 --- a/.github/workflows/truffleruby-bundler.yml +++ b/.github/workflows/truffleruby-bundler.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby diff --git a/.github/workflows/ubuntu-lint.yml b/.github/workflows/ubuntu-lint.yml index a4e3e990a455..c3652feece2f 100644 --- a/.github/workflows/ubuntu-lint.yml +++ b/.github/workflows/ubuntu-lint.yml @@ -29,7 +29,7 @@ jobs: - yamllint - zizmor steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2 @@ -71,7 +71,7 @@ jobs: env: RUBYOPT: -Ilib steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Setup ruby diff --git a/.github/workflows/weekly-update.yml b/.github/workflows/weekly-update.yml index a8e894013dea..08186902d52a 100644 --- a/.github/workflows/weekly-update.yml +++ b/.github/workflows/weekly-update.yml @@ -26,7 +26,7 @@ jobs: git config --global user.email license.update@rubygems.org git config --global push.autoSetupRemote true - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: true From ea96fb3d56fa04c09e545dc3a70662877cbb58b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 16:19:51 +0000 Subject: [PATCH 243/295] Bump astral-sh/setup-uv from 7.1.2 to 7.1.4 Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 7.1.2 to 7.1.4. - [Release notes](https://github.com/astral-sh/setup-uv/releases) - [Commits](https://github.com/astral-sh/setup-uv/compare/85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41...1e862dfacbd1d6d858c55d9b792c756523627244) --- updated-dependencies: - dependency-name: astral-sh/setup-uv dependency-version: 7.1.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/ubuntu-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ubuntu-lint.yml b/.github/workflows/ubuntu-lint.yml index a4e3e990a455..90e67a681e94 100644 --- a/.github/workflows/ubuntu-lint.yml +++ b/.github/workflows/ubuntu-lint.yml @@ -32,7 +32,7 @@ jobs: - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: persist-credentials: false - - uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2 + - uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7.1.4 with: python-version: "3.13" activate-environment: true From 67bc36399f81429fe0b67e4ce8ed421a8f80c963 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 16:19:55 +0000 Subject: [PATCH 244/295] Bump actions/create-github-app-token from 2.1.4 to 2.2.0 Bumps [actions/create-github-app-token](https://github.com/actions/create-github-app-token) from 2.1.4 to 2.2.0. - [Release notes](https://github.com/actions/create-github-app-token/releases) - [Commits](https://github.com/actions/create-github-app-token/compare/67018539274d69449ef7c02e8e71183d1719ab42...7e473efe3cb98aa54f8d4bac15400b15fad77d94) --- updated-dependencies: - dependency-name: actions/create-github-app-token dependency-version: 2.2.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/sync-ruby.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync-ruby.yml b/.github/workflows/sync-ruby.yml index 79096bb2b1a1..527330414b58 100644 --- a/.github/workflows/sync-ruby.yml +++ b/.github/workflows/sync-ruby.yml @@ -14,7 +14,7 @@ jobs: - name: Create GitHub App token id: app-token - uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4 + uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0 with: app-id: 2060836 private-key: ${{ secrets.RUBY_SYNC_DEFAULT_GEMS_PRIVATE_KEY }} From e599c11a6fa9f1f4151f4875c1b70c2210c2360e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 17:29:05 +0000 Subject: [PATCH 245/295] Bump zizmor from 1.16.1 to 1.18.0 in /.github/workflows Bumps [zizmor](https://github.com/zizmorcore/zizmor) from 1.16.1 to 1.18.0. - [Release notes](https://github.com/zizmorcore/zizmor/releases) - [Changelog](https://github.com/zizmorcore/zizmor/blob/main/docs/release-notes.md) - [Commits](https://github.com/zizmorcore/zizmor/compare/v1.16.1...v1.18.0) --- updated-dependencies: - dependency-name: zizmor dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/lint/requirements.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint/requirements.in b/.github/workflows/lint/requirements.in index 18d0ba693a88..0d1d6d146033 100644 --- a/.github/workflows/lint/requirements.in +++ b/.github/workflows/lint/requirements.in @@ -1,3 +1,3 @@ codespell==2.4.1 yamllint==1.37.1 -zizmor==1.16.1 +zizmor==1.18.0 From 6e3603a0e9207657f9dde2122fc72e5ebb082244 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Sun, 30 Nov 2025 19:16:52 -0800 Subject: [PATCH 246/295] Make BUNDLE_LOCKFILE environment variable have precedence over lockfile method in Gemfile It would be simpler to do `options[:lockfile] ||= ENV["BUNDLE_LOCKFILE"]`, but that doesn't work as `options` is frozen. Fixes #9117 --- bundler/lib/bundler/cli.rb | 6 ++++-- bundler/lib/bundler/man/gemfile.5 | 4 ++-- bundler/lib/bundler/man/gemfile.5.ronn | 2 +- bundler/spec/commands/install_spec.rb | 14 ++++++++++++++ 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index f5977863ddcc..0852e339154f 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -69,7 +69,7 @@ def initialize(*args) # lock --lockfile works differently than install --lockfile unless current_cmd == "lock" - custom_lockfile = options[:lockfile] || Bundler.settings[:lockfile] + custom_lockfile = options[:lockfile] || ENV["BUNDLE_LOCKFILE"] || Bundler.settings[:lockfile] if custom_lockfile && !custom_lockfile.empty? Bundler::SharedHelpers.set_env "BUNDLE_LOCKFILE", File.expand_path(custom_lockfile) reset_settings = true @@ -282,8 +282,10 @@ def install end require_relative "cli/install" + options = self.options.dup + options["lockfile"] ||= ENV["BUNDLE_LOCKFILE"] Bundler.settings.temporary(no_install: false) do - Install.new(options.dup).run + Install.new(options).run end end diff --git a/bundler/lib/bundler/man/gemfile.5 b/bundler/lib/bundler/man/gemfile.5 index fce7d8e17843..a8c055a0c1a4 100644 --- a/bundler/lib/bundler/man/gemfile.5 +++ b/bundler/lib/bundler/man/gemfile.5 @@ -494,9 +494,9 @@ The \fBbundle install\fR \fB\-\-no\-lock\fR option (which disables lockfile crea .IP "2." 4 The \fBbundle install\fR \fB\-\-lockfile\fR option\. .IP "3." 4 -The \fBlockfile\fR method in the Gemfile\. -.IP "4." 4 The \fBBUNDLE_LOCKFILE\fR environment variable\. +.IP "4." 4 +The \fBlockfile\fR method in the Gemfile\. .IP "5." 4 The default behavior of adding \fB\.lock\fR to the end of the Gemfile name\. .IP "" 0 diff --git a/bundler/lib/bundler/man/gemfile.5.ronn b/bundler/lib/bundler/man/gemfile.5.ronn index e4bc91359e3c..18d7bb826e44 100644 --- a/bundler/lib/bundler/man/gemfile.5.ronn +++ b/bundler/lib/bundler/man/gemfile.5.ronn @@ -581,6 +581,6 @@ following precedence is used: 1. The `bundle install` `--no-lock` option (which disables lockfile creation). 1. The `bundle install` `--lockfile` option. -1. The `lockfile` method in the Gemfile. 1. The `BUNDLE_LOCKFILE` environment variable. +1. The `lockfile` method in the Gemfile. 1. The default behavior of adding `.lock` to the end of the Gemfile name. diff --git a/bundler/spec/commands/install_spec.rb b/bundler/spec/commands/install_spec.rb index bacd8d64f2d6..3dc8aa0dc017 100644 --- a/bundler/spec/commands/install_spec.rb +++ b/bundler/spec/commands/install_spec.rb @@ -41,6 +41,20 @@ expect(bundled_app("OmgFile.lock")).to exist end + it "creates lockfile using BUNDLE_LOCKFILE instead of lockfile method" do + ENV["BUNDLE_LOCKFILE"] = "ReallyOmgFile.lock" + install_gemfile <<-G + lockfile "OmgFile.lock" + source "https://gem.repo1/" + gem "myrack", "1.0" + G + + expect(bundled_app("ReallyOmgFile.lock")).to exist + expect(bundled_app("OmgFile.lock")).not_to exist + ensure + ENV.delete("BUNDLE_LOCKFILE") + end + it "creates lockfile based on --lockfile option is given" do gemfile bundled_app("OmgFile"), <<-G source "https://gem.repo1/" From 463488b439e3de5ed39551e0afb4a2118fcf6d59 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 2 Dec 2025 11:39:29 +0900 Subject: [PATCH 247/295] Improve banner message for the default command. Co-authored-by: Benoit Daloze Co-authored-by: Patrik Ragnarsson --- bundler/lib/bundler/cli.rb | 6 +++--- bundler/spec/bundler/cli_spec.rb | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/bundler/lib/bundler/cli.rb b/bundler/lib/bundler/cli.rb index f5977863ddcc..9c29751a7c31 100644 --- a/bundler/lib/bundler/cli.rb +++ b/bundler/lib/bundler/cli.rb @@ -133,10 +133,10 @@ def self.default_command(meth = nil) unless Bundler.settings[:default_cli_command] Bundler.ui.info <<-MSG - In the feature version of Bundler, running `bundle` without argument will no longer run `bundle install`. + In a future version of Bundler, running `bundle` without argument will no longer run `bundle install`. Instead, the `cli_help` command will be displayed. Please use `bundle install` explicitly for scripts like CI/CD. - If you wish to use feature behavior now with `bundle config set default_cli_command cli_help --global` - or you can continue to use the old behavior with `bundle config set default_cli_command install_or_cli_help --global`. + You can use the future behavior now with `bundle config set default_cli_command cli_help --global`, + or you can continue to use the current behavior with `bundle config set default_cli_command install_or_cli_help --global`. This message will be removed after a default_cli_command value is set. MSG end diff --git a/bundler/spec/bundler/cli_spec.rb b/bundler/spec/bundler/cli_spec.rb index ac6b77ad7483..4503cea6a005 100644 --- a/bundler/spec/bundler/cli_spec.rb +++ b/bundler/spec/bundler/cli_spec.rb @@ -90,7 +90,7 @@ def out_with_macos_man_workaround it "tries to installs by default but print help on missing Gemfile" do bundle "", raise_on_error: false expect(err).to include("Could not locate Gemfile") - expect(out).to include("In the feature version of Bundler") + expect(out).to include("In a future version of Bundler") expect(out).to include("Bundler version #{Bundler::VERSION}"). and include("\n\nBundler commands:\n\n"). @@ -102,7 +102,7 @@ def out_with_macos_man_workaround it "runs bundle install when default_cli_command set to install" do bundle "config set default_cli_command install_or_cli_help" bundle "", raise_on_error: false - expect(out).to_not include("In the feature version of Bundler") + expect(out).to_not include("In a future version of Bundler") expect(err).to include("Could not locate Gemfile") end end From cad0c195a132af9d2b5e87cdb520ad67374fdc59 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 2 Dec 2025 13:04:27 +0900 Subject: [PATCH 248/295] Move UPGRADING doc and add Bundler upgrade/downgrade instructions --- doc/{rubygems => }/UPGRADING.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) rename doc/{rubygems => }/UPGRADING.md (51%) diff --git a/doc/rubygems/UPGRADING.md b/doc/UPGRADING.md similarity index 51% rename from doc/rubygems/UPGRADING.md rename to doc/UPGRADING.md index fe5cf53a3579..7cfeb8346ee1 100644 --- a/doc/rubygems/UPGRADING.md +++ b/doc/UPGRADING.md @@ -1,13 +1,19 @@ -# How to upgrade/downgrade Rubygems: - -## Downgrade Recipe - - $ gem update --system 3.1.4 +# How to upgrade/downgrade Rubygems and Bundler: ## Upgrade Recipe $ gem update --system + $ gem install bundler + $ bundle update --bundler + +## Downgrade Recipe + + $ gem update --system 3.7.2 + + $ gem install bundler -v 2.7.2 + $ bundle update --bundler=2.7.2 + ## Install from source * Download from: https://rubygems.org/pages/download From c8437ef073bc8466585595b77d70afd9f51ba753 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 2 Dec 2025 13:06:20 +0900 Subject: [PATCH 249/295] Add instructions to UPGRADING.md for installing pre-release RubyGems and Bundler --- doc/UPGRADING.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/UPGRADING.md b/doc/UPGRADING.md index 7cfeb8346ee1..d31fc87e105b 100644 --- a/doc/UPGRADING.md +++ b/doc/UPGRADING.md @@ -14,6 +14,13 @@ $ gem install bundler -v 2.7.2 $ bundle update --bundler=2.7.2 +## Install a pre-release version + + $ gem update --system --pre + + $ gem install bundler --pre + $ bundle update --bundler=4.0.0.beta1 + ## Install from source * Download from: https://rubygems.org/pages/download From ff73a497b17e6722622b060c675ad48dbe8a8283 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Tue, 2 Dec 2025 15:03:41 +0900 Subject: [PATCH 250/295] Move upgrading guide to guides.rubygems.org --- doc/bundler/UPGRADING.md | 211 --------------------------------------- 1 file changed, 211 deletions(-) delete mode 100644 doc/bundler/UPGRADING.md diff --git a/doc/bundler/UPGRADING.md b/doc/bundler/UPGRADING.md deleted file mode 100644 index d773dc4b9fc3..000000000000 --- a/doc/bundler/UPGRADING.md +++ /dev/null @@ -1,211 +0,0 @@ -# Upgrading - -## Bundler 4 - -In order to prepare for Bundler 4, you can easily configure Bundler 2.7 to -behave exactly like Bundler 4 will behave. To do so, set the environment -variable `BUNDLE_SIMULATE_VERSION` to `4`. Alternatively, you can use `bundle -config` and enable "Bundler 4 mode" either globally through `bundle config set ---global simulate_version 4`, or locally through `bundle config set --local -simulate_version 4`. From now on in this document we will assume that all three -of these configuration options are available, but will only mention `bundle -config set