Techioz Blog

gem アップデート – システム障害

概要

gem update –system の実行が次のエラーで失敗します。

#22 71.91 ERROR:  Error installing rubygems-update:
#22 71.91   There are no versions of rubygems-update (= 3.5.2) compatible with your Ruby & RubyGems
#22 71.91   rubygems-update requires Ruby version >= 3.0.0. The current ruby version is 2.7.5.203.
#22 71.91 ERROR:  While executing gem ... (NoMethodError)
#22 71.91     undefined method `version' for nil:NilClass
#22 71.93 Updating rubygems-update

私の Ruby のバージョンは次のとおりです。

rbenv local:
2.7.5

Ruby 2.7.5 と互換性のあるバージョンの Rubygems-update を見つけてインストールする必要がありますか?

解決策

Rubygems-update の RubyGems バージョン リストに移動し、Ruby バージョン基準 (<= 2.7.5) に一致するバージョンが見つかるまで各バージョンをクリックするか、プログラマーになって楽しい方法でそれを実行します。

require 'open-uri'
require 'json'

GEM_TO_TEST           = "rubygems-update"
RUBY_VERSION_TO_MATCH = "2.7.5"

API_URL = "https://rubygems.org/api/v1/versions/#{GEM_TO_TEST}.json"

# Load list of all available versions of GEM_TO_TEST
gem_versions = JSON.parse(open(API_URL).read)

# Process list to find matching Ruby version
matching_gem = gem_versions.find { |gem|
  Gem::Dependency.new('', gem['ruby_version']).
    match?('', RUBY_VERSION_TO_MATCH)
}

puts "Latest version of #{GEM_TO_TEST} " +
     "compatible with Ruby #{RUBY_VERSION_TO_MATCH} " +
     "is #{matching_gem['number']}."

これを実行すると、次の結果が得られます。

Latest version of rubygems-update compatible with Ruby 2.7.5 is 3.4.22.

したがって、問題の解決策は(おそらく)次のとおりです。

gem update --system 3.4.22