1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ruby 4.0 に対応してない gem の調べ方

Posted at

Ruby のバージョンがいきなり 3.4 → 4.0 と上がったために,動かせなくなる gem が出てくる。

実際に非互換な場合もあるかもしれないが,多くは,
「Ruby 4 でどんな非互換性がくるか分かんないから,とりあえず仕様で required_ruby_version を 4 未満にしとくわ」
てんじゃないだろうか。

それはともかく,いま手元にある(Ruby 3.4 とかにインストールしてある)gem のなかで,Ruby 4 非対応のものの一覧が欲しいよね?

このコードで分かる:

v4 = Gem::Version.new("4.0.0")

Gem::Specification.each do |spec|
  next if spec.required_ruby_version.satisfied_by?(v4)

  puts "#{spec.name} #{spec.version}"
  puts "  requires Ruby #{spec.required_ruby_version}"
  puts
end

私の手元ではこうだった:

commonmarker 0.23.12
  requires Ruby >= 2.6, < 4.0

ffi 1.17.2
  requires Ruby >= 2.5, < 3.5.dev

google-protobuf 4.33.2
  requires Ruby >= 3.1, < 3.5.dev

html-proofer 3.19.4
  requires Ruby >= 2.6.0, < 4.0

nokogiri 1.18.10
  requires Ruby >= 3.1, < 3.5.dev

sqlite3 2.8.1
  requires Ruby >= 3.1, < 3.5.dev

ええっ,nokogiri 1.18.10 も sqlite3 2.8.1 も対応してないんか〜いっ。
(どちらも記事執筆時点 2025-12-26 の最新版)
と思ったが,どうもおかしい
それぞれの gemspec で,required_ruby_version は以下のとおり。

いずれも Ruby 3.1 以上となっていて,3.5.dev 未満,とは書いてない

実際,どちらの gem も Ruby 4.0.0 でインストールできたし,require できた。

うーむ?

Ruby 4.0 で本当にダメだったのは上記のリストでは

  • commonmarker 0.23.12
  • html-proofer 3.19.4

だけのようだ。これらは最新版ではなく古いバージョン。事情により入れてある。最新版は Ruby 4.0 も OK だ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?