トップ «前の日記(2024/02/15 (木) ) 最新 次の日記(2024/02/17 (土) )» 編集 RSS feed

HsbtDiary


2024/02/16 (金) [長年日記]

今年のおチョコ様

妻が帰宅したので、今年食べようと買っていたパトリック・ロジェなどのチョコを食べた。以前は百貨店などのチョコイベントに行ったりもしていたけど、足も重くなって通販で予約して食べればいいとなってしまった。堕落。

bundled gems のテストで default gems をロードするようにした

タイトルだけだと何を書いているのかよくわからないのだが、bundled gems をテストするために ruby/ruby では以下のような仕組みを取っている

  • bundled gems 同士で依存があるものは bundled gems を使う
  • bundled gems が ruby/ruby にないライブラリを使う必要があるときは gem install でインストールする
  • bundled gems が default gems に runtime dependency として依存しているときも gem install でインストールする、単に reuqire しているときは default gems を使う。

最後がなかなか難しい問題で、bundled gems のテストの依存関係を解決するために、ruby/ruby のリポジトリの下に .bundle というフォルダに仮想的に GEM_HOMEGEM_PATH に合わせる形でライブラリを配置することで RubyGems を扱えるようにしたところ、今度は runtime dependency として default gems が指定されている時に ruby/ruby のリポジトリのものを参照することができない、という状態になってしまった。辛い。

リポジトリの中にライブラリは存在するのに使えないので gem install するというのは本末転倒というか単純に無駄なので少し工夫することでなんとかしてみた。

https://github.com/ruby/ruby/pull/9992

テストに限って、gemspec を書き換えることで runtime dependency を消してしまって、ruby/ruby のリポジトリから呼び出すようにするという変更を行うことで無事外部から持ってくるライブラリを減らすことができた。この辺ちょっと複雑すぎるからもうちょい簡素化したい...。