Module: Cibuildgem::RubySeries

Extended by:
RubySeries
Included in:
RubySeries
Defined in:
lib/cibuildgem/ruby_series.rb

Instance Method Summary collapse

Instance Method Details

#cross_rubiesObject



38
39
40
41
42
43
44
45
# File 'lib/cibuildgem/ruby_series.rb', line 38

def cross_rubies
  [
    Gem::Version.new("3.4.6"),
    Gem::Version.new("3.3.8"),
    Gem::Version.new("3.2.8"),
    Gem::Version.new("3.1.6"),
  ]
end

#latest_rubiesObject



47
48
49
50
51
52
53
54
# File 'lib/cibuildgem/ruby_series.rb', line 47

def latest_rubies
  [
    Gem::Version.new("3.4.7"),
    Gem::Version.new("3.3.9"),
    Gem::Version.new("3.2.9"),
    Gem::Version.new("3.1.7"),
  ]
end

#latest_version_for_requirements(requirements) ⇒ Object



7
8
9
10
11
# File 'lib/cibuildgem/ruby_series.rb', line 7

def latest_version_for_requirements(requirements)
  latest_rubies.find do |ruby_version|
    requirements.satisfied_by?(ruby_version)
  end
end

#runtime_version_for_compilation(requirements) ⇒ Object

Get the minimum Ruby version to run the compilation. Getting the minimum Ruby version allows ruby/setup-ruby to download the right MSYS2 toolchain and get the right GCC version. GCC 15.1 is incompatible with Ruby 3.0 and 3.1.



16
17
18
19
20
# File 'lib/cibuildgem/ruby_series.rb', line 16

def runtime_version_for_compilation(requirements)
  latest_rubies.reverse.find do |ruby_version|
    requirements.satisfied_by?(ruby_version)
  end
end

#versions_to_compile_against(requirements) ⇒ Object



22
23
24
25
26
# File 'lib/cibuildgem/ruby_series.rb', line 22

def versions_to_compile_against(requirements)
  cross_rubies.select do |ruby_version|
    requirements.satisfied_by?(ruby_version)
  end
end

#versions_to_test_against(requirements) ⇒ Object



28
29
30
31
32
33
34
35
36
# File 'lib/cibuildgem/ruby_series.rb', line 28

def versions_to_test_against(requirements)
  selected_rubies = latest_rubies.select do |ruby_version|
    requirements.satisfied_by?(ruby_version)
  end.reverse

  selected_rubies.map do |version|
    version.segments.tap(&:pop).join(".")
  end
end