Method: Jarbler::Config#define_jruby_version

Defined in:
lib/jarbler/config.rb

#define_jruby_versionObject

define JRuby version if not set in config file



152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# File 'lib/jarbler/config.rb', line 152

def define_jruby_version
  if @jruby_version.nil? && File.exist?('.ruby-version')                    # not yet defined in config file but .ruby-version file exists
    # read the file RAILS_ROOT/.ruby-version starting from char at position 6 to the end of the line
    full_jruby_version_string = File.read('.ruby-version')
    if full_jruby_version_string[0..5] == 'jruby-'
      @jruby_version = full_jruby_version_string[6..20].strip
      if @jruby_version =~ /\d+\.\d+\.\d+\.\d+/                        # check if the version is valid with four digits
        debug "Jarbler::Config.define_jruby_version: JRuby version used from .ruby-version file: #{@jruby_version}"
      else
        debug "Jarbler::Config.define_jruby_version: Invalid JRuby version in .ruby-version file (not four digits delimited by dot): #{full_jruby_version_string}"
        @jruby_version = nil
      end
    else
      debug "Jarbler::Config.define_jruby_version: Version info from .ruby-version file not applicable: #{full_jruby_version_string}"
    end
  end

  if @jruby_version.nil?                                                    # not yet defined in config file and .ruby-version file
    # no .ruby-version file to be used, use JRuby version of the latest Gem
    # Fetch the gem specification from Rubygems.org
    # search for the gem and get the JSON response
    response = Gem::SpecFetcher.fetcher.search_for_dependency(Gem::Dependency.new('jruby-jars'))
    debug("Jarbler::Config.define_jruby_version: Response from search_for_dependency = #{response.inspect}")
    # extract the versions from the response
    @jruby_version = response&.first&.first&.first&.version&.to_s
    raise "Unable to determine the latest available version of jruby-jars gem!\nResponse = #{response.inspect}" unless @jruby_version

    debug "Jarbler::Config.define_jruby_version: JRuby version from latest jruby-jars gem: #{jruby_version}"
  end
end