diff --git a/.changelog.yml b/.changelog.yml index d0f94e223b88..1ebb5678aa58 100644 --- a/.changelog.yml +++ b/.changelog.yml @@ -13,21 +13,19 @@ release_date_format: "%Y-%m-%d" entry_wrapping: 74 changelog_label_mapping: - "rubygems: security": "### Security:" - "rubygems: breaking change": "### Breaking changes:" - "rubygems: deprecation": "### Deprecations:" "rubygems: feature": "### Features:" "rubygems: performance": "### Performance:" "rubygems: enhancement": "### Enhancements:" "rubygems: bug fix": "### Bug fixes:" + "rubygems: security": "### Security:" + "rubygems: breaking change": "### Breaking changes:" + "rubygems: deprecation": "### Deprecations:" "rubygems: documentation": "### Documentation:" "rubygems: skip changelog": null patch_level_labels: - - "rubygems: security" - - "rubygems: deprecation" - "rubygems: enhancement" - "rubygems: bug fix" - - "rubygems: performance" + - "rubygems: security" - "rubygems: documentation" - "rubygems: skip changelog" 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 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/bundler.yml b/.github/workflows/bundler.yml index 974d2d89a56e..7ea6be4aec21 100644 --- a/.github/workflows/bundler.yml +++ b/.github/workflows/bundler.yml @@ -38,9 +38,15 @@ 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 } - - { 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 } + # 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, group: a } + - { os: { name: Windows, value: windows-2025 }, ruby: { name: ruby-3.3, value: 3.3.9 }, timeout: 150, group: b } + - { os: { name: Windows, value: windows-2025 }, ruby: { name: ruby-3.3, value: 3.3.9 }, timeout: 150, group: c } + - { os: { name: Windows, value: windows-2025 }, ruby: { name: ruby-3.3, value: 3.3.9 }, timeout: 150, group: d } + - { os: { name: Windows, value: windows-2025 }, ruby: { name: ruby-3.4, value: 3.4.5 }, timeout: 150, group: a } + - { os: { name: Windows, value: windows-2025 }, ruby: { name: ruby-3.4, value: 3.4.5 }, timeout: 150, group: b } + - { os: { name: Windows, value: windows-2025 }, ruby: { name: ruby-3.4, value: 3.4.5 }, timeout: 150, group: c } + - { os: { name: Windows, value: windows-2025 }, ruby: { name: ruby-3.4, value: 3.4.5 }, timeout: 150, group: d } - { os: { name: Ubuntu, value: ubuntu-24.04 }, ruby: { name: jruby, value: jruby-10.0.2.0 } } - { os: { name: Windows, value: windows-2025 }, ruby: { name: jruby, value: jruby-10.0.2.0 } } @@ -49,11 +55,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -70,7 +76,12 @@ jobs: run: | bin/parallel_rspec working-directory: ./bundler - if: matrix.ruby.name != 'jruby' + if: matrix.ruby.name != 'jruby' && matrix.os.name != 'Windows' + - name: Run Test (CRuby on Windows - Group ${{ matrix.group }}) + run: | + bin/parallel_rspec --tag windows_${{ matrix.group }} + working-directory: ./bundler + if: matrix.ruby.name != 'jruby' && matrix.os.name == 'Windows' - name: Run Test (JRuby) run: | bin/parallel_rspec --tag jruby_only --tag jruby diff --git a/.github/workflows/daily-bundler.yml b/.github/workflows/daily-bundler.yml index ae76395eb563..14f78a83c661 100644 --- a/.github/workflows/daily-bundler.yml +++ b/.github/workflows/daily-bundler.yml @@ -16,16 +16,16 @@ 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: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: persist-credentials: false - name: Set up Ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ruby-head bundler: none @@ -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..e7512f869f03 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: @@ -23,12 +23,12 @@ 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 - name: Set up Ruby - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby }} bundler: none @@ -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/install-rubygems.yml b/.github/workflows/install-rubygems.yml index afbda38c4872..fee2d0f0d247 100644 --- a/.github/workflows/install-rubygems.yml +++ b/.github/workflows/install-rubygems.yml @@ -31,11 +31,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -124,11 +124,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -166,11 +166,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.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@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: 3.3 bundler: none @@ -216,11 +216,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/lint/requirements.in b/.github/workflows/lint/requirements.in index 182f49633827..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.12.1 +zizmor==1.18.0 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 073466f070a9..7447bf59c3c6 100644 --- a/.github/workflows/realworld-bundler.yml +++ b/.github/workflows/realworld-bundler.yml @@ -37,11 +37,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -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 @@ -60,11 +60,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: 3.4.5 bundler: none @@ -87,11 +87,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -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 @@ -111,18 +111,18 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: 3.4.5 bundler: none - 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 diff --git a/.github/workflows/ruby-core.yml b/.github/workflows/ruby-core.yml index fdcdca06590c..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 @@ -36,13 +36,14 @@ 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 -j2 + make working-directory: ruby/ruby - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + - uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: - path: rubygems/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: | @@ -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 -j2 -s test-all TESTS="rubygems --no-retry" + run: make -s test-all TESTS="--no-retry -j$((1 + $(nproc)))" working-directory: ruby/ruby if: matrix.target == 'Rubygems' - name: Test Bundler diff --git a/.github/workflows/rubygems.yml b/.github/workflows/rubygems.yml index 2ec11777c7bb..90a920bc3cb8 100644 --- a/.github/workflows/rubygems.yml +++ b/.github/workflows/rubygems.yml @@ -39,11 +39,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 9521cecd0bb6..6ce7eb45f9bc 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -28,12 +28,12 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 with: 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 @@ -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@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 with: sarif_file: results.sarif diff --git a/.github/workflows/sync-ruby.yml b/.github/workflows/sync-ruby.yml new file mode 100644 index 000000000000..9ce5b130749d --- /dev/null +++ b/.github/workflows/sync-ruby.yml @@ -0,0 +1,35 @@ +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@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0 + with: + persist-credentials: false + + - name: Create GitHub App token + id: app-token + uses: actions/create-github-app-token@7e473efe3cb98aa54f8d4bac15400b15fad77d94 # v2.2.0 + 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@f69fa9eedd3c62a599220f4d5745230e237904be # 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 diff --git a/.github/workflows/system-rubygems-bundler.yml b/.github/workflows/system-rubygems-bundler.yml index ea9e67473238..50b717431324 100644 --- a/.github/workflows/system-rubygems-bundler.yml +++ b/.github/workflows/system-rubygems-bundler.yml @@ -33,11 +33,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none @@ -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 1cdf1239f2cc..c7715071150d 100644 --- a/.github/workflows/truffleruby-bundler.yml +++ b/.github/workflows/truffleruby-bundler.yml @@ -24,11 +24,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.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 99f608d6f8e9..0dda6a140eeb 100644 --- a/.github/workflows/ubuntu-lint.yml +++ b/.github/workflows/ubuntu-lint.yml @@ -29,10 +29,10 @@ 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@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # v6.7.0 + - uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7.1.4 with: python-version: "3.13" activate-environment: true @@ -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@fe4161a26a8629af62121b670040955b330f9af2 # v4.31.6 if: matrix.command == 'zizmor' with: sarif_file: results.sarif @@ -71,11 +71,11 @@ 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 - uses: ruby/setup-ruby@0481980f17b760ef6bca5e8c55809102a0af1e5a # v1.263.0 + uses: ruby/setup-ruby@8aeb6ff8030dd539317f8e1769a044873b56ea71 # v1.268.0 with: ruby-version: ${{ matrix.ruby.value }} bundler: none diff --git a/.github/workflows/weekly-update.yml b/.github/workflows/weekly-update.yml index 5e9cb8c7b130..08186902d52a 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] @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index f4913437f7e6..8da04402a01c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,30 +1,177 @@ # Changelog +## 4.0.2 / 2025-12-17 + +### Enhancements: + +* Pass down value of `BUNDLE_JOBS` to RubyGems before compiling & + introduce a new `gem install -j` flag. Pull request + [#9171](https://github.com/ruby/rubygems/pull/9171) by Edouard-chin +* Installs bundler 4.0.2 as a default gem. + +## 4.0.1 / 2025-12-09 + +### Enhancements: + +* Installs bundler 4.0.1 as a default gem. + +### Bug fixes: + +* Fixed unexpected default bundler installation. Pull request + [#9167](https://github.com/ruby/rubygems/pull/9167) by hsbt + +### Documentation: + +* Update contributing docs with `RGV`. Pull request + [#9155](https://github.com/ruby/rubygems/pull/9155) by eileencodes + +## 4.0.0 / 2025-12-03 + +### 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: + +* Add `MAKEFLAGS=-j` by default before compiling. Pull request + [#9131](https://github.com/ruby/rubygems/pull/9131) by Edouard-chin +* 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 +* 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 +* 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 +* `gem sources --prepend` and `--append` allow finer grained control of + sources. Pull request [#8901](https://github.com/ruby/rubygems/pull/8901) + by martinemde +* Improve `gem sources --remove` output. Pull request + [#8909](https://github.com/ruby/rubygems/pull/8909) by deivid-rodriguez +* Make `gem sources` output more clear. Pull request + [#8938](https://github.com/ruby/rubygems/pull/8938) by deivid-rodriguez +* 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 +* Use IMDSv2 for S3 instance credentials. Pull request + [#7709](https://github.com/ruby/rubygems/pull/7709) by folbricht-stripe +* Fix regression in presence of RVM gems. Pull request + [#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/ruby/rubygems/pull/8846) by + deivid-rodriguez +* Installs bundler 4.0.0 as a default gem. + +### Bug fixes: + +* Fix test failure of mswin and nmake. Pull request + [#9135](https://github.com/ruby/rubygems/pull/9135) by hsbt +* Respect `BUNDLE_VERSION` config at Gem::BundlerVersionFinder. Pull + request [#9106](https://github.com/ruby/rubygems/pull/9106) by hsbt +* Fix "did you mean" suggestions for unknown commands. Pull request + [#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/ruby/rubygems/pull/8939) by + deivid-rodriguez + +### 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 +* 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 + +### Documentation: + +* Unified UPGRADING.md and extract blog.rubygems.org. Pull request + [#9148](https://github.com/ruby/rubygems/pull/9148) by hsbt +* Remove italic formatting from changelog section headers. Pull request + [#9128](https://github.com/ruby/rubygems/pull/9128) by hsbt +* [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 +* Added document for Gem::Uninstaller. Pull request + [#8904](https://github.com/ruby/rubygems/pull/8904) by hsbt +* Use mailto link in Code of Conduct. Pull request + [#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/ruby/rubygems/pull/8848) by indirect + ## 3.7.2 / 2025-09-09 ### Enhancements: * `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 +179,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 +294,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 +333,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 +371,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 +386,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 +398,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 +537,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 +552,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 +569,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 +613,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 +621,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 +644,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 +664,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 +684,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 +695,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 +707,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 +718,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 +734,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 +763,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 +789,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 +815,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 +829,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 +874,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 +911,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 +932,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 +1029,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 +1062,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 +1124,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 +1132,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 +1148,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 +1166,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 +1198,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 +1218,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 +1243,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 +1317,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 +1328,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 +1349,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 +1401,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 +1440,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 +1485,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 +1558,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 +1604,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 +1629,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 +1697,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 +1802,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 +1842,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 +1887,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 +1925,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 +1982,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 +1990,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 +2018,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 +2052,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 +2063,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 +2081,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 +2095,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 +2112,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 +2122,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 +2130,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 +2149,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 +2193,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 +2754,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 +2771,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 +2827,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 +2890,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 +3213,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 +3308,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 +3321,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 +3569,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 +3605,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 +3639,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 +3654,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 +3706,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 +3843,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 +3877,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 +3906,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 +4018,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 +4053,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 +4090,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 +4108,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 +4125,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 +4145,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 +4167,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 +4209,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 +4290,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 +4353,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 +4380,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 +4399,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 +4432,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 +4460,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 +4468,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 +4478,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 +4547,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 +4567,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 +4605,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 +4653,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 +4665,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 +4689,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 +4707,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 +4770,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 +4794,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 +4808,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 +4817,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 +4850,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 +4859,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 +4878,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 +4896,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 +4919,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 +4990,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 +5120,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 +5286,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 +5481,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/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index ed42bfc0c4f9..38bc097086ea 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,132 +1,10 @@ -# RubyGems and Bundler Code of Conduct +# Code of Conduct -## Our Pledge +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.): -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. +* 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. -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 +If you have any concerns about behaviour within this project, please contact us at [conduct@rubygems.org](mailto:conduct@rubygems.org). diff --git a/Manifest.txt b/Manifest.txt index 33ccda80e924..6d7aeca638d2 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 @@ -222,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 @@ -349,10 +352,9 @@ bundler/lib/bundler/vlad.rb bundler/lib/bundler/worker.rb bundler/lib/bundler/yaml_serializer.rb doc/MAINTAINERS.txt -doc/bundler/UPGRADING.md +doc/UPGRADING.md doc/rubygems/CONTRIBUTING.md doc/rubygems/POLICIES.md -doc/rubygems/UPGRADING.md exe/gem exe/update_rubygems hide_lib_for_update/note.txt @@ -384,7 +386,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 @@ -428,7 +429,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 @@ -528,8 +528,8 @@ lib/rubygems/uri.rb lib/rubygems/uri_formatter.rb lib/rubygems/user_interaction.rb lib/rubygems/util.rb +lib/rubygems/util/atomic_file_writer.rb lib/rubygems/util/licenses.rb -lib/rubygems/util/list.rb lib/rubygems/validator.rb lib/rubygems/vendor/.document lib/rubygems/vendor/molinillo/LICENSE diff --git a/README.md b/README.md index 3451f98261c1..96c145ae3cec 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ To upgrade to the latest RubyGems, run: $ gem update --system -See [UPGRADING](doc/rubygems/UPGRADING.md) for more details and alternative instructions. +See [UPGRADING](doc/UPGRADING.md) for more details and alternative instructions. ## Release policy @@ -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/Rakefile b/Rakefile index 00fed0691e71..d65d1fd50d67 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" @@ -94,7 +94,7 @@ RDoc::Task.new rdoc: "docs", clobber_rdoc: "clobber_docs" do |doc| rdoc_files = Rake::FileList.new %w[lib bundler/lib] rdoc_files.add %w[CHANGELOG.md LICENSE.txt MIT.txt CODE_OF_CONDUCT.md doc/rubygems/CONTRIBUTING.md - doc/MAINTAINERS.txt Manifest.txt doc/rubygems/POLICIES.md README.md doc/rubygems/UPGRADING.md bundler/CHANGELOG.md + doc/MAINTAINERS.txt Manifest.txt doc/rubygems/POLICIES.md README.md doc/UPGRADING.md bundler/CHANGELOG.md doc/bundler/contributing/README.md bundler/LICENSE.md bundler/README.md hide_lib_for_update/note.txt].map(&:freeze) @@ -140,13 +140,13 @@ 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" 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 @@ -181,12 +181,18 @@ 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}" task release: :prerelease do Rake::Task["package"].invoke - sh "gem push pkg/rubygems-update-#{v}.gem" + 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 @@ -248,40 +254,54 @@ desc "Upload release to S3" task :upload_to_s3 do require "aws-sdk-s3" - s3 = Aws::S3::Resource.new(region:"us-west-2") + client = Aws::S3::Client.new(region: "us-west-2") + transfer_manager = Aws::S3::TransferManager.new(client: client) + %w[zip tgz].each do |ext| - obj = s3.bucket("oregon.production.s3.rubygems.org").object("rubygems/rubygems-#{v}.#{ext}") - obj.upload_file("pkg/rubygems-#{v}.#{ext}", acl: "public-read") + transfer_manager.upload_file( + "pkg/rubygems-#{v}.#{ext}", + bucket: "oregon.production.s3.rubygems.org", + key: "rubygems/rubygems-#{v}.#{ext}", + acl: "public-read" + ) end end desc "Upload release to rubygems.org" -task upload: %w[upload_to_github upload_to_s3] +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 +end -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 - ruby "-I", lib_dir, "-S", "rake", "command_guide" - ruby "-I", lib_dir, "-S", "rake", "spec_guide" + chdir "tmp/guides.rubygems.org" do + ruby "-I", lib_dir, "-S", "rake", "-N", "command_guide" + ruby "-I", lib_dir, "-S", "rake", "-N", "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,9 +309,13 @@ namespace "guides" do end end - task "push" => %w[../guides.rubygems.org] do - chdir "../guides.rubygems.org" do - sh "git", "push" + task "push" => %w[tmp/guides.rubygems.org] do + chdir "tmp/guides.rubygems.org" do + if ENV["DRYRUN"] + puts "DRYRUN mode: skipping push to guides repository" + else + sh "git", "push" + end end end @@ -306,10 +330,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 @@ -318,7 +342,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) @@ -326,30 +349,35 @@ 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 - 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] @@ -358,7 +386,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" @@ -371,15 +400,28 @@ 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] + bundle update --bundler=#{v} + +## RubyGems Release Notes -#{history.release_notes_for_blog.join("\n")} +#{rubygems_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: @@ -397,17 +439,21 @@ 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 - sh "git", "push" + task "push" => %w[tmp/blog.rubygems.org] do + chdir "tmp/blog.rubygems.org" do + if ENV["DRYRUN"] + puts "DRYRUN mode: skipping push to blog repository" + else + sh "git", "push" + end end end @@ -438,10 +484,9 @@ module Rubygems # Restore important documents %w[ doc/MAINTAINERS.txt - doc/bundler/UPGRADING.md + doc/UPGRADING.md doc/rubygems/CONTRIBUTING.md doc/rubygems/POLICIES.md - doc/rubygems/UPGRADING.md ].each {|f| files << f } files.sort @@ -574,6 +619,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) {} @@ -657,8 +712,10 @@ namespace :bundler do Rake::Task["bundler:build_metadata:clean"].tap(&:reenable).invoke end + task "build" => ["bundler:release:check_ruby_version"] + 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| @@ -677,5 +734,9 @@ namespace :bundler do Release.for_bundler(gemspec_version).create_for_github! end + + task :check_ruby_version do + raise "bundler:build need to released Ruby for using nokogiri" if RUBY_PATCHLEVEL.to_i < 0 + end end end diff --git a/bundler/.changelog.yml b/bundler/.changelog.yml index da930c8a2cd6..e43698b1fa25 100644 --- a/bundler/.changelog.yml +++ b/bundler/.changelog.yml @@ -7,21 +7,19 @@ entry_template: " - %title [#%pull_request_number](%pull_request_url)" release_date_format: "%Y-%m-%d" changelog_label_mapping: - "bundler: security": "### Security:" - "bundler: breaking change": "### Breaking changes:" - "bundler: deprecation": "### Deprecations:" "bundler: feature": "### Features:" "bundler: performance": "### Performance:" "bundler: enhancement": "### Enhancements:" "bundler: bug fix": "### Bug fixes:" + "bundler: security": "### Security:" + "bundler: breaking change": "### Breaking changes:" + "bundler: deprecation": "### Deprecations:" "bundler: documentation": "### Documentation:" "bundler: skip changelog": null patch_level_labels: - - "bundler: security" - - "bundler: deprecation" - "bundler: enhancement" - "bundler: bug fix" - - "bundler: performance" + - "bundler: security" - "bundler: documentation" - "bundler: skip changelog" diff --git a/bundler/CHANGELOG.md b/bundler/CHANGELOG.md index 7ed29d012061..1c5e4eb7c013 100644 --- a/bundler/CHANGELOG.md +++ b/bundler/CHANGELOG.md @@ -1,2024 +1,2155 @@ # Changelog +## 4.0.2 (2025-12-17) + +### Enhancements: + + - Support single quotes in mise format ruby version [#9183](https://github.com/ruby/rubygems/pull/9183) + - Tweak the Bundler's "X gems now installed message": [#9194](https://github.com/ruby/rubygems/pull/9194) + +### Bug fixes: + + - Allow to show cli_help with `bundler` executable [#9198](https://github.com/ruby/rubygems/pull/9198) + - Allow bundle pristine to work for git gems in the same repo [#9196](https://github.com/ruby/rubygems/pull/9196) + +## 4.0.1 (2025-12-09) + +### Performance: + + - Increase connection pool to allow for up to 70% speed increase on `bundle install` [#9087](https://github.com/ruby/rubygems/pull/9087) + +### Enhancements: + + - Fix the config suggestion in the warning for `$ bundle` [#9164](https://github.com/ruby/rubygems/pull/9164) + - Fix native extension loading in newgem template for RHEL-based systems [#9156](https://github.com/ruby/rubygems/pull/9156) + +### Bug fixes: + + - Fix Bundler removing executables after creating them [#9169](https://github.com/ruby/rubygems/pull/9169) + +## 4.0.0 (2025-12-03) + +### 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) + - Add `--ext=go` to `bundle gem` [#8183](https://github.com/ruby/rubygems/pull/8183) + - 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: + + - Run git operations in parallel to speed things up: [#9100](https://github.com/ruby/rubygems/pull/9100) + - 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: + + - Make BUNDLE_LOCKFILE environment variable have precedence over lockfile method in Gemfile [#9146](https://github.com/ruby/rubygems/pull/9146) + - Improve banner message for the default command [#9145](https://github.com/ruby/rubygems/pull/9145) + - Introduce `install_or_cli_help` and use it default `bundle` command [#9136](https://github.com/ruby/rubygems/pull/9136) + - Add go_gem/rake_task for Go native extension gem skeleton [#9105](https://github.com/ruby/rubygems/pull/9105) + - Warn users that `bundle` now display the help: [#9092](https://github.com/ruby/rubygems/pull/9092) + - 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) + - Support to embedded Pathname [#9056](https://github.com/ruby/rubygems/pull/9056) + - Enforce activation of 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) + - 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) + - 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) + - Add some missing deprecation messages [#8844](https://github.com/ruby/rubygems/pull/8844) + +### Bug fixes: + + - Fixed checksums generation issue when no source is specified [#9133](https://github.com/ruby/rubygems/pull/9133) + - Check for file existence before deletion from cache [#9095](https://github.com/ruby/rubygems/pull/9095) + - Use method_defined?(:method, false) [#9098](https://github.com/ruby/rubygems/pull/9098) + - Handle BUNDLER_VERSION being set to an empty string [#6928](https://github.com/ruby/rubygems/pull/6928) + - 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) + - 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) + - Cancel deprecation of `--force` flag to `bundle install` and `bundle update` [#8843](https://github.com/ruby/rubygems/pull/8843) + +### 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) + - 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) + - 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) + +### Documentation: + + - Unified UPGRADING.md and extract blog.rubygems.org [#9148](https://github.com/ruby/rubygems/pull/9148) + - Remove italic formatting from changelog section headers [#9128](https://github.com/ruby/rubygems/pull/9128) + - Small clarifications to Bundler 4 upgrade docs [#8964](https://github.com/ruby/rubygems/pull/8964) + - 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) + - 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.2 (2025-09-09) ### 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 +2164,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 +2195,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 +3544,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.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/cli.rb b/bundler/lib/bundler/cli.rb index c577f4981470..1f6a65ca57ae 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", @@ -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] || 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 + 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 @@ -92,7 +104,7 @@ def cli_help primary_commands = ["install", "update", "cache", "exec", "config", "help"] list = self.class.printable_commands(true) - by_name = list.group_by {|name, _message| name.match(/^bundle (\w+)/)[1] } + by_name = list.group_by {|name, _message| name.match(/^bundler? (\w+)/)[1] } utilities = by_name.keys.sort - primary_commands primary_commands.map! {|name| (by_name[name] || raise("no primary command #{name}")).first } utilities.map! {|name| by_name[name].first } @@ -107,7 +119,33 @@ def cli_help shell.say self.class.send(:class_options_help, shell) end - default_task(Bundler.feature_flag.default_cli_command) + + desc "install_or_cli_help", "Deprecated alias of install", hide: true + def install_or_cli_help + Bundler.ui.warn <<~MSG + `bundle install_or_cli_help` is a deprecated alias of `bundle install`. + It might be called due to the 'default_cli_command' being set to 'install_or_cli_help', + if so fix that by running `bundle config set default_cli_command install --global`. + MSG + invoke_other_command("install") + end + + def self.default_command(meth = nil) + return super if meth + + unless Bundler.settings[:default_cli_command] + Bundler.ui.info <<~MSG + 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. + 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 --global`. + This message will be removed after a default_cli_command value is set. + + MSG + end + + Bundler.settings[:default_cli_command] || "install" + end class_option "no-color", type: :boolean, desc: "Disable colorization in output" class_option "retry", type: :numeric, aliases: "-r", banner: "NUM", @@ -143,7 +181,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 @@ -217,8 +255,10 @@ 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." 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)." @@ -245,9 +285,14 @@ 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 + rescue GemfileNotFound => error + invoke_other_command("cli_help") + raise error # re-raise to show the error and get a failing exit status end map aliases_for("install") @@ -438,7 +483,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 @@ -447,9 +492,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" @@ -493,7 +537,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}" @@ -623,7 +667,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 @@ -695,6 +739,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/cli/common.rb b/bundler/lib/bundler/cli/common.rb index 7608adf2ef9e..2f332ff36440 100644 --- a/bundler/lib/bundler/cli/common.rb +++ b/bundler/lib/bundler/cli/common.rb @@ -94,11 +94,14 @@ def self.ask_for_spec_from(specs) end def self.gem_not_found_message(missing_gem_name, alternatives) - require_relative "../similarity_detector" 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 + 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 message end @@ -134,5 +137,19 @@ def self.clean_after_install? clean &&= !Bundler.use_system_gems? clean end + + 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/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/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 diff --git a/bundler/lib/bundler/cli/gem.rb b/bundler/lib/bundler/cli/gem.rb index 56d23d9e9fc2..236ce530eccb 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 @@ -15,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) @@ -26,7 +26,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] @@ -74,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, @@ -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") @@ -237,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] @@ -282,7 +290,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/cli/install.rb b/bundler/lib/bundler/cli/install.rb index 57c28379e5f5..67feba84bdb0 100644 --- a/bundler/lib/bundler/cli/install.rb +++ b/bundler/lib/bundler/cli/install.rb @@ -38,12 +38,14 @@ 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). 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) @@ -88,7 +90,7 @@ def dependencies_count_for(definition) end def gems_installed_for(definition) - count = definition.specs.count + count = definition.specs.count {|spec| spec.name != "bundler" } "#{count} #{count == 1 ? "gem" : "gems"} now installed" end 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/cli/pristine.rb b/bundler/lib/bundler/cli/pristine.rb index cfd4a995a31f..b8545fe4c9c3 100644 --- a/bundler/lib/bundler/cli/pristine.rb +++ b/bundler/lib/bundler/cli/pristine.rb @@ -11,6 +11,7 @@ def run definition = Bundler.definition definition.validate_runtime! installer = Bundler::Installer.new(Bundler.root, definition) + git_sources = [] ProcessLock.lock do installed_specs = definition.specs.reject do |spec| @@ -41,6 +42,9 @@ def run end FileUtils.rm_rf spec.extension_dir FileUtils.rm_rf spec.full_gem_path + + next if git_sources.include?(source) + git_sources << source else Bundler.ui.warn("Cannot pristine #{gem_name}. Gem is sourced from local path.") next diff --git a/bundler/lib/bundler/cli/update.rb b/bundler/lib/bundler/cli/update.rb index 13f576cfa75b..9cc90acc5853 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) @@ -23,10 +23,10 @@ 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" + 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/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/current_ruby.rb b/bundler/lib/bundler/current_ruby.rb index faec69536972..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).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 = { @@ -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/lib/bundler/definition.rb b/bundler/lib/bundler/definition.rb index 49627cc56237..2fa7d0d27794 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 @@ -9,6 +10,8 @@ class << self attr_accessor :no_lock end + attr_writer :lockfile + attr_reader( :dependencies, :locked_checksums, @@ -282,12 +285,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 @@ -367,14 +375,14 @@ 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) 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 @@ -531,11 +539,24 @@ def unlocking? end def add_checksums + require "rubygems/package" + @locked_checksums = true 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 @@ -973,10 +994,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 @@ -1083,7 +1105,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 >= 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 + 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) 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/dsl.rb b/bundler/lib/bundler/dsl.rb index 3bf5dbc1153c..6f06c4e91879 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 @@ -411,7 +423,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(", ") + 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 if opts.key?("source") @@ -477,14 +495,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 @@ -492,16 +506,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? @@ -513,7 +517,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/endpoint_specification.rb b/bundler/lib/bundler/endpoint_specification.rb index 95c6deea26bf..c06684657d59 100644 --- a/bundler/lib/bundler/endpoint_specification.rb +++ b/bundler/lib/bundler/endpoint_specification.rb @@ -60,6 +60,28 @@ def load_paths end end + # needed for binstubs + def executables + if @remote_specification + @remote_specification.executables + elsif _local_specification + _local_specification.executables + else + super + end + end + + # needed for bundle clean + def bindir + if @remote_specification + @remote_specification.bindir + elsif _local_specification + _local_specification.bindir + else + super + end + end + # needed for post_install_messages during install def post_install_message if @remote_specification 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/feature_flag.rb b/bundler/lib/bundler/feature_flag.rb index b2b134889573..dea8abedba39 100644 --- a/bundler/lib/bundler/feature_flag.rb +++ b/bundler/lib/bundler/feature_flag.rb @@ -2,37 +2,8 @@ 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 } } - 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 } - def removed_major?(target_major_version) @major_version > target_major_version end 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/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/inline.rb b/bundler/lib/bundler/inline.rb index f2f5b22cd381..c861bee14967 100644 --- a/bundler/lib/bundler/inline.rb +++ b/bundler/lib/bundler/inline.rb @@ -44,14 +44,16 @@ 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.feature_flag.plugins? + Bundler::Plugin.gemfile_install(&gemfile) if Bundler.settings[:plugins] builder = Bundler::Dsl.new builder.instance_eval(&gemfile) @@ -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/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/lib/bundler/lockfile_parser.rb b/bundler/lib/bundler/lockfile_parser.rb index 9ab9d73ae26d..ac0ce1ef3d0a 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_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/lib/bundler/man/bundle-config.1 b/bundler/lib/bundler/man/bundle-config.1 index 29e830a3b0e0..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 @@ -312,7 +315,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..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`): @@ -360,7 +364,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/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)]. 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/man/bundle-install.1 b/bundler/lib/bundler/man/bundle-install.1 index 2d7ef96b4490..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] [\-\-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,12 +28,20 @@ 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 \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..c7d88bfb73c3 100644 --- a/bundler/lib/bundler/man/bundle-install.1.ronn +++ b/bundler/lib/bundler/man/bundle-install.1.ronn @@ -8,7 +8,9 @@ bundle-install(1) -- Install the dependencies specified in your Gemfile [--gemfile=GEMFILE] [--jobs=NUMBER] [--local] + [--lockfile=LOCKFILE] [--no-cache] + [--no-lock] [--prefer-local] [--quiet] [--retry=NUMBER] @@ -60,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 @@ -71,6 +77,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/lib/bundler/man/gemfile.5 b/bundler/lib/bundler/man/gemfile.5 index 4e1a63578076..a8c055a0c1a4 100644 --- a/bundler/lib/bundler/man/gemfile.5 +++ b/bundler/lib/bundler/man/gemfile.5 @@ -469,4 +469,35 @@ 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\. +.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 \fBbundle install\fR \fB\-\-lockfile\fR option\. +.IP "3." 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 802549737e38..18d7bb826e44 100644 --- a/bundler/lib/bundler/man/gemfile.5.ronn +++ b/bundler/lib/bundler/man/gemfile.5.ronn @@ -556,3 +556,31 @@ 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. + +### 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). +1. The `bundle install` `--lockfile` option. +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/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/ruby_dsl.rb b/bundler/lib/bundler/ruby_dsl.rb index db4d5521e549..5e52f38c8fd7 100644 --- a/bundler/lib/bundler/ruby_dsl.rb +++ b/bundler/lib/bundler/ruby_dsl.rb @@ -42,18 +42,21 @@ def ruby(*ruby_version) # Loads the file relative to the dirname of the Gemfile itself. def normalize_ruby_file(filename) file_content = Bundler.read_file(gemfile.dirname.join(filename)) - # match "ruby-3.2.2", ruby = "3.2.2" or "ruby 3.2.2" capturing version string up to the first space or comment - if /^ # Start of line - ruby # Literal "ruby" - [\s-]* # Optional whitespace or hyphens (for "ruby-3.2.2" format) - (?:=\s*)? # Optional equals sign with whitespace (for ruby = "3.2.2" format) - "? # Optional opening quote - ( # Start capturing group - [^\s#"]+ # One or more chars that aren't spaces, #, or quotes - ) # End capturing group - "? # Optional closing quote - /x.match(file_content) - $1 + # match "ruby-3.2.2", ruby = "3.2.2", ruby = '3.2.2' or "ruby 3.2.2" capturing version string up to the first space or comment + version_match = /^ # Start of line + ruby # Literal "ruby" + [\s-]* # Optional whitespace or hyphens (for "ruby-3.2.2" format) + (?:=\s*)? # Optional equals sign with whitespace (for ruby = "3.2.2" format) + (?: + "([^"]+)" # Double quoted version + | + '([^']+)' # Single quoted version + | + ([^\s#"']+) # Unquoted version + ) + /x.match(file_content) + if version_match + version_match[1] || version_match[2] || version_match[3] else file_content.strip end 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/lib/bundler/rubygems_gem_installer.rb b/bundler/lib/bundler/rubygems_gem_installer.rb index 1af1b85ff015..64ce6193d3d1 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, false) latest = Gem::Specification.stubs_for(spec.name).first return if latest && latest.version > spec.version @@ -103,6 +103,10 @@ def generate_bin_script(filename, bindir) end end + def build_jobs + Bundler.settings[:jobs] || super + end + def build_extensions extension_cache_path = options[:bundler_extension_cache_path] extension_dir = spec.extension_dir 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 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 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/bundler/lib/bundler/settings.rb b/bundler/lib/bundler/settings.rb index 7923ba51c366..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 @@ -83,6 +84,9 @@ class Settings "BUNDLE_VERSION" => "lockfile", "BUNDLE_LOCKFILE_CHECKSUMS" => true, "BUNDLE_CACHE_ALL" => true, + "BUNDLE_PLUGINS" => true, + "BUNDLE_GLOBAL_GEM_CACHE" => false, + "BUNDLE_UPDATE_REQUIRES_ALL_FLAG" => false, }.freeze def initialize(root = nil) diff --git a/bundler/lib/bundler/shared_helpers.rb b/bundler/lib/bundler/shared_helpers.rb index 41b7128d36e1..2aa8abe0a078 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__) @@ -25,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 @@ -57,7 +58,7 @@ def chdir(dir, &blk) def pwd Bundler.rubygems.ext_lock.synchronize do - Pathname.pwd + Dir.pwd end end @@ -104,7 +105,8 @@ def set_bundle_environment def filesystem_access(path, action = :write, &block) yield(path.dup) rescue Errno::EACCES => e - raise unless e.message.include?(path.to_s) || action == :create + path_basename = File.basename(path.to_s) + raise unless e.message.include?(path_basename) || action == :create raise PermissionError.new(path, action) rescue Errno::EAGAIN @@ -125,28 +127,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" + def feature_deprecated!(message) + return unless prints_major_deprecations? - feature_flag = Bundler.feature_flag - - 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 @@ -314,6 +301,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/lib/bundler/similarity_detector.rb b/bundler/lib/bundler/similarity_detector.rb deleted file mode 100644 index 50e66b9cab20..000000000000 --- a/bundler/lib/bundler/similarity_detector.rb +++ /dev/null @@ -1,63 +0,0 @@ -# frozen_string_literal: true - -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 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/git/git_proxy.rb b/bundler/lib/bundler/source/git/git_proxy.rb index f613377cb202..cd352c22a7ab 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 @@ -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 " \ @@ -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 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/lib/bundler/source/rubygems.rb b/bundler/lib/bundler/source/rubygems.rb index fdc3a77b2480..e1e030ffc899 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 @@ -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. @@ -493,7 +500,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 diff --git a/bundler/lib/bundler/spec_set.rb b/bundler/lib/bundler/spec_set.rb index 411393ce1bdd..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) @@ -179,9 +174,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 +205,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 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..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,132 +1,10 @@ -# Contributor Covenant Code of Conduct +# Code of Conduct -## Our Pledge +<%= 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.): -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. +* 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. -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 +If you have any concerns about behaviour within this project, please contact us at [<%= config[:email].inspect %>](mailto:<%= config[:email].inspect %>). diff --git a/bundler/lib/bundler/templates/newgem/Rakefile.tt b/bundler/lib/bundler/templates/newgem/Rakefile.tt index 172183d4b410..83f10009c704 100644 --- a/bundler/lib/bundler/templates/newgem/Rakefile.tt +++ b/bundler/lib/bundler/templates/newgem/Rakefile.tt @@ -59,6 +59,11 @@ 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/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/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" } 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/lib/newgem.rb.tt b/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt index caf6e32f4abf..3aedee0d25e9 100644 --- a/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +++ b/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt @@ -2,7 +2,7 @@ require_relative "<%= File.basename(config[:namespaced_path]) %>/version" <%- if config[:ext] -%> -require_relative "<%= File.basename(config[:namespaced_path]) %>/<%= config[:underscored_name] %>" +require "<%= File.basename(config[:namespaced_path]) %>/<%= config[:underscored_name] %>" <%- end -%> <%- config[:constant_array].each_with_index do |c, i| -%> 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/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/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 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/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/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/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/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 6abb171d1425..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 @@ -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) @@ -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. @@ -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 @@ -586,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. @@ -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 @@ -675,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. @@ -729,6 +743,7 @@ def set_port(v) def port=(v) check_port(v) set_port(v) + set_userinfo(nil) port end @@ -748,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, @@ -853,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. @@ -905,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 @@ -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)) @@ -1527,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 d4996a12e292..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 = '010003'.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/bundler/lib/bundler/version.rb b/bundler/lib/bundler/version.rb index 5a55b23ac18b..ca7bb0719aac 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.1.0.dev".freeze def self.bundler_major_version @bundler_major_version ||= gem_version.segments.first 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/cli_common_spec.rb b/bundler/spec/bundler/cli_common_spec.rb new file mode 100644 index 000000000000..015894b3a13e --- /dev/null +++ b/bundler/spec/bundler/cli_common_spec.rb @@ -0,0 +1,22 @@ +# 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"]) + 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]) + 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 'method(|s)' or 'method(|s)'?/) + end + end +end diff --git a/bundler/spec/bundler/cli_spec.rb b/bundler/spec/bundler/cli_spec.rb index 41cd8c636d40..e2c64b939401 100644 --- a/bundler/spec/bundler/cli_spec.rb +++ b/bundler/spec/bundler/cli_spec.rb @@ -87,15 +87,25 @@ def out_with_macos_man_workaround end context "with no arguments" do - it "prints a concise help message", bundler: "4" do - bundle "" - expect(err).to be_empty + 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 a future version of Bundler") + 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(out).to_not include("In a future version of Bundler") + expect(err).to include("Could not locate Gemfile") + expect(exitstatus).to_not be_zero + end end context "when ENV['BUNDLE_GEMFILE'] is set to an empty string" do @@ -266,10 +276,21 @@ 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.to_s) - 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 + + it "shows cli_help when bundler install and no Gemfile is found" do + bundler "install", raise_on_error: false + expect(err).to include("Could not locate Gemfile") + + 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 end diff --git a/bundler/spec/bundler/current_ruby_spec.rb b/bundler/spec/bundler/current_ruby_spec.rb index 8764c4971fe8..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 @@ -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 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/bundler/dsl_spec.rb b/bundler/spec/bundler/dsl_spec.rb index ac28aea4d7da..a19f251be5d9 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 @@ -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 "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 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 "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/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) } 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/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/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) } diff --git a/bundler/spec/bundler/plugin/installer_spec.rb b/bundler/spec/bundler/plugin/installer_spec.rb index 8e1879395a63..c200a98afaf2 100644 --- a/bundler/spec/bundler/plugin/installer_spec.rb +++ b/bundler/spec/bundler/plugin/installer_spec.rb @@ -47,6 +47,13 @@ build_plugin "re-plugin" build_plugin "ma-plugin" end + + @previous_ui = Bundler.ui + Bundler.ui = Bundler::UI::Silent.new + end + + after do + Bundler.ui = @previous_ui end context "git plugins" do 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/bundler/ruby_dsl_spec.rb b/bundler/spec/bundler/ruby_dsl_spec.rb index 0d02542fb595..45a37c5795c8 100644 --- a/bundler/spec/bundler/ruby_dsl_spec.rb +++ b/bundler/spec/bundler/ruby_dsl_spec.rb @@ -178,11 +178,34 @@ class MockDSL let(:file_content) do <<~TOML [tools] - ruby = "#{version}" + ruby = #{quote}#{version}#{quote} TOML end - it_behaves_like "it stores the ruby version" + context "with double quotes" do + let(:quote) { '"' } + + it_behaves_like "it stores the ruby version" + end + + context "with single quotes" do + let(:quote) { "'" } + + it_behaves_like "it stores the ruby version" + end + + context "with mismatched quotes" do + let(:file_content) do + <<~TOML + [tools] + ruby = "#{version}' + TOML + end + + it "raises an error" do + expect { subject }.to raise_error(Bundler::InvalidArgumentError, "= is not a valid requirement on the Ruby version") + end + end end context "with a .tool-versions file format" do 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/bundler/shared_helpers_spec.rb b/bundler/spec/bundler/shared_helpers_spec.rb index 5b3a9c17a7e8..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 @@ -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 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/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 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 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/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 80c2ebf68f34..bd92a84e1853 100644 --- a/bundler/spec/commands/cache_spec.rb +++ b/bundler/spec/commands/cache_spec.rb @@ -207,26 +207,15 @@ 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 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 @@ -304,7 +293,7 @@ myrack-obama BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle :cache, raise_on_error: false expect(exitstatus).to eq(16) @@ -333,7 +322,7 @@ myrack BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L FileUtils.mkdir_p app_cache @@ -370,7 +359,7 @@ bar BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "cache --no-install" @@ -513,7 +502,7 @@ foo BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "x86_64-linux" do @@ -600,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/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 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/commands/exec_spec.rb b/bundler/spec/commands/exec_spec.rb index af8bfc71f194..19e836053fa1 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) @@ -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) @@ -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" @@ -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,14 +1211,14 @@ 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 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 65903b3e7800..ae651bf981c7 100644 --- a/bundler/spec/commands/install_spec.rb +++ b/bundler/spec/commands/install_spec.rb @@ -29,6 +29,53 @@ 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 "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/" + 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 + 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/" @@ -67,6 +114,29 @@ 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 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/" @@ -118,7 +188,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 @@ -327,21 +397,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" @@ -361,7 +416,7 @@ myrack BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install", raise_on_error: false @@ -703,13 +758,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 @@ -779,10 +833,10 @@ DEPENDENCIES #{checksums} RUBY VERSION - #{Bundler::RubyVersion.system} + #{Bundler::RubyVersion.system} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -805,10 +859,10 @@ DEPENDENCIES #{checksums} RUBY VERSION - #{Bundler::RubyVersion.system} + #{Bundler::RubyVersion.system} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1252,6 +1306,79 @@ def run end end + describe "parallel make" do + before do + unless Gem::Installer.private_method_defined?(:build_jobs) + skip "This example is runnable when RubyGems::Installer implements `build_jobs`" + end + + @old_makeflags = ENV["MAKEFLAGS"] + @gemspec = nil + + extconf_code = <<~CODE + require "mkmf" + create_makefile("foo") + CODE + + build_repo4 do + build_gem "mypsych", "4.0.6" do |s| + @gemspec = s + extension = "ext/mypsych/extconf.rb" + s.extensions = extension + + s.write(extension, extconf_code) + end + end + end + + after do + if @old_makeflags + ENV["MAKEFLAGS"] = @old_makeflags + else + ENV.delete("MAKEFLAGS") + end + end + + it "doesn't pass down -j to make when MAKEFLAGS is set" do + ENV["MAKEFLAGS"] = "-j1" + + install_gemfile(<<~G, env: { "BUNDLE_JOBS" => "8" }) + source "https://gem.repo4/" + gem "mypsych" + G + + gem_make_out = File.read(File.join(@gemspec.extension_dir, "gem_make.out")) + + expect(gem_make_out).not_to include("make -j8") + end + + it "pass down the BUNDLE_JOBS to RubyGems when running the compilation of an extension" do + ENV.delete("MAKEFLAGS") + + install_gemfile(<<~G, env: { "BUNDLE_JOBS" => "8" }) + source "https://gem.repo4/" + gem "mypsych" + G + + gem_make_out = File.read(File.join(@gemspec.extension_dir, "gem_make.out")) + + expect(gem_make_out).to include("make -j8") + end + + it "uses nprocessors by default" do + ENV.delete("MAKEFLAGS") + + install_gemfile(<<~G) + source "https://gem.repo4/" + gem "mypsych" + G + + gem_make_out = File.read(File.join(@gemspec.extension_dir, "gem_make.out")) + + expect(gem_make_out).to include("make -j#{Etc.nprocessors + 1}") + end + end + describe "when configured path is UTF-8 and a file inside a gem package too" do let(:app_path) do path = tmp("♥") @@ -1345,7 +1472,7 @@ def run libv8 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform("x86_64-linux", &example) @@ -1372,7 +1499,7 @@ def run libv8 BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1448,7 +1575,7 @@ def run #{Bundler::RubyVersion.system} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1489,10 +1616,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 @@ -1522,7 +1649,7 @@ def run myrack_middleware BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1769,7 +1896,7 @@ def run zzz! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -1831,6 +1958,25 @@ def run expect(Dir.glob(vendored_gems("bin/*"))).to eq(expected_executables) end + it "prevents removing binstubs when BUNDLE_CLEAN is set" do + build_repo4 do + build_gem "kamal", "4.0.6" do |s| + s.executables = ["kamal"] + end + end + + gemfile = <<~G + source "https://gem.repo4/" + gem "kamal" + G + + install_gemfile(gemfile, env: { "BUNDLE_CLEAN" => "true", "BUNDLE_PATH" => "vendor/bundle" }) + + expected_executables = [vendored_gems("bin/kamal").to_s] + expected_executables << vendored_gems("bin/kamal.bat").to_s if Gem.win_platform? + expect(Dir.glob(vendored_gems("bin/*"))).to eq(expected_executables) + end + it "preserves lockfile versions conservatively" do build_repo4 do build_gem "mypsych", "4.0.6" do |s| @@ -1860,7 +2006,7 @@ def run mypsych (~> 4.0) BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L install_gemfile <<~G @@ -1883,7 +2029,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 a7460ed695a4..c8af9c8dd404 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) @@ -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 @@ -339,13 +339,13 @@ warning BUNDLED WITH - #{Bundler::VERSION} + #{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 @@ -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_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 } @@ -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 @@ -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,57 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} + 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 @@ -2064,7 +2114,7 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L simulate_platform "x86_64-linux" do @@ -2093,7 +2143,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2133,7 +2183,7 @@ nokogiri #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2170,7 +2220,98 @@ nokogiri BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} + 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 @@ -2251,7 +2392,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2281,7 +2422,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2316,7 +2457,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -2371,7 +2512,7 @@ govuk_app_config BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2407,7 +2548,7 @@ govuk_app_config #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -2443,7 +2584,7 @@ ffi BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2467,7 +2608,7 @@ ffi BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -2489,7 +2630,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2538,7 +2679,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2569,7 +2710,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2618,7 +2759,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2646,7 +2787,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2674,7 +2815,7 @@ irb BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2704,7 +2845,7 @@ sorbet-static BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/commands/newgem_spec.rb b/bundler/spec/commands/newgem_spec.rb index 1ce4a0da09ca..06c226f9e56a 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" } @@ -1674,6 +1681,13 @@ def create_temporary_dir(dir) expect(bundled_app("#{gem_name}/ext/#{gem_name}/#{gem_name}.c")).to exist end + it "generates native extension loading code" do + expect(bundled_app("#{gem_name}/lib/#{gem_name}.rb").read).to include(<<~RUBY) + require_relative "test_gem/version" + require "#{gem_name}/#{gem_name}" + RUBY + end + it "includes rake-compiler, but no Rust related changes" do expect(bundled_app("#{gem_name}/Gemfile").read).to include('gem "rake-compiler"') @@ -1748,6 +1762,158 @@ 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 + + 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" } + + 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/commands/open_spec.rb b/bundler/spec/commands/open_spec.rb index e0c79aa407a3..77e7815017ee 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 @@ -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 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/post_bundle_message_spec.rb b/bundler/spec/commands/post_bundle_message_spec.rb index 257443526089..9eecff593f7e 100644 --- a/bundler/spec/commands/post_bundle_message_spec.rb +++ b/bundler/spec/commands/post_bundle_message_spec.rb @@ -18,7 +18,7 @@ let(:bundle_show_path_message) { "Bundled gems are installed into `#{bundle_path}`" } let(:bundle_complete_message) { "Bundle complete!" } let(:bundle_updated_message) { "Bundle updated!" } - let(:installed_gems_stats) { "4 Gemfile dependencies, 5 gems now installed." } + let(:installed_gems_stats) { "4 Gemfile dependencies, 4 gems now installed." } describe "when installing to system gems" do before do @@ -44,14 +44,14 @@ expect(out).to include(bundle_show_system_message) expect(out).to include("Gems in the groups 'emo' and 'test' were not installed") expect(out).to include(bundle_complete_message) - expect(out).to include("4 Gemfile dependencies, 3 gems now installed.") + expect(out).to include("4 Gemfile dependencies, 2 gems now installed.") bundle "config set --local without emo obama test" bundle :install expect(out).to include(bundle_show_system_message) expect(out).to include("Gems in the groups 'emo', 'obama' and 'test' were not installed") expect(out).to include(bundle_complete_message) - expect(out).to include("4 Gemfile dependencies, 2 gems now installed.") + expect(out).to include("4 Gemfile dependencies, 1 gem now installed.") end describe "for second bundle install run" do diff --git a/bundler/spec/commands/pristine_spec.rb b/bundler/spec/commands/pristine_spec.rb index da61dc819920..daeafea43bf8 100644 --- a/bundler/spec/commands/pristine_spec.rb +++ b/bundler/spec/commands/pristine_spec.rb @@ -89,6 +89,66 @@ expect(changes_txt).to be_file expect(err).to include("Cannot pristine #{spec.name} (#{spec.version}#{spec.git_version}). Gem is locally overridden.") end + + it "doesn't run multiple git processes for the same repository" do + nested_gems = [ + "actioncable", + "actionmailer", + "actionpack", + "actionview", + "activejob", + "activemodel", + "activerecord", + "activestorage", + "activesupport", + "railties", + ] + + build_repo2 do + nested_gems.each do |gem| + build_lib gem, path: lib_path("rails/#{gem}") + end + + build_git "rails", path: lib_path("rails") do |s| + nested_gems.each do |gem| + s.add_dependency gem + end + end + end + + install_gemfile <<-G + source 'https://rubygems.org/' + + git "#{lib_path("rails")}" do + gem "rails" + gem "actioncable" + gem "actionmailer" + gem "actionpack" + gem "actionview" + gem "activejob" + gem "activemodel" + gem "activerecord" + gem "activestorage" + gem "activesupport" + gem "railties" + end + G + + changed_files = [] + diff = "#Pristine spec changes" + + nested_gems.each do |gem| + spec = find_spec(gem) + changed_files << Pathname.new(spec.full_gem_path).join("lib/#{gem}.rb") + File.open(changed_files.last, "a") {|f| f.puts diff } + end + + bundle "pristine" + + changed_files.each do |changed_file| + expect(File.read(changed_file)).to_not include(diff) + end + end end context "when sourced from gemspec" do 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 diff --git a/bundler/spec/commands/update_spec.rb b/bundler/spec/commands/update_spec.rb index f81c5578841d..cdaeb75c4a33 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 @@ -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 @@ -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 @@ -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 @@ -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" @@ -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 @@ -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" @@ -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 @@ -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/commands/version_spec.rb b/bundler/spec/commands/version_spec.rb index 1019803c8705..995a6e1e2063 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.to_s) - 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.to_s) - 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 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..3d9766d21ff6 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 @@ -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 @@ -483,7 +484,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -524,7 +525,7 @@ platform_specific #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -569,7 +570,7 @@ indirect_platform_specific #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -657,7 +658,7 @@ chef! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile initial_lockfile @@ -720,7 +721,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 216548cf27cc..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" @@ -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 @@ -1638,7 +1638,7 @@ rake! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L with_path_as("") do 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/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 ea59f11bbe97..13a8c663e093 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" @@ -120,7 +109,7 @@ demo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle :install, dir: lib_path("demo") @@ -357,7 +346,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lockfile lockfile_path, original_lockfile @@ -465,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 @@ -672,7 +661,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G build_lib "foo", "1.0", path: lib_path("foo") do |s| @@ -700,7 +689,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G expect(the_bundle).to include_gems "myrack 0.9.1" @@ -739,7 +728,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G build_lib "foo", "1.0", path: lib_path("foo") do |s| @@ -772,7 +761,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G expect(the_bundle).to include_gems "myrack 0.9.1" @@ -800,7 +789,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "lock" @@ -826,7 +815,7 @@ foo! #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end end @@ -871,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 3e15d82bbe25..d937abd71417 100644 --- a/bundler/spec/install/gemfile/ruby_spec.rb +++ b/bundler/spec/install/gemfile/ruby_spec.rb @@ -83,10 +83,10 @@ def locked_ruby_version myrack RUBY VERSION - ruby 2.1.4p422 + 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..c0b4d98f1c5c 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" @@ -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 @@ -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/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/bundler/spec/install/gems/compact_index_spec.rb b/bundler/spec/install/gems/compact_index_spec.rb index 64c59d4826f3..bb4d4011f5b9 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 @@ -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 @@ -905,7 +905,7 @@ def start DEPENDENCIES #{checksums_section} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L 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/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/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/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/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/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/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/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 4b767c7415b6..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 @@ -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" @@ -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,75 @@ net-smtp BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} + 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 @@ -2140,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 @@ -2161,7 +2229,7 @@ minitest-bisect BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end end @@ -2206,7 +2274,7 @@ minitest-bisect BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install --verbose" @@ -2227,7 +2295,7 @@ minitest-bisect BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -2327,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/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 diff --git a/bundler/spec/other/major_deprecation_spec.rb b/bundler/spec/other/major_deprecation_spec.rb index 6117ff613748..24d4153dfabe 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 @@ -509,7 +507,7 @@ DEPENDENCIES BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L bundle "install", raise_on_error: false @@ -564,7 +562,7 @@ myrack! BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end @@ -575,6 +573,53 @@ 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 "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.") + 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/'" 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/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/quality_spec.rb b/bundler/spec/quality_spec.rb index 34e6c2627234..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") @@ -184,8 +187,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/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/realworld/fixtures/tapioca/Gemfile.lock b/bundler/spec/realworld/fixtures/tapioca/Gemfile.lock index ccb51b6fd31e..4ce06de722cf 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.1.0.dev diff --git a/bundler/spec/realworld/fixtures/warbler/Gemfile.lock b/bundler/spec/realworld/fixtures/warbler/Gemfile.lock index d84e09f4337a..2f2deea99408 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.1.0.dev 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/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/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..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 @@ -1261,7 +1267,7 @@ def lock_with(ruby_version = nil) lock += <<~L BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L lock @@ -1656,7 +1662,7 @@ def require(path) DEPENDENCIES BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} L end diff --git a/bundler/spec/spec_helper.rb b/bundler/spec/spec_helper.rb index 87bdf8b9f3a1..a79e33fbb016 100644 --- a/bundler/spec/spec_helper.rb +++ b/bundler/spec/spec_helper.rb @@ -19,10 +19,16 @@ 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" require "rspec/support/differ" +gem "rubygems-generate_index" +require "rubygems/indexer" require_relative "support/builders" require_relative "support/checksums" @@ -32,6 +38,7 @@ require_relative "support/matchers" require_relative "support/permissions" require_relative "support/platforms" +require_relative "support/windows_tag_group" $debug = false @@ -50,6 +57,7 @@ def self.ruby=(ruby) config.include Spec::Path config.include Spec::Platforms config.include Spec::Permissions + config.include Spec::WindowsTagGroup # Enable flags like --only-failures and --next-failure config.example_status_persistence_file_path = ".rspec_status" @@ -123,4 +131,19 @@ def self.ruby=(ruby) ensure reset! end + + Spec::WindowsTagGroup::EXAMPLE_MAPPINGS.each do |tag, file_paths| + file_pattern = Regexp.union(file_paths.map {|path| Regexp.new(Regexp.escape(path) + "$") }) + + config.define_derived_metadata(file_path: file_pattern) do |metadata| + metadata[tag] = true + end + end + + config.before(:context) do |example| + metadata = example.class.metadata + if metadata[:type] != :aruba && metadata.keys.none? {|k| Spec::WindowsTagGroup::EXAMPLE_MAPPINGS.keys.include?(k) } + warn "#{metadata[:file_path]} is not assigned to any Windows runner group. see spec/support/windows_tag_group.rb for details." + end + end unless Spec::Path.ruby_core? end 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 50fedd38f16a..6087ea8cc8c6 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" @@ -185,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) @@ -206,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" @@ -277,14 +283,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 @@ -423,21 +423,25 @@ def required_ruby_version=(*reqs) end class BundlerBuilder - attr_writer :required_ruby_version - def initialize(context, name, version) - raise "can only build bundler" unless name == "bundler" - @context = context - @version = version || Bundler::VERSION + @spec = Spec::Path.loaded_gemspec.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 +453,16 @@ 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::DefaultUserInteraction.use_ui(Gem::SilentUI.new) do + Gem::Package.build(@spec) + end + end if block_given? yield(bundler_path) @@ -463,7 +470,7 @@ def _build(options = {}) FileUtils.mv bundler_path, options[:path] end ensure - build_path.rmtree + FileUtils.rm_rf build_path end end @@ -659,7 +666,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) diff --git a/bundler/spec/support/helpers.rb b/bundler/spec/support/helpers.rb index 17c38c77607d..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 @@ -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) @@ -330,12 +324,23 @@ 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}" - 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) @@ -410,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 @@ -526,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 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/path.rb b/bundler/spec/support/path.rb index cc750f55d81f..0a534dd40e44 100644 --- a/bundler/spec/support/path.rb +++ b/bundler/spec/support/path.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "pathname" +require "pathname" unless defined?(Pathname) require "rbconfig" require_relative "env" 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 diff --git a/bundler/spec/support/windows_tag_group.rb b/bundler/spec/support/windows_tag_group.rb new file mode 100644 index 000000000000..8eb0a749dafb --- /dev/null +++ b/bundler/spec/support/windows_tag_group.rb @@ -0,0 +1,190 @@ +# frozen_string_literal: true + +# This group classifies test files into 4 groups by running `bin/rspec --profile 10000` +# to ensure balanced execution times. When adding new test files, it is recommended to +# re-aggregate and adjust the groups to keep them balanced. +# For now, please add new files to group 'windows_d'. + +module Spec + module WindowsTagGroup + EXAMPLE_MAPPINGS = { + windows_a: [ + "spec/runtime/setup_spec.rb", + "spec/commands/install_spec.rb", + "spec/commands/add_spec.rb", + "spec/install/gems/compact_index_spec.rb", + "spec/commands/config_spec.rb", + "spec/commands/pristine_spec.rb", + "spec/install/gemfile/path_spec.rb", + "spec/update/git_spec.rb", + "spec/commands/open_spec.rb", + "spec/commands/remove_spec.rb", + "spec/commands/show_spec.rb", + "spec/plugins/source/example_spec.rb", + "spec/commands/console_spec.rb", + "spec/runtime/require_spec.rb", + "spec/runtime/env_helpers_spec.rb", + "spec/runtime/gem_tasks_spec.rb", + "spec/install/gemfile_spec.rb", + "spec/commands/fund_spec.rb", + "spec/commands/init_spec.rb", + "spec/bundler/ruby_dsl_spec.rb", + "spec/bundler/mirror_spec.rb", + "spec/bundler/source/git/git_proxy_spec.rb", + "spec/bundler/source_list_spec.rb", + "spec/bundler/plugin/installer_spec.rb", + "spec/bundler/friendly_errors_spec.rb", + "spec/resolver/platform_spec.rb", + "spec/bundler/fetcher/downloader_spec.rb", + "spec/update/force_spec.rb", + "spec/bundler/env_spec.rb", + "spec/install/gems/mirror_spec.rb", + "spec/install/failure_spec.rb", + "spec/bundler/yaml_serializer_spec.rb", + "spec/bundler/environment_preserver_spec.rb", + "spec/install/gemfile/install_if_spec.rb", + "spec/install/gems/gemfile_source_header_spec.rb", + "spec/bundler/fetcher/base_spec.rb", + "spec/bundler/rubygems_integration_spec.rb", + "spec/bundler/worker_spec.rb", + "spec/bundler/dependency_spec.rb", + "spec/bundler/ui_spec.rb", + "spec/bundler/plugin/source_list_spec.rb", + "spec/bundler/source/path_spec.rb", + ], + windows_b: [ + "spec/install/gemfile/git_spec.rb", + "spec/install/gems/standalone_spec.rb", + "spec/commands/lock_spec.rb", + "spec/cache/gems_spec.rb", + "spec/other/major_deprecation_spec.rb", + "spec/install/gems/dependency_api_spec.rb", + "spec/install/gemfile/gemspec_spec.rb", + "spec/plugins/install_spec.rb", + "spec/commands/binstubs_spec.rb", + "spec/install/gems/flex_spec.rb", + "spec/runtime/inline_spec.rb", + "spec/commands/post_bundle_message_spec.rb", + "spec/runtime/executable_spec.rb", + "spec/lock/git_spec.rb", + "spec/plugins/hook_spec.rb", + "spec/install/allow_offline_install_spec.rb", + "spec/install/gems/post_install_spec.rb", + "spec/install/gemfile/ruby_spec.rb", + "spec/install/security_policy_spec.rb", + "spec/install/yanked_spec.rb", + "spec/update/gemfile_spec.rb", + "spec/runtime/load_spec.rb", + "spec/plugins/command_spec.rb", + "spec/commands/version_spec.rb", + "spec/install/prereleases_spec.rb", + "spec/bundler/uri_credentials_filter_spec.rb", + "spec/bundler/plugin_spec.rb", + "spec/install/gems/mirror_probe_spec.rb", + "spec/plugins/list_spec.rb", + "spec/bundler/compact_index_client/parser_spec.rb", + "spec/bundler/gem_version_promoter_spec.rb", + "spec/other/cli_dispatch_spec.rb", + "spec/bundler/source/rubygems_spec.rb", + "spec/cache/platform_spec.rb", + "spec/update/gems/fund_spec.rb", + "spec/bundler/stub_specification_spec.rb", + "spec/bundler/retry_spec.rb", + "spec/bundler/installer/spec_installation_spec.rb", + "spec/bundler/spec_set_spec.rb", + "spec/quality_es_spec.rb", + "spec/bundler/index_spec.rb", + "spec/other/cli_man_pages_spec.rb", + ], + windows_c: [ + "spec/commands/newgem_spec.rb", + "spec/commands/exec_spec.rb", + "spec/commands/clean_spec.rb", + "spec/commands/platform_spec.rb", + "spec/cache/git_spec.rb", + "spec/install/gemfile/groups_spec.rb", + "spec/commands/cache_spec.rb", + "spec/commands/check_spec.rb", + "spec/commands/list_spec.rb", + "spec/install/path_spec.rb", + "spec/bundler/cli_spec.rb", + "spec/install/bundler_spec.rb", + "spec/install/git_spec.rb", + "spec/commands/doctor_spec.rb", + "spec/bundler/dsl_spec.rb", + "spec/install/gems/fund_spec.rb", + "spec/install/gems/env_spec.rb", + "spec/bundler/ruby_version_spec.rb", + "spec/bundler/definition_spec.rb", + "spec/install/gemfile/eval_gemfile_spec.rb", + "spec/plugins/source_spec.rb", + "spec/install/gems/dependency_api_fallback_spec.rb", + "spec/plugins/uninstall_spec.rb", + "spec/bundler/plugin/index_spec.rb", + "spec/bundler/bundler_spec.rb", + "spec/bundler/fetcher_spec.rb", + "spec/bundler/source/rubygems/remote_spec.rb", + "spec/bundler/lockfile_parser_spec.rb", + "spec/cache/cache_path_spec.rb", + "spec/bundler/source/git_spec.rb", + "spec/bundler/source_spec.rb", + "spec/commands/ssl_spec.rb", + "spec/bundler/fetcher/compact_index_spec.rb", + "spec/bundler/plugin/api_spec.rb", + "spec/bundler/endpoint_specification_spec.rb", + "spec/bundler/fetcher/index_spec.rb", + "spec/bundler/settings/validator_spec.rb", + "spec/bundler/build_metadata_spec.rb", + "spec/bundler/current_ruby_spec.rb", + "spec/bundler/installer/gem_installer_spec.rb", + "spec/bundler/cli_common_spec.rb", + "spec/bundler/ci_detector_spec.rb", + ], + windows_d: [ + "spec/commands/outdated_spec.rb", + "spec/commands/update_spec.rb", + "spec/lock/lockfile_spec.rb", + "spec/install/deploy_spec.rb", + "spec/install/gemfile/sources_spec.rb", + "spec/runtime/self_management_spec.rb", + "spec/install/gemfile/specific_platform_spec.rb", + "spec/commands/info_spec.rb", + "spec/install/gems/resolving_spec.rb", + "spec/install/gemfile/platform_spec.rb", + "spec/bundler/gem_helper_spec.rb", + "spec/install/global_cache_spec.rb", + "spec/runtime/platform_spec.rb", + "spec/update/gems/post_install_spec.rb", + "spec/install/gems/native_extensions_spec.rb", + "spec/install/force_spec.rb", + "spec/cache/path_spec.rb", + "spec/install/gemspecs_spec.rb", + "spec/commands/help_spec.rb", + "spec/bundler/shared_helpers_spec.rb", + "spec/bundler/settings_spec.rb", + "spec/resolver/basic_spec.rb", + "spec/install/gemfile/force_ruby_platform_spec.rb", + "spec/commands/licenses_spec.rb", + "spec/install/gemfile/lockfile_spec.rb", + "spec/bundler/fetcher/dependency_spec.rb", + "spec/quality_spec.rb", + "spec/bundler/remote_specification_spec.rb", + "spec/install/process_lock_spec.rb", + "spec/install/binstubs_spec.rb", + "spec/bundler/compact_index_client/updater_spec.rb", + "spec/bundler/ui/shell_spec.rb", + "spec/other/ext_spec.rb", + "spec/commands/issue_spec.rb", + "spec/update/path_spec.rb", + "spec/bundler/plugin/api/source_spec.rb", + "spec/install/gems/win32_spec.rb", + "spec/bundler/plugin/dsl_spec.rb", + "spec/runtime/requiring_spec.rb", + "spec/bundler/plugin/events_spec.rb", + "spec/bundler/resolver/candidate_spec.rb", + "spec/bundler/digest_spec.rb", + "spec/bundler/fetcher/gem_remote_fetcher_spec.rb", + ], + }.freeze + end +end diff --git a/bundler/spec/update/git_spec.rb b/bundler/spec/update/git_spec.rb index 2cb0abe02fb5..526e988ab7c7 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). @@ -334,7 +334,7 @@ myrack #{checksums} BUNDLED WITH - #{Bundler::VERSION} + #{Bundler::VERSION} G end end 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) diff --git a/doc/RELEASE.md b/doc/RELEASE.md new file mode 100644 index 000000000000..cbe92b026046 --- /dev/null +++ b/doc/RELEASE.md @@ -0,0 +1,142 @@ +# Release + +## Release guidelines + +**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 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 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. + +## Release Process + +### Permissions + +You'll need the following environment variables set to release RubyGems and Bundler: + +* 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. + +[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 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. + +### 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 + +#### Preparation + +* Confirm all PRs that you want backported are properly tagged with `rubygems: ` or `bundler: ` labels at GitHub. +* Confirm to set `AWS_PROFILE` and `GITHUB_RELEASE_PAT` environment variables. + +#### Release + +* Run `DRYRUN=1 bin/rake prepare_release[]` to verify that everything is working as expected. +* Run `bin/rake prepare_release[]`, this will: + * Create a PR to the stable branch with the backports included in the release. + * Generate proper changelogs and version bumps. It will also create a PR to merge release changelogs into master. +* If you need to make any manual changes, do so in the release PR created above and re-run `rake generate_changelog[]` to update changelogs and run `git rebase -i` as needed. Finally, force push the release PR branch. +* Once CI passes, merge the release PR, switch to the stable branch and pull the PR just merged. +* Release `rubygems` with `bin/rake release`. +* Release `bundler` with `bin/rake bundler:release`. + +#### Post-release + +* Merge the changelog PR created above into master. + +### 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. +* Confirm to set `AWS_PROFILE` and `GITHUB_RELEASE_PAT` environment variables. + +#### 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 + +* Merge the changelog PR created above into master. + +The following changes are needed to prepare for the next development cycle: + +* 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. diff --git a/doc/UPGRADING.md b/doc/UPGRADING.md new file mode 100644 index 000000000000..d31fc87e105b --- /dev/null +++ b/doc/UPGRADING.md @@ -0,0 +1,28 @@ +# 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 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 +* Unpack into a directory and `cd` there +* Install with: `ruby setup.rb` diff --git a/doc/bundler/POLICIES.md b/doc/bundler/POLICIES.md index 247ef98a18c2..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. @@ -110,7 +92,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 deleted file mode 100644 index 4b4c4daea0f1..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