[ruby/rubygems] Support single quotes in mise format ruby version

https://github.com/ruby/rubygems/commit/a7d7ab39dd
This commit is contained in:
hituzi no sippo 2025-12-11 19:16:17 +09:00 committed by git
parent 3b3ab33851
commit 3b50f4ba41
2 changed files with 16 additions and 6 deletions

View File

@ -42,16 +42,16 @@ module Bundler
# 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
# 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
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
["']? # Optional opening quote
( # Start capturing group
[^\s#"]+ # One or more chars that aren't spaces, #, or quotes
[^\s#"']+ # One or more chars that aren't spaces, #, or quotes
) # End capturing group
"? # Optional closing quote
["']? # Optional closing quote
/x.match(file_content)
$1
else

View File

@ -178,11 +178,21 @@ RSpec.describe Bundler::RubyDsl do
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
end
context "with a .tool-versions file format" do