🗂

【Ruby 3.4 Advent Calender】【23日目】

2024/12/23に公開

Ruby 3.4 Advent Calender 23日目の記事です。

これはなに

今年 2024年12月25日にリリースされる予定の Ruby 3.4 の新機能や変更点などを1つずつ紹介していく Advent Calender になります。
基本的には NEWS に載っている機能を紹介すると思うんですがここにない機能についても書くかもしれません。
また、記事を書いてる時点ではまだ Ruby 3.4 はリリースされる前なので Ruby 3.4 がリリースされた時点で機能が変わっている 可能性があるかもしれないので注意してください。
記事のまとめは ここを参照 してください。

いくつかの gem が default gem から bundle gem に移動した

Ruby 3.4 では以下の gem が default gem から bundle gem に移動しました。

  • mutex_m 0.3.0
  • getoptlong 0.2.1
  • base64 0.2.0
  • bigdecimal 3.1.8
  • observer 0.1.2
  • abbrev 0.1.2
  • resolv-replace 0.1.1
  • rinda 0.2.0
  • drb 2.2.1
  • nkf 0.2.0
  • syslog 0.2.0
  • csv 3.3.1

これにより上記の gem を bundler 経由で利用する場合は Gemfile に追加しておかないと require できなくなるので注意してください。

$ cat test.rb
require "csv"

# Ruby 3.3 では警告はでるが利用できていた
$ RBENV_VERSION=3.3.6 bundle exec ruby test.rb
test.rb:1: warning: csv was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.4.0.
You can add csv to your Gemfile or gemspec to silence this warning.

# Ruby 3.4 からはエラーになる
$ RBENV_VERSION=3.4-dev bundle exec ruby test.rb
test.rb:1: warning: csv was loaded from the standard library, but is not part of the default gems starting from Ruby 3.4.0.
You can add csv to your Gemfile or gemspec to silence this warning.
/home/hoge/.rbenv/versions/3.4-dev/lib/ruby/3.4.0+1/bundled_gems.rb:81:in 'Kernel.require': cannot load such file -- csv (LoadError)
        from /home/hoge/.rbenv/versions/3.4-dev/lib/ruby/3.4.0+1/bundled_gems.rb:81:in 'block (2 levels) in Kernel#replace_require'
        from test.rb:1:in '<main>'

また bundler を経由しない場合は依然として require して利用できます。

GitHubで編集を提案

Discussion