今週はちょっと遅れて Matz が参戦。nodejs ってシングルスレッドなのに、なんで Python や Ruby みたいにコアを使い切るような何か、という要望がないの?とかそういう話をしていた。
あとは Ruby にやっぱほしいのは LINQ だよ LINQ とか。gh コマンドを覚えるのすらだるい、git だけでブランチ作って pull request をシュシュっと出すというのを何も考えないでできるようにしたいなんだかんだ、とか。本当にみんな怠惰である。
韓国、ちょっと興味が出てきたので積読していたコクヨのフィールドワークをまとめた YOKOKU の韓国編を読んだ。
勝ち敗けとは、と見ると過酷な受験戦争、都市と農村という感じの内容で、ソウルの良い部分だけをみてると気がつかないような社会問題やそれに取り組む人の話は面白かった。d Design Travel でも知った済州島なども行けるといいのだけど、東京から乗り継ぎしてまで、って感じではないのだよなあ...。
12月に入ったので RubyGems/Bundler の 4.0.0 stable を出すために細々した不具合を直しまくっている。
その中で bundle コマンドを実行するとバージョンが 2.7.2 と出るのに、bundle i を実行すると 4.0.0 相当の挙動になるという意味不明な現象が起きていたので直した。
https://github.com/ruby/rubygems/pull/9106
❯ bundle -v # This is without lockfile
4.0.0.beta1
# with lockfile
❯ rg -A1 "BUNDLED WITH" Gemfile.lock
594:BUNDLED WITH
595- 2.7.2
❯ bundle -v
Bundler version 2.7.2
❯ bundle i # This behavior is 4.0.0.beta1, not 2.7.2
[DEPRECATED] Platform :mingw, :x64_mingw, :mswin is deprecated. Please use platform :windows instead.
(snip...)
上のように書いてある通りなのだが、RubyGems には幾つかのルールに従って Bundler のバージョンを拾ってきて、activate を切り替えるという機能があり、それによって bundle コマンドを実行した瞬間だけ 2.7.2 などのバージョンを lockfile から拾って activate を行い、その先は self_manager.rb のルールに従って bundler を実行し直す、という摩訶不思議なことが起きていた。
というのも、自分は bundler そのものを開発する立場なのでリリース済みのバージョンを使われるとだるいことが多く、そのためにバージョン指定に system という裏技ワードを入れて、自動検知を無視する指定を使っているのだが、それが RubyGems の方で対応してなかった、というのが原因だったので対応するようにしてしまった。
これでいかなる状況においても 4.0.0 や開発バージョンを使うことができるので便利。