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.
139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/tebako/ruby_version.rb', line 139 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
154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/tebako/ruby_version.rb', line 154 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
166 167 168 169 170 171 172 173 |
# File 'lib/tebako/ruby_version.rb', line 166 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
175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/tebako/ruby_version.rb', line 175 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 |