大阪Ruby会議03 に登壇しました。大阪開催の地域Ruby会議での登壇は、もしかすると2015年の関西Ruby会議06のLT以来8年ぶりかも?
今回はまつもとさんの GVL の話と、同僚のこばじゅんのパーサーの話とそれに対する Lrama 作者の金子さんのフィードバックなどなどを楽しみに参加していました。実際想像以上にいろいろと楽しめました。オフラインイベントありがとうございました!
私の当日の発表スライドは以下です。会場が4:3のプロジェクタだったので結果的に16:9と4:3の2バージョンを作っていて、Speaker Deckに公開しているのは16:9バージョン。
ざっくり話すと Ruby のユーザー視点での、1.8 から 3.3 (開発版) までの感想や出来事といったもの。発表後に金子さんから「スライド2枚戻して」と言ってもらったのは最高のご褒美でした。
イベント全体のテーマが「Rubyで笑おう」だったところ、笑い要素とか難しいなあと思いながら作っていたものの、結果的に結構笑ってもらえたのではと思います。MINASWANありがとう。大阪Ruby会議03ありがとうという気持ち。
この記事では、onk からもらった以下の感想への Ruby 3.3 (開発版) 向けの話を補足で書いておきます。
警告の倒し方を知っている => 各 gem にフィードバックして回るのが OSS にちゃんと関わるきっかけ、いい話だなー。そういう入り口をもっとサジェストしたい #osrb03
— Takafumi ONAKA (@onk) 2023年9月9日
Ruby では bundled gem 化というのが進められていて、この記事を書いている時点での Ruby 3.3.0dev でも、以下のように base64, bigdecimal などなどが Ruby 3.4 での bundled gem 化に向けて Ruby 3.3 で警告されています。
この変更に対するユーザーとしての遭遇は、Ruby 3.3.0dev で実行した時に以下のような警告が出るというものです。警告元のパスが gem のパスになっている場合は、その警告元 gem へのプルリクエストの機会になっているかもしれません。
/Users/koic/.rbenv/versions/3.3.0-dev/lib/ruby/gems/3.3.0+0/bundler/gems/rails-a8871e6829e5/activesupport/lib/active_support/core_ext/object/json.rb:5: warning: bigdecimal will be not part of the default gems since Ruby 3.4.0. Add bigdecimal to your Gemfile. Also contact author of to add bigdecimal into its gemspec.
この警告を gem 側として解決するプルリクエストの例は以下になります。
- https://github.com/rails/rails/pull/48907
- https://github.com/rails/rails/pull/49039 ... こちらについては yahoda さんがフォローアップパッチを送ってくれています https://github.com/rails/rails/pull/49152
実際のところ gemspec にランタイム依存を足す (あるいはテストで使っているだけの場合は Gemfile への依存追加を足す) だけというよりは、対象 gem が Ruby いくつかまでサポートしていて、bundled gem に向けて警告される gem がバージョンによって持っている非互換に当たらないかどうかも見ていくことになります。
例えば、以下は私の方法だと考慮が不十分で、Jeremy Evans がより良い解法で直してくれています。
こんな感じで、現在進行形の bundled gem に向けた警告は OSS エコシステムに参入する機会にもなると思いますので、Ruby 3.3.0dev を使って警告を見かけたらパッチを送ってみましょう。よくわからんという方は、勤務先で毎月開催している Rails/OSS パッチ会などで聞いてください。次回は 2023年9月28日(木) の開催です。
それでは、ハックを続けましょう!