トップ «前の日記(2023/07/10 (月) ) 最新 次の日記(2023/07/12 (水) )» 編集 RSS feed

HsbtDiary


2023/07/11 (火) [長年日記]

Ruby 3.3 向けに bundled gems 化を進めているの続き

Ruby に添付されているライブラリを gem にして、リポジトリも完全に分離してリリースサイクルなどを独立させようという取り組みの bundled gems 化を Ruby 3.3 でも進めている。

昨年は net-smtp などを分離した影響で mail gem の依存関係が解決できずに、rails の方で net-* を依存に入れるとか、各ユーザーが個別に Gemfilenet-* を追加しないと Rails アプリケーションが起動すらしない、という状況になったので今年はもうちょい何かを考えるようにしている。

https://bugs.ruby-lang.org/issues/19351

今のところ思いついた案として、Ruby のパッケージとして bundled gems にしたもののうち、特定の gem とバージョンは Gemfile に追加しなくても require をすることができる、というとんでもない抜け穴機能を作ってみた。この機能を使えば、将来的にただの gem となった csv などが bundle exec の実行時にも require できることになる。便利。

ただ将来的にはユーザーなり mail みたいなライブラリの作者が Gemfile や gemspec に正しく依存関係を指定してほしいので、この抜け穴機能だけだと指定されることはないので、どう警告を出してどういうアクションを取らせるか、にちょっと悩んでいる。

https://github.com/rubygems/rubygems/pull/6811

Deivid, nobu, mame さんと議論して、RubyGems の kernel_require.rb や Ruby 本体の gem_prelude.rb などを拡張すれば、require してるけど $LOAD_PATH にないというライブラリの警告はできるのでは、となったので、ユーザーに Gemfile に追加しろ、という警告をする分には良さそうだった。ただ、この方法でも、ライブラリの方で依存関係が足りないよ、というときにはユーザーに取ってはどうにもできないので、なんかいい方法はあるかなあと悩み中。ファイルも明示して

  • 自分のコードだったらGemfileに追加してくれ
  • ライブラリのコードだったら gemspec に追加するように作者に言ってくれ、対応されるまでは Gemfile に追加してくれ

というあたりがマシな方法かなあ。うーん。難しい。

Ruby office hour

今週も Zoom で開催。以下のような事を話した。

* パーサーの話
  * https://techracho.bpsinc.jp/hachi8833/2023_07_10/131808
  * Ruby 3.3 で何をどこまでやる?のおさらい
* ARM の CI
  * https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html

ここ最近毎回パーサーの話をしているような気がしなくもない。

https://hackmd.io/@ko1/Sks9RfAg_

誰でも参加できるので興味がある人はお越しください。

Ruby 開発者会議の準備会

7/13 に 7月の Ruby 開発者会議があるので、ディスカッションする内容を事前に眺めて何が論点なのかを考える会に参加してきた。今回から自分の Zoom アカウントをホストにして mame さんから引き継ぎになった。

https://bugs.ruby-lang.org/issues/19722

先に書いた bundled gems 化の話をしたり、それ以外のあれこれを数時間話して終わり。がんばろう。