diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 9f6277a25d5..d5272e342ad 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -23,7 +23,7 @@ "ghcr.io/devcontainers/features/github-cli": "latest", "ghcr.io/devcontainers/features/node": "lts", "ghcr.io/devcontainers/features/go": "latest", - "ghcr.io/devcontainers/features/ruby": "3.3.6", + "ghcr.io/devcontainers/features/ruby": "3.4.2", "ghcr.io/devcontainers/features/rust": "latest", "ghcr.io/devcontainers/features/dotnet": "latest", "ghcr.io/devcontainers/features/sshd:1": { diff --git a/.ruby-version b/.ruby-version index 9c25013dbb8..4d9d11cf505 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.3.6 +3.4.2 diff --git a/Dockerfile.updater-core b/Dockerfile.updater-core index 59bbd1625f2..3b3acbb72a0 100644 --- a/Dockerfile.updater-core +++ b/Dockerfile.updater-core @@ -56,7 +56,7 @@ COPY --chown=dependabot:dependabot LICENSE $DEPENDABOT_HOME # Install Ruby from official Docker image # When bumping Ruby minor, need to also add the previous version to `bundler/helpers/v2/monkey_patches/definition_ruby_version_patch.rb` -COPY --from=docker.io/library/ruby:3.3.6-bookworm --chown=dependabot:dependabot /usr/local /usr/local +COPY --from=docker.io/library/ruby:3.4.2-bookworm --chown=dependabot:dependabot /usr/local /usr/local # We had to explicitly bump this as the bundled version `0.2.2` in ubuntu 22.04 has a bug. # Once Ubuntu base image pulls in a new enough yaml version, we may not need to diff --git a/bundler/helpers/v2/monkey_patches/definition_ruby_version_patch.rb b/bundler/helpers/v2/monkey_patches/definition_ruby_version_patch.rb index 75b7b8aead4..f073dffbc66 100644 --- a/bundler/helpers/v2/monkey_patches/definition_ruby_version_patch.rb +++ b/bundler/helpers/v2/monkey_patches/definition_ruby_version_patch.rb @@ -26,7 +26,7 @@ def source_requirements Gem::Specification.new("Ruby\0", requested_version) end - %w(2.5.3 2.6.10 2.7.8 3.0.7 3.1.6 3.2.4).each do |version| + %w(2.5.3 2.6.10 2.7.8 3.0.7 3.1.6 3.2.4 3.3.6).each do |version| sources.metadata_source.specs << Gem::Specification.new("Ruby\0", version) end diff --git a/bundler/lib/dependabot/bundler/file_updater/ruby_requirement_setter.rb b/bundler/lib/dependabot/bundler/file_updater/ruby_requirement_setter.rb index c8e118c08b7..946ea7b1ee6 100644 --- a/bundler/lib/dependabot/bundler/file_updater/ruby_requirement_setter.rb +++ b/bundler/lib/dependabot/bundler/file_updater/ruby_requirement_setter.rb @@ -10,7 +10,7 @@ module Bundler class FileUpdater class RubyRequirementSetter RUBY_VERSIONS = %w( - 1.8.7 1.9.3 2.0.0 2.1.10 2.2.10 2.3.8 2.4.10 2.5.9 2.6.9 2.7.6 3.0.6 3.1.6 3.2.4 3.3.6 + 1.8.7 1.9.3 2.0.0 2.1.10 2.2.10 2.3.8 2.4.10 2.5.9 2.6.9 2.7.6 3.0.6 3.1.6 3.2.4 3.3.6 3.4.2 ).freeze LANGUAGE = "ruby" diff --git a/bundler/spec/dependabot/bundler/file_updater/ruby_requirement_setter_spec.rb b/bundler/spec/dependabot/bundler/file_updater/ruby_requirement_setter_spec.rb index 2cbd3a8c5ba..3fb5fa35272 100644 --- a/bundler/spec/dependabot/bundler/file_updater/ruby_requirement_setter_spec.rb +++ b/bundler/spec/dependabot/bundler/file_updater/ruby_requirement_setter_spec.rb @@ -147,6 +147,18 @@ it { is_expected.to include(%(gem "business", "~> 1.4.0")) } end + context "when requiring ruby 3.4" do + let(:gemspec) do + bundler_project_dependency_file("gemfile_require_ruby_3_4", filename: "example.gemspec") + end + let(:content) do + bundler_project_dependency_file("gemfile", filename: "Gemfile").content + end + + it { is_expected.to include("ruby '3.4.2'\n") } + it { is_expected.to include(%(gem "business", "~> 1.4.0")) } + end + context "when that can't be evaluated" do let(:content) do bundler_project_dependency_file("gemfile", filename: "Gemfile").content diff --git a/bundler/spec/fixtures/projects/bundler2/gemfile_require_ruby_3_4/Gemfile b/bundler/spec/fixtures/projects/bundler2/gemfile_require_ruby_3_4/Gemfile new file mode 100644 index 00000000000..bb897e7e7bb --- /dev/null +++ b/bundler/spec/fixtures/projects/bundler2/gemfile_require_ruby_3_4/Gemfile @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "business", "~> 1.4.0" +gem "statesman", "~> 1.2.0" diff --git a/bundler/spec/fixtures/projects/bundler2/gemfile_require_ruby_3_4/Gemfile.lock b/bundler/spec/fixtures/projects/bundler2/gemfile_require_ruby_3_4/Gemfile.lock new file mode 100644 index 00000000000..b00ae3b7fce --- /dev/null +++ b/bundler/spec/fixtures/projects/bundler2/gemfile_require_ruby_3_4/Gemfile.lock @@ -0,0 +1,15 @@ +GEM + remote: https://rubygems.org/ + specs: + business (1.4.0) + statesman (1.2.1) + +PLATFORMS + ruby + +DEPENDENCIES + business (~> 1.4.0) + statesman (~> 1.2.0) + +BUNDLED WITH + 2.5.3 diff --git a/bundler/spec/fixtures/projects/bundler2/gemfile_require_ruby_3_4/example.gemspec b/bundler/spec/fixtures/projects/bundler2/gemfile_require_ruby_3_4/example.gemspec new file mode 100644 index 00000000000..e5b3e59bfc6 --- /dev/null +++ b/bundler/spec/fixtures/projects/bundler2/gemfile_require_ruby_3_4/example.gemspec @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +Gem::Specification.new do |spec| + spec.name = "example" + spec.version = "0.9.3" + spec.summary = "Automated dependency management" + spec.description = "Core logic for updating a GitHub repos dependencies" + + spec.author = "Dependabot" + spec.email = "support@dependabot.com" + spec.homepage = "https://github.com/hmarr/example" + spec.license = "MIT" + + spec.require_path = "lib" + spec.files = Dir["CHANGELOG.md", "LICENSE.txt", "README.md", + "lib/**/*", "helpers/**/*"] + + spec.required_ruby_version = ">= 3.4.2" + spec.required_rubygems_version = ">= 3.9.3" + + spec.add_dependency 'business', '~> 1.0' +end