install_generator_spec がデフォルト変更に追従し CI が復活

crmne/ruby_llm

インストールジェネレータのテストが、use_new_acts_as 設定のデフォルト変更に追従していなかったため発生していた CI の赤状態を解消しました。

背景

use_new_acts_as のデフォルトが true に変更されたことに伴い、インストールジェネレータのテンプレートから config.use_new_acts_as = true 行が削除されました。これにより、新規プロジェクトで生成される initializer には同設定が出力されません。c7e93e26 コミットでこの変更は正しく反映されましたが、テストコードは更新されていませんでした。

テストが旧行の存在を検証していたため、CI が赤色になるケースが発生しました。spec/ruby_llm/generators/install_generator_spec.rb では expect(initializer).to include('config.use_new_acts_as = true') が残っており、実際の生成物と不整合が生じていました。

この不整合は lib/ や spec/ を変更したコミットでのみ顕在化し、ドキュメントだけの変更で CI が緑のままになるという誤認を招いていました。結果として、実際に壊れたテストスイートが見過ごされるリスクがありました。

技術的な変更

テストコードをデフォルト変更に合わせて修正しました。install_generator_spec.rb にコメントを追記し、config.use_new_acts_as 行が生成されないことを not_to include で検証するように変更しています。

@@ -75,7 +75,8 @@
         expect(File.exist?('config/initializers/ruby_llm.rb')).to be true
         initializer = File.read('config/initializers/ruby_llm.rb')
         expect(initializer).to include('RubyLLM.configure')
-        expect(initializer).to include('config.use_new_acts_as = true')
+        # use_new_acts_as defaults to true, so the generator no longer emits it
+        expect(initializer).not_to include('config.use_new_acts_as')
         # Default Model class doesn't need explicit config
         expect(initializer).not_to include('config.model_registry_class')
       end

コメント行とアサーションの変更は、他の設定項目(config.model_registry_class)に対する not_to include パターンと統一され、テストの可読性と一貫性が向上しました。

設計判断

アップグレード用ジェネレータは従来通り行を出力する方針を維持**しています。upgrade_generators_spec.rb は変更せず、既存のアップグレードシナリオでは config.use_new_acts_as = true が明示的に生成されることを保証しています。

テストコードをデフォルトに合わせて更新したことは、CI の信頼性を保つ上で重要な設計判断です。実装ロジックに変更はなく、テストとドキュメントが現在の設定と整合していることを確認するだけのシンプルな修正となります。

まとめ

use_new_acts_as のデフォルトが true になる変更に対して、インストールジェネレータのテストを正しく更新したことで CI が再び緑化しました。テストと実装の整合性を保つことで、将来的なリグレッションを防止し、リリースプロセスの安全性が向上します。

記事メタデータ

Generated by:
gpt-oss-120b for DiffDaily
LLM Trace:
67cef3ef

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
gpt-oss-120b for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文、背景、技術的変更、設計判断(任意)、まとめの5つの要素がすべて揃っており、"総論→各論→結論" の構成が明確です。

カスタムMarkdown構文 ⚠ WARNING

シンタックスハイライト・GitHubリンク記法の正確性

コードブロックのシンタックスハイライトは問題ありませんが、PRリンクが `[PR #801](URL)` となっており、要求された `[#801](URL)` 形式と異なります。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

記事はエンジニア向けの技術的内容に留まり、初心者向けの過度な説明はありません。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクションが総論・各論・結論の段落構成になっており、トピックセンテンスで始まり、1段落1トピック、文数も適切です。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事中の diff コードブロックは提供された Diff と完全に一致しています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

使用されている技術用語は PR や Diff と一致しており、誤用はありません。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

変更の理由・内容・影響が PR の記述と整合しており、技術的に誤りはありません。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事の全ての主張は PR のタイトル、説明、Diff で裏付けられており、推測や捏造は見受けられません。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR 番号 #801、コミットハッシュ c7e93e26 などの数値・固有名詞は正確です。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事タイトルは PR の内容(デフォルト変更に伴うテスト修正)を適切に表現しています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

記事内に PR に無関係な外部知識(LTS、リリース日程等)は含まれていません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

時間表現の歪曲はなく、PR の記述と一致しています。