Class: Tebako::RubyVersionWithGemfile
- Inherits:
-
RubyVersion
- Object
- RubyVersion
- Tebako::RubyVersionWithGemfile
- Defined in:
- lib/tebako/ruby_version.rb
Overview
Ruby version with Gemfile definition
Constant Summary
Constants inherited from RubyVersion
Tebako::RubyVersion::DEFAULT_RUBY_VERSION, Tebako::RubyVersion::MIN_RUBY_VERSION_WINDOWS, Tebako::RubyVersion::RUBY_VERSIONS
Instance Attribute Summary
Attributes inherited from RubyVersion
Instance Method Summary collapse
-
#initialize(ruby_version, gemfile_path) ⇒ RubyVersionWithGemfile
constructor
A new instance of RubyVersionWithGemfile.
- #process_gemfile_ruby_version(ruby_version, ruby_v) ⇒ Object
- #process_gemfile_ruby_version_d(ruby_version, requirement) ⇒ Object
- #process_gemfile_ruby_version_ud(requirement) ⇒ Object
Methods inherited from RubyVersion
#api_version, #extend_ruby_version, #lib_version, #ruby31?, #ruby32?, #ruby32only?, #ruby33?, #ruby33only?, #ruby34?, #ruby3x7?, #ruby3x?, #run_checks, #version_check, #version_check_format, #version_check_msys
Constructor Details
#initialize(ruby_version, gemfile_path) ⇒ RubyVersionWithGemfile
Returns a new instance of RubyVersionWithGemfile.
157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/tebako/ruby_version.rb', line 157 def initialize(ruby_version, gemfile_path) # Assuming that it does not attempt to load any gems or resolve dependencies # this can be done with any bundler version ruby_v = Bundler::Definition.build(gemfile_path, nil, nil).ruby_version&.versions if ruby_v.nil? super(ruby_version) else process_gemfile_ruby_version(ruby_version, ruby_v) end rescue Tebako::Error raise rescue StandardError => e Tebako.packaging_error(115, e.) end |
Instance Method Details
#process_gemfile_ruby_version(ruby_version, ruby_v) ⇒ Object
172 173 174 175 176 177 178 179 180 181 182 |
# File 'lib/tebako/ruby_version.rb', line 172 def process_gemfile_ruby_version(ruby_version, ruby_v) puts "-- Found Gemfile with Ruby requirements #{ruby_v}" requirement = Gem::Requirement.new(ruby_v) if ruby_version.nil? process_gemfile_ruby_version_ud(requirement) else process_gemfile_ruby_version_d(ruby_version, requirement) end run_checks end |
#process_gemfile_ruby_version_d(ruby_version, requirement) ⇒ Object
184 185 186 187 188 189 190 191 |
# File 'lib/tebako/ruby_version.rb', line 184 def process_gemfile_ruby_version_d(ruby_version, requirement) current_version = Gem::Version.new(ruby_version) unless requirement.satisfied_by?(current_version) raise Tebako::Error.new("Ruby version #{ruby_version} does not satisfy requirement '#{requirement}'", 116) end @ruby_version = ruby_version end |
#process_gemfile_ruby_version_ud(requirement) ⇒ Object
193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/tebako/ruby_version.rb', line 193 def process_gemfile_ruby_version_ud(requirement) available_versions = RUBY_VERSIONS.keys.map { |v| Gem::Version.new(v) } matching_version = available_versions.find { |v| requirement.satisfied_by?(v) } puts "-- Found matching Ruby version #{matching_version}" if matching_version unless matching_version raise Tebako::Error.new("No available Ruby version satisfies requirement #{requirement}", 116) end @ruby_version = matching_version.to_s end |