Ruby 4.0対応とテスト環境の整備

rails/rails-html-sanitizer

rails-html-sanitizerがRuby 4.0のサポートを追加し、テスト環境の構成を改善しました。#213 では、CIマトリクスへのRuby 4.0の追加とともに、テストヘルパーの導入による環境情報の一元管理を実現しています。

背景

将来のRuby 4.0をサポートするため、rails-html-sanitizerでもこの新バージョンへの対応準備が必要になりました。また、既存のテストファイルでは require 文が test/sanitizer_test.rbtest/scrubbers_test.rbtest/rails_api_test.rb の3つのテストファイルすべてに分散しており、保守性に課題がありました。また、test/sanitizer_test.rb では環境情報の出力も行われていました。

技術的な変更

CIマトリクスとテスト環境の構成が以下のように変更されました。

CIマトリクスの更新

.github/workflows/ci.yml のテストマトリクスにRuby 4.0が追加され、RuboCopとNokogiriビルドの実行環境もRuby 4.0に更新されました:

matrix:
  ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4", "4.0", "ruby-head", "truffleruby-head", "jruby-9.4", "jruby-10.0", "jruby-head"]

Ruby 2.7から4.0まで、さらに各処理系のheadバージョンを含む幅広いバージョンでテストが実行されます。

テストヘルパーの導入

新規作成された test/test_helper.rb に、すべてのテストファイルで共通する初期化処理を集約しました:

require "minitest/autorun"
require "rails-html-sanitizer"

puts "nokogiri version info: #{Nokogiri::VERSION_INFO}"
puts "html5 support: #{Rails::HTML::Sanitizer.html5_support?}"

各テストファイルでは、個別の require 文を削除し、test_helperの読み込みに統一されました:

require_relative "test_helper"

Minitestバージョン制約

Gemfile にMinitestのバージョン制約 < 6 が追加されました。これにより、Ruby 4.0環境でもテストフレームワークの互換性が保証されます。

設計判断

test_helper.rbの導入 により、テスト環境の初期化ロジックを一元管理する方針が採用されました。

この変更により、Nokogiriのバージョン情報やHTML5サポート状況の確認が test/sanitizer_test.rb から削除され、test_helper.rbでの一度の出力に集約されています。テスト実行時の環境情報が重複して表示されることがなくなり、デバッグ時の可読性も向上しました。

また、Ruby 4.0を標準のテストマトリクスに含めることで、将来的なRubyバージョンアップへの対応を早期に検証できる体制が整いました。RuboCopとNokogiriビルドの実行環境も最新バージョンに更新することで、開発ツールチェーン全体でRuby 4.0との互換性を確認しています。

まとめ

本PRは、Ruby 4.0サポートの追加とテスト環境の構成改善を同時に実現した変更です。CIマトリクスの拡張により新バージョンでの動作保証を得ると同時に、test_helperの導入によってテストコードの保守性を向上させています。

記事メタデータ

Generated by:
Claude Sonnet 4.5 for DiffDaily

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

品質レビュー結果

Review Status:
リトライ後承認
Review Count:
3回 (改善を経て承認)
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

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

「総論→各論→結論」の構成が明確であり、リード文、背景、技術詳細、設計判断、まとめの各要素が適切に配置されています。

カスタムMarkdown構文 ✓ PASS

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

ファイル名付きシンタックスハイライトやGitHubのPRリンク記法が、ガイドラインに沿って正しく使用されています。

対象読者への適合性 ✓ PASS

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

内容はCI/CDやテスト環境に関するもので、専門知識を持つエンジニアという対象読者に適切です。

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

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

各セクション・各パラグラフが「総論→各論」の構成になっており、トピックセンテンスが明確で、可読性の高い文章構造になっています。

Diff内容との照合 ✓ PASS

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

記事で引用されているコードは、提供されたDiffの内容と正確に一致しており、変更の要点を的確に示しています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「CIマトリクス」「テストヘルパー」「Minitest」などの技術用語が、文脈に沿って正確に使用されています。

説明の技術的正確性 ✓ PASS

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

Ruby 4.0対応、テストヘルパー導入、Minitestのバージョン制約など、すべての技術的説明がDiffの内容と整合しており、論理的で正確です。

事実の突合 ✓ PASS

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

記事内のすべての主張(Ruby 4.0対応、テスト環境の改善など)が、PRのタイトル、Description、Diffの内容によって裏付けられています。

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

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

PR番号(#213)、Rubyのバージョン番号、Minitestのバージョン制約(< 6)など、すべての数値と固有名詞が正確です。

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

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

記事のタイトル「Ruby 4.0対応とテスト環境の整備」は、PRの主題(Ruby 4.0サポート追加とテストヘルパー導入)を的確に要約しています。

外部知識の正確性 ✓ PASS

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

記事の内容はすべてPR情報とDiffに基づいており、サポート状況やリリース日程といったPR外の知識の捏造はありません。

時間表現の正確性 ✓ PASS

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

「将来のRuby 4.0」といった時間表現がPRの文脈と一致しており、時間的な歪曲はありません。