2
2

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 の Ruby モジュールの定数

2
Last updated at Posted at 2025-12-21

Ruby 4.0 で,Ruby というモジュールが導入された。
ここにはいくつかの定数が定義されている。
これらがどんな名前と値を持っているのか,プレビュー版(4.0.0-preview3)で見てみた。

const_names = Ruby.constants
max_length = const_names.map{ _1.length }.max
format = "%#{ max_length }s %s"

const_names.each do |name|
  puts format % [name, Ruby.const_get(name).inspect]
end

結果:

    PATCHLEVEL -1
           Box Ruby::Box
      REVISION "cfa3e7cf75531a8c90b39bbd9b977f30315b12e7"
     COPYRIGHT "ruby - Copyright (C) 1993-2025 Yukihiro Matsumoto"
        ENGINE "ruby"
ENGINE_VERSION "4.0.0"
       VERSION "4.0.0"
  RELEASE_DATE "2025-12-18"
   DESCRIPTION "ruby 4.0.0preview3 (2025-12-18 master cfa3e7cf75) +PRISM [arm64-darwin25]"
      PLATFORM "arm64-darwin25"

Ruby のバージョンを得るのに,Ruby::VERSION という定数が使えるのか。
しかしこれの値はただの文字列で,従来からある RUBY_VERSION と同じ値だ(オブジェクトとしても同じ):

p Ruby::VERSION.equal?(RUBY_VERSION)
# => true

gem のバージョンを表すのには Gem::Version というクラスがあるが,Ruby のバージョンにはそういう専用のクラスが無いのだ(4.0 で導入されるのかと思ったけど,そんなことはなかった)。

昔からの素朴な疑問だけど,文字列でバージョンを表すと,2 桁になったとき大小比較で困るのでは?

p "4.0.2" < "4.0.10"
# => false

追記

Ruby 4.0.0 がリリースされたので改めてやってみた:

    PATCHLEVEL 0
           Box Ruby::Box
      REVISION "553f1675f3a9cece340b90f374a4245dccac2272"
     COPYRIGHT "ruby - Copyright (C) 1993-2025 Yukihiro Matsumoto"
        ENGINE "ruby"
ENGINE_VERSION "4.0.0"
       VERSION "4.0.0"
  RELEASE_DATE "2025-12-25"
   DESCRIPTION "ruby 4.0.0 (2025-12-25 revision 553f1675f3) +PRISM [arm64-darwin25]"
      PLATFORM "arm64-darwin25"

REVISION や RELEASE_DATE が変更になったのは当然。
DESCRIPTION は,preview3 が取れたのは当然として,( ) 内の日付が変わっただけでなく,master cfa3e7cf75revision 553f1675f3 になった。master は何を表していたんだろう?
興味深いのは PATCHLEVEL で,4.0.0 では 0 だがプレビュー版では -1 だった。なるほど。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?