くりにっき

フルスタックキュアエンジニアです

個人gemを軒並みRuby 3.1対応した

毎年やる作業ということもあり、個人gem全部のGitHub Actionsの設定を修正してPRを投げるツール自体は作ってるのでそんなに大変ではなかったです。

ツールについては詳しくは https://speakerdeck.com/sue445/ruby-on-ci-number-ginzarails?slide=79 を読んでください。

例年だとPRを一斉に作ってビルドが通ったらヨシッ!って感じでマージするだけの定形作業なんですが、今年はいくつかハマったのでピックアップ

Psych 4.0の非互換で動かなくなった

詳細は下記を参照

techlife.cookpad.com

Psych.load のデフォルトが safe_load になった関係でYAMLファイルを読み込んでるところで

Psych::DisallowedClass:
  Tried to load unspecified class: Date

のようなエラーが出るようになったので対応しました。

https://github.com/sue445/rubicure/runs/4672373245?check_suite_focus=true

で、permitted_classes を使おうとしたところ permitted_classes はPsych 3.1.0以降にしか存在せず、かつPsych 3.1.0以降を含んでるのがRuby 2.6.0以降だったので*1、いくつかのgemでRuby 2.6.0未満もサポートをきってメジャーバージョンアップしました。

リリースして気づいたけどgemspec側でPsych 3.1.0以降を指定してたら古いRubyのバージョンのサポートを切らなくてよかったかもしれない。(Ruby 2.5は既にEOLなのでサポートきっても支障はないんだけど)

Ruby 3.1.0 + Rails(activerecord) 7.0が現時点では動かない

詳しくは https://gist.github.com/yahonda/2776d8d7b6ea7045359f38c10449937b を参照。

そのうち7.0.1が出るだろうと思ってactiverecordを使ってるgemは gem "activerecord", "~> 7.0.1" をつけてDraft PRで寝かせておくことにしました

github.com

github.com

github.com

PRを作るとCircleCIからBANされた

gemが軒並みRuby 3.1対応したのでアプリもやるかーと思ってPRを作った瞬間CircleCIからBANされて厳しい顔になってます。

このPRの後にもいくつかPRを作ったけど同様にBANされたので諦めてサポートの対応待ち。

2022/1/1 16:00追記

CircleCIのサポートチケット作った数時間後に対応されてた。(自動検知システムでブロックされてたらしい)

1プロジェクトだけどうしてもビルドできなかったのでまだ完全解決ではないんだけど正月に対応してもらえるとは思わなかったので神対応すぎる。

2021/1/6 18:00追記

書くの忘れてたけど残り1つも1/3にBAN解除されていました。