annotaterb v4.20.0 commit log 流し読み

annotaterb v4.20.0 commit logを流しで読みました 👀
読んだコミットは下記です。

Bump actions/checkout from 4 to 5 #257

actions/checkoutを V5 に update している dependabot による PR です。

refs: Bump actions/checkout from 4 to 5

chore: introduce switchable DB environment for specs #262

spec で使用している dummy app に、DB 設定をシングル/マルチ構成で切り替えられる仕組みを追加しました。
SINGLE_DB_TESTtrue の場合はシングル DB 環境、false または nil の場合はマルチ DB 環境として動作します。

この変更の背景として、これまでは「マルチ DB 環境でのみ動作する実装」を追加する際に、シングル DB 環境では動作しないことを確認・担保する手段が存在しませんでした。
そのため、今回この制御機構を導入されています。ここではデフォルトがマルチDBになっています。

refs: chore: introduce switchable DB environment for specs #262

refactor(test): Default to single-DB environment for tests #264

chore: introduce switchable DB environment for specs #262

上記の変更で、テスト環境の dummy app がデフォルトでマルチDB構成になるよう制御が追加されました。
しかしその結果、マルチDB環境でのみ実行される annotate 処理が、シングルDBを前提とする箇所にも影響してしまう問題が発生しました。

このため、本変更ではデフォルト設定を見直し、テスト環境はシングルDB構成を基本とし、必要な場合のみマルチDBを有効化 するよう制御を修正しています。

refs: refactor(test): Default to single-DB environment for tests by OdenTakashi · Pull Request #264 · drwl/annotaterb

Escape column comment newlines when using “rightmost” value for position_of_column_comment option #263

カラムに改行を含むコメントを追加していた場合、改行文字が正しくエスケープされず、出力時にコメントが途中で改行されてしまう問題がありました。

#  notes                                        :text(55)         not null     Notes.
May include things like notes.

このため、改行文字を \n としてエスケープする処理を追加し、コメントが1行内に正しく表示されるように修正しています。

refs: Escape column comment newlines when using “rightmost” value for position_of_column_comment option #263

Honor –frozen option in routes #265

--frozen オプション使用時に annotation に変更がある場合は例外を発生させるのが正しい挙動ですが、これまで例外が発生していなかったため、正しく raise されるように修正しました。

refs: Honor --frozen option in routes #265

Update README.md #268

README の typo 修正です。

refs: Update README.md #268

fix: resolve YAML syntax error in update_config generator #269

rails g annotate_rb:update_config を実行すると、現在の設定とデフォルト設定の差分を検知し、必要なデフォルト値を .annotaterb.yml に追記するジェネレーターがあります。

rails g annotate_rb:update_config

しかし、差分が存在しない場合でも空の {} が YAML ファイルに追記されてしまう問題がありました。
そのため、差分がない場合は早期に return して追記を行わないよう修正しています。

refs: fix: resolve YAML syntax error in update_config generator #269

Bump github/codeql-action from 3 to 4 #277

CodeQL Action を V4 へと update しています。

refs: Bump github/codeql-action from 3 to 4 #277

fix: position-of-column-comment option #275

position-of-column-comments オプションが内部的に position-of-column-comment として扱われていたため、指定しても正しく動作していませんでした。
この問題を修正し、オプションが正しく position-of-column-comment として処理されるようにしています。

refs: fix: position-of-column-comment option #275

feat: Add database name to annotations in multi-DB environments #272

マルチデータベース環境では、スキーマコメントだけを見ても「モデルのテーブルがどのデータベースに属しているのか」が分かりづらく、開発者がテーブルが存在しないと勘違いすることがありました。
この問題を解決するために、スキーマ情報ブロックにデータベース名を表示する行を追加しています。

具体的には、マルチデータベース環境では以下のように Database name: 行が表示されます。

# == Schema Information
#
# Table name: tasks
# Database name: second_database
#
# ...

一方、シングルデータベース環境では冗長になるため、この行は表示されません。

refs: feat: Add database name to annotations in multi-DB environments #272